{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"TrueFoundry Docs","description":"TrueFoundry documentation — enterprise-grade AI Gateway combining LLM, MCP, and Agent Gateways to connect, monitor, and govern agentic AI applications across providers from a unified control plane.","colors":{"primary":"#4f46e5","light":"#4f46e5","dark":"#4f46e5"},"logo":{"light":"https://mintcdn.com/truefoundry/e2uUimEwX30qkWxc/logo/light.svg?fit=max\u0026auto=format\u0026n=e2uUimEwX30qkWxc\u0026q=85\u0026s=6068d83664aeda0239bec2422657dd20","dark":"https://mintcdn.com/truefoundry/e2uUimEwX30qkWxc/logo/dark.svg?fit=max\u0026auto=format\u0026n=e2uUimEwX30qkWxc\u0026q=85\u0026s=c1cb26554a546d84500b40f7057bece8"},"favicon":"https://mintcdn.com/truefoundry/6bbtTt95c1iCcyph/favicon.svg?fit=max\u0026auto=format\u0026n=6bbtTt95c1iCcyph\u0026q=85\u0026s=f55bde34214b38034126d05b08ea16c7","appearance":{"default":"light"},"background":{"decoration":"grid"},"navbar":{"links":[{"href":"https://www.truefoundry.com/book-demo","label":"Book Demo"},{"href":"https://www.truefoundry.com/blog","label":"Blog"}],"primary":{"type":"button","label":"Sign Up","href":"https://www.truefoundry.com/register"}},"footer":{"socials":{"x":"https://twitter.com/truefoundry","linkedin":"https://in.linkedin.com/company/truefoundry"}},"seo":{"metatags":{"og:type":"website","og:site_name":"TrueFoundry Docs","og:image":"https://assets.production.truefoundry.com/logo.svg","og:description":"TrueFoundry offers an enterprise-grade AI Gateway combining LLM, MCP, and Agent Gateways—empowering businesses to connect, monitor, and govern agentic AI applications across providers from a unified control plane.","description":"TrueFoundry offers an enterprise-grade AI Gateway combining LLM, MCP, and Agent Gateways—empowering businesses to connect, monitor, and govern agentic AI applications across providers from a unified control plane."}},"icons":{"library":"fontawesome"},"styling":{"codeblocks":"dark","latex":true},"contextual":{"options":["copy","view","chatgpt","claude","mcp","cursor","vscode"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"truefoundry","hasAudioNarration":false,"actualSubdomain":"truefoundry","customDomains":["www.truefoundry.com"],"gitSource":{"type":"github","owner":"truefoundry","repo":"docs-mintlify","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aec6dc2252b547dce080d65","collectionId":"7db789a6-79df-4843-975a-05373c794490","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aec6dc2252b547dce080d65"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6aede15d0b5cc06928d33419","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"AI Gateway","count":233},{"language":"default","tag":"API Reference","count":202},{"language":"default","tag":"Platform","count":198},{"language":"default","tag":"Integrations","count":132},{"language":"default","tag":"AI Deployment","count":108},{"language":"default","tag":"LLM Gateway","count":100},{"language":"default","tag":"Integrate Models","count":50},{"language":"default","tag":"Observability","count":47},{"language":"default","tag":"Guardrails and Security","count":46},{"language":"default","tag":"Installation Guides","count":44}]},"assistantConfig":{"enableAskAiButton":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@truefoundry.com","showHelpButton":true}},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".line-highlight{background:rgb(var(--primary-light)/.7)!important}.tfy-cat-anchor{scroll-margin-top:6rem;margin-block:1.75rem}.line-highlight:before{background:rgb(var(--primary-light)/.7)!important}.line-highlight:after{background:rgb(var(--primary-light)/.7)!important}"}],"page":{"pagePath":"docs/api-reference/apply/create-or-update-a-resource-from-a-manifest","slug":"/docs/api-reference/apply/create-or-update-a-resource-from-a-manifest","pageMetadata":{"title":"Create or update a resource from a manifest","description":"Apply a manifest to create or update a resource.","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/apply","href":"/docs/api-reference/apply/create-or-update-a-resource-from-a-manifest","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Apply a manifest to create or update a resource.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Create or update a resource from a manifest","description":"Apply a manifest to create or update a resource.","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/apply","href":"/docs/api-reference/apply/create-or-update-a-resource-from-a-manifest","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/truefoundry/9e0085f7ed271180/scripts.js"],"openApiReferenceData":{"operation":{"description":"Apply a manifest to create or update a resource.","operationId":"TfyApply.apply","parameters":[],"requestBody":"be974b85-c2c9-469a-b696-c8cbbc8cd24d","responses":{"200":"3b0c68ca-f131-4300-8ea3-be6d38c17898"},"security":["0eb0f533-96a8-4761-b4bf-8e81a38aba0f"],"summary":"Create or update a resource from a manifest","tags":["Apply","public"],"x-fern-sdk-method-name":"apply","x-tfy-mcp-schema-overrides":{"input":{"dryRun":null,"manifest":{"type":"object","additionalProperties":true,"description":"Resource manifest object. The `type` field is the discriminator. Call get_manifest_json_schema with the desired type to get the full manifest schema before constructing this object."}},"output":{"existingManifest":{"type":"object","additionalProperties":true,"description":"The manifest the resource had before this apply. Absent when the resource was created."},"data":{"type":"object","additionalProperties":true,"description":"The created or updated resource. Its shape follows the manifest type that was applied."}}},"x-tfy-mcp-tool-annotations":{"name":"apply_manifest","annotations":{"destructiveHint":true}},"method":"put","type":"path","servers":["420b2084-a24a-46fb-8cda-d10944e1e5a2"],"path":"/api/svc/v1/apply","baseUrlOptions":["https://{controlPlaneURL}"],"title":"Create or update a resource from a manifest","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"manifest":{"oneOf":[{"type":"object","title":"MLRepoManifest","description":"Manifest of the resource to be created or updated","required":["type","name","storage_integration_fqn"],"x-fern-type-name":"MLRepoManifest","properties":{"type":{"description":"+value=ml-repo","type":"string","enum":["ml-repo"],"default":"ml-repo","isRequired":true,"uniqueKey":"manifest.oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the ML Repo.","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,98}[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.0.name","typeLabel":"string"},"storage_integration_fqn":{"description":"Storage Integration to store artifacts and models. A storage integration represents a connected blob storage like AWS S3 / Azure Blob Storage / Google Cloud Storage.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.0.storage_integration_fqn","typeLabel":"string"},"description":{"description":"Description for the ML Repo.","type":"string","pattern":"^.{0,500}$","uniqueKey":"manifest.oneOf.0.description","typeLabel":"string"},"collaborators":{"description":"Users and Teams that have access to MLRepo","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.0.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.0.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.0.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.0.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.0.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.0.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.0","typeLabel":"MLRepoManifest · object"},{"type":"object","title":"ArtifactManifest","description":"Manifest of the resource to be created or updated","required":["type","source","step","metadata"],"x-fern-type-name":"ArtifactManifest","properties":{"metadata":{"description":"Key value metadata. Should be valid JSON. For e.g. `{\"business-unit\": \"sales\", \"quality\": \"good\", \"rating\": 4.5}`","type":"object","isRequired":true,"uniqueKey":"manifest.oneOf.1.metadata","typeLabel":"object"},"type":{"description":"Artifact Version","type":"string","enum":["artifact-version"],"default":"artifact-version","isRequired":true,"uniqueKey":"manifest.oneOf.1.type","typeLabel":"enum\u003cstring>"},"source":{"oneOf":[{"type":"object","title":"TrueFoundryManagedSource","description":"TrueFoundry Managed Source","required":["type"],"x-fern-type-name":"TrueFoundryManagedSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["truefoundry"],"default":"truefoundry","isRequired":true,"uniqueKey":"manifest.oneOf.1.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"uri":{"description":"URI","type":"string","pattern":"^(s3|gs|wasbs)://.*","uniqueKey":"manifest.oneOf.1.source.oneOf.0.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.1.source.oneOf.0","typeLabel":"TrueFoundryManagedSource · object"},{"type":"object","title":"ExternalBlobStorageSource","description":"External Blob Storage Source","required":["type","uri"],"x-fern-type-name":"ExternalBlobStorageSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["external"],"default":"external","isRequired":true,"uniqueKey":"manifest.oneOf.1.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uri":{"description":"URI referencing a path in the blob storage bucket linked to the MLRepo","type":"string","pattern":"^(s3|gs|wasbs)://.*","isRequired":true,"uniqueKey":"manifest.oneOf.1.source.oneOf.1.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.1.source.oneOf.1","typeLabel":"ExternalBlobStorageSource · object"},{"type":"object","title":"LocalArtifactSource","description":"Artifact Source","required":["type","paths"],"x-fern-type-name":"LocalArtifactSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"manifest.oneOf.1.source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"paths":{"description":"Array of ArtifactPath objects representing the source and destination paths","type":"array","items":{"type":"object","required":["src"],"properties":{"src":{"description":"Local file or folder path","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.1.source.oneOf.2.paths.items.[INDEX].src","typeLabel":"string"},"dest":{"description":"Relative path where the file or folder will be uploaded to in the artifact","type":"string","uniqueKey":"manifest.oneOf.1.source.oneOf.2.paths.items.[INDEX].dest","typeLabel":"string"}},"title":"ArtifactPath","x-fern-type-name":"ArtifactPath","uniqueKey":"manifest.oneOf.1.source.oneOf.2.paths.items.[INDEX]","typeLabel":"ArtifactPath · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.1.source.oneOf.2.paths","typeLabel":"ArtifactPath · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.1.source.oneOf.2","typeLabel":"LocalArtifactSource · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.1.source","typeLabel":"TrueFoundryManagedSource · object | ExternalBlobStorageSource · object | LocalArtifactSource · object"},"step":{"description":"Step/Epoch number in an iterative training loop the artifact version was created. Generally useful when logging a model version from a MLRepo Run","type":"integer","minimum":0,"default":0,"isRequired":true,"uniqueKey":"manifest.oneOf.1.step","typeLabel":"integer"},"name":{"description":"Name of the entity","type":"string","maxLength":256,"pattern":"^[A-Za-z0-9_\\-]+$","uniqueKey":"manifest.oneOf.1.name","typeLabel":"string"},"ml_repo":{"description":"Name of the ML Repo","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,98}[a-zA-Z0-9]$","uniqueKey":"manifest.oneOf.1.ml_repo","typeLabel":"string"},"version":{"description":"Version of the entity","type":"integer","minimum":1,"uniqueKey":"manifest.oneOf.1.version","typeLabel":"integer"},"description":{"oneOf":[{"description":"Description","type":"string","maxLength":512,"uniqueKey":"manifest.oneOf.1.description.oneOf.0","typeLabel":"string"},{"description":"Description","type":"null","maxLength":512,"uniqueKey":"manifest.oneOf.1.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.1.description","typeLabel":"string | null"},"version_alias":{"description":"Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)","type":"string","maxLength":128,"pattern":"^v[a-zA-Z0-9.-]*([a-zA-Z0-9]+)$","uniqueKey":"manifest.oneOf.1.version_alias","typeLabel":"string"},"run_id":{"description":"ID of the MLRepo Run that generated the artifact version","type":"string","uniqueKey":"manifest.oneOf.1.run_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.1","typeLabel":"ArtifactManifest · object"},{"type":"object","title":"ModelManifest","description":"Manifest of the resource to be created or updated","required":["type","source","step","metadata"],"x-fern-type-name":"ModelManifest","properties":{"metadata":{"description":"Key value metadata. Should be valid JSON. For e.g. `{\"business-unit\": \"sales\", \"quality\": \"good\", \"rating\": 4.5}`","type":"object","isRequired":true,"uniqueKey":"manifest.oneOf.2.metadata","typeLabel":"object"},"type":{"description":"Model Version","type":"string","enum":["model-version"],"default":"model-version","isRequired":true,"uniqueKey":"manifest.oneOf.2.type","typeLabel":"enum\u003cstring>"},"source":{"oneOf":[{"type":"object","title":"TrueFoundryManagedSource","description":"TrueFoundry Managed Source","required":["type"],"x-fern-type-name":"TrueFoundryManagedSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["truefoundry"],"default":"truefoundry","isRequired":true,"uniqueKey":"manifest.oneOf.2.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"uri":{"description":"URI","type":"string","pattern":"^(s3|gs|wasbs)://.*","uniqueKey":"manifest.oneOf.2.source.oneOf.0.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.2.source.oneOf.0","typeLabel":"TrueFoundryManagedSource · object"},{"type":"object","title":"ExternalBlobStorageSource","description":"External Blob Storage Source","required":["type","uri"],"x-fern-type-name":"ExternalBlobStorageSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["external"],"default":"external","isRequired":true,"uniqueKey":"manifest.oneOf.2.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uri":{"description":"URI referencing a path in the blob storage bucket linked to the MLRepo","type":"string","pattern":"^(s3|gs|wasbs)://.*","isRequired":true,"uniqueKey":"manifest.oneOf.2.source.oneOf.1.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.2.source.oneOf.1","typeLabel":"ExternalBlobStorageSource · object"},{"type":"object","title":"LocalModelSource","description":"Model Source","required":["type","file_or_folder"],"x-fern-type-name":"LocalModelSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"manifest.oneOf.2.source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"file_or_folder":{"description":"Path to the model file or folder","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.2.source.oneOf.2.file_or_folder","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.2.source.oneOf.2","typeLabel":"LocalModelSource · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.2.source","typeLabel":"TrueFoundryManagedSource · object | ExternalBlobStorageSource · object | LocalModelSource · object"},"step":{"description":"Step/Epoch number in an iterative training loop the model version was created. Generally useful when logging a model version from a MLRepo Run","type":"integer","minimum":0,"default":0,"isRequired":true,"uniqueKey":"manifest.oneOf.2.step","typeLabel":"integer"},"name":{"description":"Name of the entity","type":"string","maxLength":256,"pattern":"^[A-Za-z0-9_\\-]+$","uniqueKey":"manifest.oneOf.2.name","typeLabel":"string"},"ml_repo":{"description":"Name of the ML Repo","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,98}[a-zA-Z0-9]$","uniqueKey":"manifest.oneOf.2.ml_repo","typeLabel":"string"},"version":{"description":"Version of the entity","type":"integer","minimum":1,"uniqueKey":"manifest.oneOf.2.version","typeLabel":"integer"},"description":{"oneOf":[{"description":"Description","type":"string","maxLength":512,"uniqueKey":"manifest.oneOf.2.description.oneOf.0","typeLabel":"string"},{"description":"Description","type":"null","maxLength":512,"uniqueKey":"manifest.oneOf.2.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.2.description","typeLabel":"string | null"},"version_alias":{"description":"Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)","type":"string","maxLength":128,"pattern":"^v[a-zA-Z0-9.-]*([a-zA-Z0-9]+)$","uniqueKey":"manifest.oneOf.2.version_alias","typeLabel":"string"},"framework":{"oneOf":[{"type":"object","title":"TransformersFramework","description":"Transformers","required":["type"],"x-fern-type-name":"TransformersFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["transformers"],"default":"transformers","isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.0.type","typeLabel":"enum\u003cstring>"},"library_name":{"oneOf":[{"description":"Name of the library for the framework","type":"string","enum":["transformers","sentence-transformers","diffusers"],"default":"transformers","title":"LibraryName","x-fern-type-name":"LibraryName","uniqueKey":"manifest.oneOf.2.framework.oneOf.0.library_name.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"Name of the library for the framework","type":"null","enum":["transformers","sentence-transformers","diffusers"],"default":"transformers","title":"LibraryName","x-fern-type-name":"LibraryName","uniqueKey":"manifest.oneOf.2.framework.oneOf.0.library_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.2.framework.oneOf.0.library_name","typeLabel":"enum\u003cstring> | null"},"pipeline_tag":{"oneOf":[{"description":"The `pipeline()` task this model can be used with e.g. `text-generation`. See [huggingface docs](https://huggingface.co/docs/transformers/main/en/main_classes/pipelines#transformers.pipeline.task) for all possible values","type":"string","default":null,"uniqueKey":"manifest.oneOf.2.framework.oneOf.0.pipeline_tag.oneOf.0","typeLabel":"string"},{"description":"The `pipeline()` task this model can be used with e.g. `text-generation`. See [huggingface docs](https://huggingface.co/docs/transformers/main/en/main_classes/pipelines#transformers.pipeline.task) for all possible values","type":"null","default":null,"uniqueKey":"manifest.oneOf.2.framework.oneOf.0.pipeline_tag.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.2.framework.oneOf.0.pipeline_tag","typeLabel":"string | null"},"base_model":{"oneOf":[{"description":"Base model Id from HuggingFace Hub. If this is a finetuned model, this points to the base model id used for finetuning.","type":"string","default":null,"uniqueKey":"manifest.oneOf.2.framework.oneOf.0.base_model.oneOf.0","typeLabel":"string"},{"description":"Base model Id from HuggingFace Hub. If this is a finetuned model, this points to the base model id used for finetuning.","type":"null","default":null,"uniqueKey":"manifest.oneOf.2.framework.oneOf.0.base_model.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.2.framework.oneOf.0.base_model","typeLabel":"string | null"}},"uniqueKey":"manifest.oneOf.2.framework.oneOf.0","typeLabel":"TransformersFramework · object"},{"type":"object","title":"TensorFlowFramework","description":"Tensorflow","required":["type"],"x-fern-type-name":"TensorFlowFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["tensorflow"],"default":"tensorflow","isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.2.framework.oneOf.1","typeLabel":"TensorFlowFramework · object"},{"type":"object","title":"SklearnFramework","description":"Sklearn","required":["type"],"x-fern-type-name":"SklearnFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["sklearn"],"default":"sklearn","isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.2.type","typeLabel":"enum\u003cstring>"},"model_filepath":{"description":"Relative path to the model file in the model version contents","type":"string","uniqueKey":"manifest.oneOf.2.framework.oneOf.2.model_filepath","typeLabel":"string"},"serialization_format":{"description":"Serialization format used to save the sklearn model","type":"string","enum":["cloudpickle","joblib","pickle"],"title":"SklearnSerializationFormat","x-fern-type-name":"SklearnSerializationFormat","uniqueKey":"manifest.oneOf.2.framework.oneOf.2.serialization_format","typeLabel":"enum\u003cstring>"},"model_schema":{"description":"Scikit Learn Model Schema","type":"object","required":["infer_method_name","inputs","outputs"],"properties":{"infer_method_name":{"description":"Name of the method used for inference","type":"string","enum":["predict","predict_proba"],"title":"InferMethodName","x-fern-type-name":"InferMethodName","isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.2.model_schema.infer_method_name","typeLabel":"enum\u003cstring>"},"inputs":{"description":"Schema of the input","type":"array","items":{"type":"object","uniqueKey":"manifest.oneOf.2.framework.oneOf.2.model_schema.inputs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.2.model_schema.inputs","typeLabel":"object[]"},"outputs":{"description":"Schema of the output","type":"array","items":{"type":"object","uniqueKey":"manifest.oneOf.2.framework.oneOf.2.model_schema.outputs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.2.model_schema.outputs","typeLabel":"object[]"}},"title":"SklearnModelSchema","x-fern-type-name":"SklearnModelSchema","uniqueKey":"manifest.oneOf.2.framework.oneOf.2.model_schema","typeLabel":"SklearnModelSchema · object"}},"uniqueKey":"manifest.oneOf.2.framework.oneOf.2","typeLabel":"SklearnFramework · object"},{"type":"object","title":"PyTorchFramework","description":"PyTorch","required":["type"],"x-fern-type-name":"PyTorchFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["pytorch"],"default":"pytorch","isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.2.framework.oneOf.3","typeLabel":"PyTorchFramework · object"},{"type":"object","title":"KerasFramework","description":"Keras","required":["type"],"x-fern-type-name":"KerasFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["keras"],"default":"keras","isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.4.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.2.framework.oneOf.4","typeLabel":"KerasFramework · object"},{"type":"object","title":"XGBoostFramework","description":"XGBoost","required":["type"],"x-fern-type-name":"XGBoostFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["xgboost"],"default":"xgboost","isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.5.type","typeLabel":"enum\u003cstring>"},"serialization_format":{"description":"Serialization format used to save the xgboost model","type":"string","enum":["cloudpickle","joblib","pickle","json"],"title":"XGBoostSerializationFormat","x-fern-type-name":"XGBoostSerializationFormat","uniqueKey":"manifest.oneOf.2.framework.oneOf.5.serialization_format","typeLabel":"enum\u003cstring>"},"model_filepath":{"description":"Relative path to the model file in the model version contents","type":"string","uniqueKey":"manifest.oneOf.2.framework.oneOf.5.model_filepath","typeLabel":"string"},"model_schema":{"description":"Schema of the XGBoost model","type":"object","required":["infer_method_name","inputs","outputs"],"properties":{"infer_method_name":{"description":"Name of the method used for inference","type":"string","enum":["predict"],"isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.5.model_schema.infer_method_name","typeLabel":"enum\u003cstring>"},"inputs":{"description":"Schema of the input","type":"array","items":{"type":"object","uniqueKey":"manifest.oneOf.2.framework.oneOf.5.model_schema.inputs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.5.model_schema.inputs","typeLabel":"object[]"},"outputs":{"description":"Schema of the output","type":"array","items":{"type":"object","uniqueKey":"manifest.oneOf.2.framework.oneOf.5.model_schema.outputs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.5.model_schema.outputs","typeLabel":"object[]"}},"title":"XGBoostModelSchema","x-fern-type-name":"XGBoostModelSchema","uniqueKey":"manifest.oneOf.2.framework.oneOf.5.model_schema","typeLabel":"XGBoostModelSchema · object"}},"uniqueKey":"manifest.oneOf.2.framework.oneOf.5","typeLabel":"XGBoostFramework · object"},{"type":"object","title":"LightGBMFramework","description":"LightGBM","required":["type"],"x-fern-type-name":"LightGBMFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["lightgbm"],"default":"lightgbm","isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.6.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.2.framework.oneOf.6","typeLabel":"LightGBMFramework · object"},{"type":"object","title":"FastAIFramework","description":"FastAI","required":["type"],"x-fern-type-name":"FastAIFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["fastai"],"default":"fastai","isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.7.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.2.framework.oneOf.7","typeLabel":"FastAIFramework · object"},{"type":"object","title":"H2OFramework","description":"H2O","required":["type"],"x-fern-type-name":"H2OFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["h2o"],"default":"h2o","isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.8.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.2.framework.oneOf.8","typeLabel":"H2OFramework · object"},{"type":"object","title":"ONNXFramework","description":"ONNX","required":["type"],"x-fern-type-name":"ONNXFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["onnx"],"default":"onnx","isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.9.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.2.framework.oneOf.9","typeLabel":"ONNXFramework · object"},{"type":"object","title":"SpaCyFramework","description":"SpaCy","required":["type"],"x-fern-type-name":"SpaCyFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["spacy"],"default":"spacy","isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.10.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.2.framework.oneOf.10","typeLabel":"SpaCyFramework · object"},{"type":"object","title":"StatsModelsFramework","description":"StatsModels","required":["type"],"x-fern-type-name":"StatsModelsFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["statsmodels"],"default":"statsmodels","isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.11.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.2.framework.oneOf.11","typeLabel":"StatsModelsFramework · object"},{"type":"object","title":"GluonFramework","description":"Gluon","required":["type"],"x-fern-type-name":"GluonFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["gluon"],"default":"gluon","isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.12.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.2.framework.oneOf.12","typeLabel":"GluonFramework · object"},{"type":"object","title":"PaddleFramework","description":"Paddle","required":["type"],"x-fern-type-name":"PaddleFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["paddle"],"default":"paddle","isRequired":true,"uniqueKey":"manifest.oneOf.2.framework.oneOf.13.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.2.framework.oneOf.13","typeLabel":"PaddleFramework · object"}],"uniqueKey":"manifest.oneOf.2.framework","typeLabel":"TransformersFramework · object | TensorFlowFramework · object | SklearnFramework · object | PyTorchFramework · object | KerasFramework · object | XGBoostFramework · object | LightGBMFramework · object | FastAIFramework · object | H2OFramework · object | ONNXFramework · object | SpaCyFramework · object | StatsModelsFramework · object | GluonFramework · object | PaddleFramework · object"},"environment":{"description":"Runtime environment describing python version and dependencies for running the model","type":"object","properties":{"python_version":{"description":"Python version to use when running the model","type":"string","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"manifest.oneOf.2.environment.python_version","typeLabel":"string"},"pip_packages":{"description":"pip dependencies needed for running the model","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.2.environment.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.2.environment.pip_packages","typeLabel":"string[]"}},"title":"ModelVersionEnvironment","x-fern-type-name":"ModelVersionEnvironment","uniqueKey":"manifest.oneOf.2.environment","typeLabel":"ModelVersionEnvironment · object"},"run_id":{"description":"ID of the MLRepo Run that generated the model version","type":"string","uniqueKey":"manifest.oneOf.2.run_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.2","typeLabel":"ModelManifest · object"},{"type":"object","title":"ChatPromptManifest","description":"Manifest of the resource to be created or updated","required":["type","messages","metadata"],"x-fern-type-name":"ChatPromptManifest","properties":{"metadata":{"description":"Key value metadata. Should be valid JSON. For e.g. `{\"business-unit\": \"sales\", \"quality\": \"good\", \"rating\": 4.5}`","type":"object","isRequired":true,"uniqueKey":"manifest.oneOf.3.metadata","typeLabel":"object"},"type":{"description":"Type of the prompt","type":"string","enum":["chat_prompt"],"default":"chat_prompt","isRequired":true,"uniqueKey":"manifest.oneOf.3.type","typeLabel":"enum\u003cstring>"},"messages":{"description":"List of messages in the chat conversation, must be non-empty","type":"array","items":{"oneOf":[{"type":"object","title":"SystemMessage","description":"System message for the chat","required":["role","content"],"x-fern-type-name":"ChatMessageTurn","properties":{"role":{"description":"Role of the message","type":"string","enum":["system"],"isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"oneOf":[{"type":"string","description":"Text content for the system message","pattern":"^.[\\s\\S]*$","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.0.content.oneOf.0","typeLabel":"string"},{"type":"object","title":"BlobStorageReference","description":"Text content for the system message","required":["type","path","mime_type"],"x-fern-type-name":"BlobStorageReference","properties":{"type":{"description":"+value=blob-storage","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.0.content.oneOf.1.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the content in blob storage","type":"string","pattern":"^.{1,}$","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.0.content.oneOf.1.path","typeLabel":"string"},"mime_type":{"description":"MIME type of the content","type":"string","enum":["text/plain","application/json","image/png","image/jpeg","application/x-directory"],"title":"MimeType","x-fern-type-name":"MimeType","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.0.content.oneOf.1.mime_type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.0.content.oneOf.1","typeLabel":"BlobStorageReference · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.0.content","typeLabel":"string | BlobStorageReference · object"},"name":{"description":"Name of the system","type":"string","uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.0","typeLabel":"SystemMessage · object"},{"type":"object","title":"AssistantMessage","description":"Assistant message turn","required":["role"],"x-fern-type-name":"ChatMessageTurn","properties":{"role":{"description":"Role of the message","type":"string","enum":["assistant"],"isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"content":{"oneOf":[{"type":"string","description":"Text content for the assistant message","uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.0","typeLabel":"string"},{"type":"array","items":{"oneOf":[{"type":"object","title":"TextContentPart","description":"Text content for the message","required":["type","text"],"x-fern-type-name":"TextContentPart","properties":{"type":{"description":"Type of the content part","type":"string","enum":["text"],"default":"text","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"any","description":"Text content for the message","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.0.text","typeLabel":"any"}},"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.0","typeLabel":"TextContentPart · object"},{"type":"object","title":"RefusalContentPart","required":["type","refusal"],"x-fern-type-name":"RefusalContentPart","properties":{"type":{"description":"Type of the content part","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.1.type","typeLabel":"string"},"refusal":{"description":"Reason","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.1.refusal","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.1","typeLabel":"RefusalContentPart · object"}],"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX]","typeLabel":"TextContentPart · object | RefusalContentPart · object"},"description":"Text content for the assistant message","uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.1","typeLabel":"(TextContentPart · object | RefusalContentPart · object)[]"},{"type":"object","title":"BlobStorageReference","description":"Text content for the assistant message","required":["type","path","mime_type"],"x-fern-type-name":"BlobStorageReference","properties":{"type":{"description":"+value=blob-storage","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.2.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the content in blob storage","type":"string","pattern":"^.{1,}$","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.2.path","typeLabel":"string"},"mime_type":{"description":"MIME type of the content","type":"string","enum":["text/plain","application/json","image/png","image/jpeg","application/x-directory"],"title":"MimeType","x-fern-type-name":"MimeType","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.2.mime_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.2","typeLabel":"BlobStorageReference · object"}],"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.content","typeLabel":"string | (TextContentPart · object | RefusalContentPart · object)[] | BlobStorageReference · object"},"tool_calls":{"description":"List of tool calls made by the assistant","type":"array","items":{"type":"object","required":["type","id","function"],"properties":{"type":{"description":"Type of the tool call","type":"string","enum":["function"],"default":"function","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"id":{"description":"Unique identifier for the tool call","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].id","typeLabel":"string"},"function":{"type":"object","required":["name","arguments"],"properties":{"name":{"description":"Name of the tool/function being called","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].function.name","typeLabel":"string"},"arguments":{"description":"Arguments passed to the tool/function","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].function.arguments","typeLabel":"string"}},"title":"Function","x-fern-type-name":"Function","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].function","typeLabel":"Function · object"}},"title":"ToolCall","x-fern-type-name":"ToolCall","uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.tool_calls.items.[INDEX]","typeLabel":"ToolCall · object"},"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.tool_calls","typeLabel":"ToolCall · object[]"},"name":{"description":"Name of the assistant this message is from","type":"string","uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.1","typeLabel":"AssistantMessage · object"},{"type":"object","title":"UserMessage","description":"User message turn","required":["role","content"],"x-fern-type-name":"ChatMessageTurn","properties":{"role":{"description":"Role of the message","type":"string","enum":["user"],"isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"content":{"oneOf":[{"type":"string","description":"Content of the user message. can be a mix of text and images","pattern":"^.[\\s\\S]*$","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.0","typeLabel":"string"},{"type":"array","items":{"oneOf":[{"type":"object","title":"TextContentPart","description":"Text content for the message","required":["type","text"],"x-fern-type-name":"TextContentPart","properties":{"type":{"description":"Type of the content part","type":"string","enum":["text"],"default":"text","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"any","description":"Text content for the message","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.0.text","typeLabel":"any"}},"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.0","typeLabel":"TextContentPart · object"},{"type":"object","title":"ImageContentPart","description":"Image content for the message","required":["type","image_url"],"x-fern-type-name":"ImageContentPart","properties":{"type":{"description":"Type of the content part","type":"string","enum":["image_url"],"default":"image_url","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"image_url":{"description":"Image URL linking to the image","type":"object","required":["url"],"properties":{"url":{"type":"any","description":"Image URL linking to the image","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1.image_url.url","typeLabel":"any"},"detail":{"description":"Details","type":"string","uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1.image_url.detail","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1.image_url","typeLabel":"object"}},"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1","typeLabel":"ImageContentPart · object"}],"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX]","typeLabel":"TextContentPart · object | ImageContentPart · object"},"description":"Content of the user message. can be a mix of text and images","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1","typeLabel":"(TextContentPart · object | ImageContentPart · object)[]"},{"type":"object","title":"BlobStorageReference","description":"Content of the user message. can be a mix of text and images","required":["type","path","mime_type"],"x-fern-type-name":"BlobStorageReference","properties":{"type":{"description":"+value=blob-storage","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.2.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the content in blob storage","type":"string","pattern":"^.{1,}$","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.2.path","typeLabel":"string"},"mime_type":{"description":"MIME type of the content","type":"string","enum":["text/plain","application/json","image/png","image/jpeg","application/x-directory"],"title":"MimeType","x-fern-type-name":"MimeType","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.2.mime_type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.2","typeLabel":"BlobStorageReference · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2.content","typeLabel":"string | (TextContentPart · object | ImageContentPart · object)[] | BlobStorageReference · object"},"name":{"description":"Name of the user this message is from","type":"string","uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.2","typeLabel":"UserMessage · object"},{"type":"object","title":"ToolMessage","description":"Tool message for the chat","required":["role","content","tool_call_id"],"x-fern-type-name":"ChatMessageTurn","properties":{"role":{"description":"Role of the message","type":"string","enum":["tool"],"isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.3.role","typeLabel":"enum\u003cstring>"},"content":{"oneOf":[{"type":"string","description":"Content of the tool call result","pattern":"^.[\\s\\S]*$","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.3.content.oneOf.0","typeLabel":"string"},{"type":"object","title":"BlobStorageReference","description":"Content of the tool call result","required":["type","path","mime_type"],"x-fern-type-name":"BlobStorageReference","properties":{"type":{"description":"+value=blob-storage","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.3.content.oneOf.1.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the content in blob storage","type":"string","pattern":"^.{1,}$","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.3.content.oneOf.1.path","typeLabel":"string"},"mime_type":{"description":"MIME type of the content","type":"string","enum":["text/plain","application/json","image/png","image/jpeg","application/x-directory"],"title":"MimeType","x-fern-type-name":"MimeType","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.3.content.oneOf.1.mime_type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.3.content.oneOf.1","typeLabel":"BlobStorageReference · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.3.content","typeLabel":"string | BlobStorageReference · object"},"tool_call_id":{"description":"Unique identifier for the tool call","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.3.tool_call_id","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.3","typeLabel":"ToolMessage · object"},{"type":"object","title":"DeveloperMessage","description":"Developer message for the chat","required":["role","content"],"x-fern-type-name":"ChatMessageTurn","properties":{"role":{"description":"The role of the messages author, in this case developer.","type":"string","enum":["developer"],"isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.4.role","typeLabel":"enum\u003cstring>"},"content":{"oneOf":[{"type":"string","description":"The contents of the developer message.","pattern":"^.[\\s\\S]*$","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.4.content.oneOf.0","typeLabel":"string"},{"type":"object","title":"BlobStorageReference","description":"The contents of the developer message.","required":["type","path","mime_type"],"x-fern-type-name":"BlobStorageReference","properties":{"type":{"description":"+value=blob-storage","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.4.content.oneOf.1.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the content in blob storage","type":"string","pattern":"^.{1,}$","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.4.content.oneOf.1.path","typeLabel":"string"},"mime_type":{"description":"MIME type of the content","type":"string","enum":["text/plain","application/json","image/png","image/jpeg","application/x-directory"],"title":"MimeType","x-fern-type-name":"MimeType","isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.4.content.oneOf.1.mime_type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.4.content.oneOf.1","typeLabel":"BlobStorageReference · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.4.content","typeLabel":"string | BlobStorageReference · object"},"name":{"description":"An optional name for the participant.","type":"string","uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.4.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX].oneOf.4","typeLabel":"DeveloperMessage · object"}],"uniqueKey":"manifest.oneOf.3.messages.items.[INDEX]","typeLabel":"SystemMessage · object | AssistantMessage · object | UserMessage · object | ToolMessage · object | DeveloperMessage · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.3.messages","typeLabel":"(SystemMessage · object | AssistantMessage · object | UserMessage · object | ToolMessage · object | DeveloperMessage · object)[]"},"name":{"description":"Name of the entity","type":"string","maxLength":256,"pattern":"^[A-Za-z0-9_\\-]+$","uniqueKey":"manifest.oneOf.3.name","typeLabel":"string"},"ml_repo":{"description":"Name of the ML Repo","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,98}[a-zA-Z0-9]$","uniqueKey":"manifest.oneOf.3.ml_repo","typeLabel":"string"},"version":{"description":"Version of the entity","type":"integer","minimum":1,"uniqueKey":"manifest.oneOf.3.version","typeLabel":"integer"},"description":{"oneOf":[{"description":"Description","type":"string","maxLength":512,"uniqueKey":"manifest.oneOf.3.description.oneOf.0","typeLabel":"string"},{"description":"Description","type":"null","maxLength":512,"uniqueKey":"manifest.oneOf.3.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.3.description","typeLabel":"string | null"},"version_alias":{"description":"Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)","type":"string","maxLength":128,"pattern":"^v[a-zA-Z0-9.-]*([a-zA-Z0-9]+)$","uniqueKey":"manifest.oneOf.3.version_alias","typeLabel":"string"},"variables":{"description":"Variables referenced in messages and that can be replaced when running generation","type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"manifest.oneOf.3.variables.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"manifest.oneOf.3.variables.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.3.variables.additionalProperties","typeLabel":"string | null"},"uniqueKey":"manifest.oneOf.3.variables","typeLabel":"object"},"model_configuration":{"description":"Add a model from Gateway along with parameters to be used for chat completion","type":"object","required":["provider","model"],"properties":{"provider":{"description":"Name of the provider, must be one of the integration providers configured for the Gateway","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.3.model_configuration.provider","typeLabel":"string"},"model":{"description":"Name of the model to be used for generations. This model should be available in the provider","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-.]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.3.model_configuration.model","typeLabel":"string"},"parameters":{"description":"Parameters to pass to the model when generating","type":"object","properties":{"max_tokens":{"type":"integer","uniqueKey":"manifest.oneOf.3.model_configuration.parameters.max_tokens","typeLabel":"integer"},"temperature":{"type":"number","uniqueKey":"manifest.oneOf.3.model_configuration.parameters.temperature","typeLabel":"number"},"top_k":{"type":"number","uniqueKey":"manifest.oneOf.3.model_configuration.parameters.top_k","typeLabel":"number"},"top_p":{"type":"number","uniqueKey":"manifest.oneOf.3.model_configuration.parameters.top_p","typeLabel":"number"},"stop":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.3.model_configuration.parameters.stop.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.3.model_configuration.parameters.stop.oneOf.0","typeLabel":"string[]"},{"type":"string","uniqueKey":"manifest.oneOf.3.model_configuration.parameters.stop.oneOf.1","typeLabel":"string"}],"uniqueKey":"manifest.oneOf.3.model_configuration.parameters.stop","typeLabel":"string[] | string"}},"title":"Parameters","x-fern-type-name":"Parameters","uniqueKey":"manifest.oneOf.3.model_configuration.parameters","typeLabel":"Parameters · object"},"extra_parameters":{"description":"Arbitrary extra parameters to pass to the model when generating","type":"object","uniqueKey":"manifest.oneOf.3.model_configuration.extra_parameters","typeLabel":"object"}},"title":"ModelConfiguration","x-fern-type-name":"ModelConfiguration","uniqueKey":"manifest.oneOf.3.model_configuration","typeLabel":"ModelConfiguration · object"},"tools":{"description":"List of tools to be used in the chat prompt","type":"array","items":{"description":"Schema defining a tool for the chat prompt","type":"object","required":["type","function"],"properties":{"type":{"description":"Type of the tool","type":"string","enum":["function"],"default":"function","isRequired":true,"uniqueKey":"manifest.oneOf.3.tools.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"function":{"description":"Schema defining a function for tool calls","type":"object","required":["name"],"properties":{"name":{"description":"Name of the function","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.3.tools.items.[INDEX].function.name","typeLabel":"string"},"description":{"description":"Description of the function","type":"string","uniqueKey":"manifest.oneOf.3.tools.items.[INDEX].function.description","typeLabel":"string"},"parameters":{"description":"Parameters schema for the function","type":"object","uniqueKey":"manifest.oneOf.3.tools.items.[INDEX].function.parameters","typeLabel":"object"},"strict":{"description":"Indicates if the function should be called strictly","type":"boolean","default":false,"uniqueKey":"manifest.oneOf.3.tools.items.[INDEX].function.strict","typeLabel":"boolean"}},"title":"FunctionSchema","x-fern-type-name":"FunctionSchema","isRequired":true,"uniqueKey":"manifest.oneOf.3.tools.items.[INDEX].function","typeLabel":"FunctionSchema · object"}},"title":"ToolSchema","x-fern-type-name":"ToolSchema","uniqueKey":"manifest.oneOf.3.tools.items.[INDEX]","typeLabel":"ToolSchema · object"},"uniqueKey":"manifest.oneOf.3.tools","typeLabel":"ToolSchema · object[]"},"guardrails":{"description":"Guardrails","type":"object","properties":{"input_guardrails":{"description":"List of guardrail names to apply to user input messages before processing.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.3.guardrails.input_guardrails.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.3.guardrails.input_guardrails","typeLabel":"string[]"},"output_guardrails":{"description":"List of guardrail names to apply to AI response messages before returning to user.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.3.guardrails.output_guardrails.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.3.guardrails.output_guardrails","typeLabel":"string[]"}},"title":"Guardrails","x-fern-type-name":"Guardrails","uniqueKey":"manifest.oneOf.3.guardrails","typeLabel":"Guardrails · object"},"response_format":{"oneOf":[{"type":"object","title":"JsonObjectResponseFormat","description":"Simple JSON mode response format","required":["type"],"x-fern-type-name":"JsonObjectResponseFormat","properties":{"type":{"description":"Type of response format","type":"string","enum":["json_object"],"default":"json_object","isRequired":true,"uniqueKey":"manifest.oneOf.3.response_format.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.3.response_format.oneOf.0","typeLabel":"JsonObjectResponseFormat · object"},{"type":"object","title":"JsonSchemaResponseFormat","description":"Structured JSON response format with schema validation","required":["type","json_schema"],"x-fern-type-name":"JsonSchemaResponseFormat","properties":{"type":{"description":"Type of response format","type":"string","enum":["json_schema"],"default":"json_schema","isRequired":true,"uniqueKey":"manifest.oneOf.3.response_format.oneOf.1.type","typeLabel":"enum\u003cstring>"},"json_schema":{"description":"JSON schema for structured output","type":"object","required":["name","schema"],"properties":{"name":{"description":"Name of the schema","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.3.response_format.oneOf.1.json_schema.name","typeLabel":"string"},"schema":{"description":"JSON schema object defining the expected structure","type":"object","isRequired":true,"uniqueKey":"manifest.oneOf.3.response_format.oneOf.1.json_schema.schema","typeLabel":"object"}},"title":"JsonSchema","x-fern-type-name":"JsonSchema","isRequired":true,"uniqueKey":"manifest.oneOf.3.response_format.oneOf.1.json_schema","typeLabel":"JsonSchema · object"}},"uniqueKey":"manifest.oneOf.3.response_format.oneOf.1","typeLabel":"JsonSchemaResponseFormat · object"}],"uniqueKey":"manifest.oneOf.3.response_format","typeLabel":"JsonObjectResponseFormat · object | JsonSchemaResponseFormat · object"},"routing_config":{"oneOf":[{"type":"object","title":"WeightBasedLoadBalancing","description":"Weight-based Load Balancing","required":["type","load_balance_targets"],"x-fern-type-name":"WeightBasedLoadBalancing","properties":{"type":{"description":"Routing Type","type":"string","enum":["weight-based-routing"],"default":"weight-based-routing","isRequired":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"load_balance_targets":{"description":"List of targets for load balancing with weights","type":"array","items":{"description":"Weight-based Target","type":"object","required":["target","weight"],"properties":{"target":{"description":"Target model or provider FQN","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].target","typeLabel":"string"},"weight":{"description":"Relative weight for routing decisions (higher values mean more traffic)","type":"integer","isRequired":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].weight","typeLabel":"integer"},"retry_config":{"type":"object","required":["attempts"],"properties":{"attempts":{"description":"Number of attempts to retry the request","type":"integer","minimum":0,"isRequired":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].retry_config.attempts","typeLabel":"integer"},"delay":{"description":"Delay between retries in milliseconds","type":"integer","minimum":0,"exclusiveMinimum":true,"default":100,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].retry_config.delay","typeLabel":"integer"},"on_status_codes":{"description":"Status codes to retry on","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].retry_config.on_status_codes.items.[INDEX]","typeLabel":"string"},"default":["429","500","502","503"],"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].retry_config.on_status_codes","typeLabel":"string[]"}},"title":"RetryConfig","x-fern-type-name":"RetryConfig","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].retry_config","typeLabel":"RetryConfig · object"},"fallback_status_codes":{"description":"Status Codes for which the request will fallback to other targets. If the status code is not present in fallback_status_codes, it fails immediately.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].fallback_status_codes.items.[INDEX]","typeLabel":"string"},"default":["401","403","404","408","429","500","502","503"],"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].fallback_status_codes","typeLabel":"string[]"},"fallback_candidate":{"description":"Whether this target is a fallback candidate. If set to false, this model will not be considered as a fallback option for targets of this load-balance-rule","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].fallback_candidate","typeLabel":"boolean"},"override_params":{"description":"Optional parameters to override in the request","type":"object","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].override_params","typeLabel":"object"},"headers_override":{"description":"Headers Override","type":"object","properties":{"remove":{"description":"List of headers to remove from upstream request","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].headers_override.remove.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].headers_override.remove","typeLabel":"string[]"},"set":{"description":"Headers to add or overwrite in upstream request","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].headers_override.set.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].headers_override.set","typeLabel":"object"}},"title":"HeadersOverride","x-fern-type-name":"HeadersOverride","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].headers_override","typeLabel":"HeadersOverride · object"},"metadata_match":{"description":"Optional metadata key-value pairs that must match incoming request metadata headers for this target to be considered for routing.","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].metadata_match.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].metadata_match","typeLabel":"object"}},"title":"LoadBalanceTarget","x-fern-type-name":"LoadBalanceTarget","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX]","typeLabel":"LoadBalanceTarget · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.load_balance_targets","typeLabel":"LoadBalanceTarget · object[]"},"sticky_routing":{"description":"Sticky Routing","type":"object","required":["ttl_seconds","session_identifiers"],"properties":{"ttl_seconds":{"description":"Sticky mapping TTL in seconds","type":"integer","minimum":1800,"maximum":86400,"isRequired":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.sticky_routing.ttl_seconds","typeLabel":"integer"},"session_identifiers":{"description":"List of identifier selectors used to build sticky key","type":"array","items":{"description":"Sticky Session Identifier","type":"object","required":["source","key"],"properties":{"source":{"description":"Source from which session identifier value will be extracted","type":"string","enum":["headers","metadata"],"isRequired":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.sticky_routing.session_identifiers.items.[INDEX].source","typeLabel":"enum\u003cstring>"},"key":{"description":"Key to read from selected source","type":"string","pattern":"^[!#$%\u0026'*+.^_`|~0-9A-Za-z-]{1,128}$","isRequired":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.sticky_routing.session_identifiers.items.[INDEX].key","typeLabel":"string"}},"title":"StickySessionIdentifier","x-fern-type-name":"StickySessionIdentifier","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.sticky_routing.session_identifiers.items.[INDEX]","typeLabel":"StickySessionIdentifier · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.sticky_routing.session_identifiers","typeLabel":"StickySessionIdentifier · object[]"}},"title":"StickyRouting","x-fern-type-name":"StickyRouting","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0.sticky_routing","typeLabel":"StickyRouting · object"}},"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.0","typeLabel":"WeightBasedLoadBalancing · object"},{"type":"object","title":"LatencyBasedLoadBalancing","description":"Latency-based Load Balancing","required":["type","load_balance_targets"],"x-fern-type-name":"LatencyBasedLoadBalancing","properties":{"type":{"description":"Routing Type","type":"string","enum":["latency-based-routing"],"default":"latency-based-routing","isRequired":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"load_balance_targets":{"description":"List of targets for latency-based load balancing","type":"array","items":{"description":"Latency-based Target","type":"object","required":["target"],"properties":{"target":{"description":"Target model or provider FQN","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].target","typeLabel":"string"},"retry_config":{"type":"object","required":["attempts"],"properties":{"attempts":{"description":"Number of attempts to retry the request","type":"integer","minimum":0,"isRequired":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].retry_config.attempts","typeLabel":"integer"},"delay":{"description":"Delay between retries in milliseconds","type":"integer","minimum":0,"exclusiveMinimum":true,"default":100,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].retry_config.delay","typeLabel":"integer"},"on_status_codes":{"description":"Status codes to retry on","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].retry_config.on_status_codes.items.[INDEX]","typeLabel":"string"},"default":["429","500","502","503"],"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].retry_config.on_status_codes","typeLabel":"string[]"}},"title":"RetryConfig","x-fern-type-name":"RetryConfig","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].retry_config","typeLabel":"RetryConfig · object"},"fallback_status_codes":{"description":"Status Codes for which the request will fallback to other targets. If the status code is not present in fallback_status_codes, it fails immediately.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].fallback_status_codes.items.[INDEX]","typeLabel":"string"},"default":["401","403","404","408","429","500","502","503"],"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].fallback_status_codes","typeLabel":"string[]"},"fallback_candidate":{"description":"Whether this target is a fallback candidate. If set to false, this model will not be considered as a fallback option for targets of this load-balance-rule","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].fallback_candidate","typeLabel":"boolean"},"override_params":{"description":"Optional parameters to override in the request","type":"object","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].override_params","typeLabel":"object"},"headers_override":{"description":"Headers Override","type":"object","properties":{"remove":{"description":"List of headers to remove from upstream request","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].headers_override.remove.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].headers_override.remove","typeLabel":"string[]"},"set":{"description":"Headers to add or overwrite in upstream request","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].headers_override.set.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].headers_override.set","typeLabel":"object"}},"title":"HeadersOverride","x-fern-type-name":"HeadersOverride","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].headers_override","typeLabel":"HeadersOverride · object"},"metadata_match":{"description":"Optional metadata key-value pairs that must match incoming request metadata headers for this target to be considered for routing.","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].metadata_match.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].metadata_match","typeLabel":"object"}},"title":"LatencyBasedLoadBalanceTarget","x-fern-type-name":"LatencyBasedLoadBalanceTarget","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX]","typeLabel":"LatencyBasedLoadBalanceTarget · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1.load_balance_targets","typeLabel":"LatencyBasedLoadBalanceTarget · object[]"}},"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.1","typeLabel":"LatencyBasedLoadBalancing · object"},{"type":"object","title":"PriorityBasedLoadBalancing","description":"Priority-based Load Balancing","required":["type","load_balance_targets"],"x-fern-type-name":"PriorityBasedLoadBalancing","properties":{"type":{"description":"Routing Type","type":"string","enum":["priority-based-routing"],"default":"priority-based-routing","isRequired":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.type","typeLabel":"enum\u003cstring>"},"load_balance_targets":{"description":"List of targets for priority-based load balancing","type":"array","items":{"type":"object","required":["target","priority"],"properties":{"target":{"description":"Target model or provider FQN","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].target","typeLabel":"string"},"priority":{"description":"Priority for the target, Lower the number, higher the priority (0 is the highest priority)","type":"integer","minimum":0,"default":0,"isRequired":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].priority","typeLabel":"integer"},"sla_cutoff":{"type":"object","properties":{"time_per_output_token_ms":{"description":"Time per output token threshold in milliseconds. If time per output token exceeds this value, the target will be marked as unhealthy","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].sla_cutoff.time_per_output_token_ms","typeLabel":"integer"},"time_to_first_token_ms":{"description":"Time to first token threshold in milliseconds. If time to first token exceeds this value, the target will be marked as unhealthy","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].sla_cutoff.time_to_first_token_ms","typeLabel":"integer"}},"title":"SLACutoff","x-fern-type-name":"SLACutoff","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].sla_cutoff","typeLabel":"SLACutoff · object"},"retry_config":{"type":"object","required":["attempts"],"properties":{"attempts":{"description":"Number of attempts to retry the request","type":"integer","minimum":0,"isRequired":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].retry_config.attempts","typeLabel":"integer"},"delay":{"description":"Delay between retries in milliseconds","type":"integer","minimum":0,"exclusiveMinimum":true,"default":100,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].retry_config.delay","typeLabel":"integer"},"on_status_codes":{"description":"Status codes to retry on","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].retry_config.on_status_codes.items.[INDEX]","typeLabel":"string"},"default":["429","500","502","503"],"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].retry_config.on_status_codes","typeLabel":"string[]"}},"title":"RetryConfig","x-fern-type-name":"RetryConfig","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].retry_config","typeLabel":"RetryConfig · object"},"fallback_status_codes":{"description":"Status Codes for which the request will fallback to other targets. If the status code is not present in fallback_status_codes, it fails immediately.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].fallback_status_codes.items.[INDEX]","typeLabel":"string"},"default":["401","403","404","408","429","500","502","503"],"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].fallback_status_codes","typeLabel":"string[]"},"fallback_candidate":{"description":"Whether this target is a fallback candidate. If set to false, this model will not be considered as a fallback option for targets of this load-balance-rule","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].fallback_candidate","typeLabel":"boolean"},"override_params":{"description":"Optional parameters to override in the request","type":"object","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].override_params","typeLabel":"object"},"headers_override":{"description":"Headers Override","type":"object","properties":{"remove":{"description":"List of headers to remove from upstream request","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].headers_override.remove.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].headers_override.remove","typeLabel":"string[]"},"set":{"description":"Headers to add or overwrite in upstream request","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].headers_override.set.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].headers_override.set","typeLabel":"object"}},"title":"HeadersOverride","x-fern-type-name":"HeadersOverride","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].headers_override","typeLabel":"HeadersOverride · object"},"metadata_match":{"description":"Optional metadata key-value pairs that must match incoming request metadata headers for this target to be considered for routing.","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].metadata_match.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].metadata_match","typeLabel":"object"}},"title":"PriorityBasedLoadBalanceTarget","x-fern-type-name":"PriorityBasedLoadBalanceTarget","uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX]","typeLabel":"PriorityBasedLoadBalanceTarget · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2.load_balance_targets","typeLabel":"PriorityBasedLoadBalanceTarget · object[]"}},"uniqueKey":"manifest.oneOf.3.routing_config.oneOf.2","typeLabel":"PriorityBasedLoadBalancing · object"}],"uniqueKey":"manifest.oneOf.3.routing_config","typeLabel":"WeightBasedLoadBalancing · object | LatencyBasedLoadBalancing · object | PriorityBasedLoadBalancing · object"},"cache_config":{"oneOf":[{"type":"object","title":"SemanticCacheConfig","description":"Semantic Cache Configuration","required":["type","similarity_threshold","ttl"],"x-fern-type-name":"SemanticCacheConfig","properties":{"type":{"description":"Cache type","type":"string","enum":["semantic"],"default":"semantic","isRequired":true,"uniqueKey":"manifest.oneOf.3.cache_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"similarity_threshold":{"description":"Similarity threshold for semantic matching (between 0 and 1)","type":"number","minimum":0,"exclusiveMinimum":true,"maximum":1,"isRequired":true,"uniqueKey":"manifest.oneOf.3.cache_config.oneOf.0.similarity_threshold","typeLabel":"number"},"ttl":{"description":"Time-to-live for cached entries in seconds (max 3 days)","type":"number","minimum":0,"exclusiveMinimum":true,"maximum":259200,"default":3600,"isRequired":true,"uniqueKey":"manifest.oneOf.3.cache_config.oneOf.0.ttl","typeLabel":"number"},"namespace":{"description":"Cache namespace (defaults to 'default' if not provided)","type":"string","uniqueKey":"manifest.oneOf.3.cache_config.oneOf.0.namespace","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.3.cache_config.oneOf.0","typeLabel":"SemanticCacheConfig · object"},{"type":"object","title":"ExactMatchCacheConfig","description":"Exact Match Cache Configuration","required":["type","ttl"],"x-fern-type-name":"ExactMatchCacheConfig","properties":{"type":{"description":"Cache type","type":"string","enum":["exact-match"],"default":"exact-match","isRequired":true,"uniqueKey":"manifest.oneOf.3.cache_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"ttl":{"description":"Time-to-live for cached entries in seconds (max 3 days)","type":"number","minimum":0,"exclusiveMinimum":true,"maximum":259200,"default":3600,"isRequired":true,"uniqueKey":"manifest.oneOf.3.cache_config.oneOf.1.ttl","typeLabel":"number"},"namespace":{"description":"Cache namespace (defaults to 'default' if not provided)","type":"string","uniqueKey":"manifest.oneOf.3.cache_config.oneOf.1.namespace","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.3.cache_config.oneOf.1","typeLabel":"ExactMatchCacheConfig · object"}],"uniqueKey":"manifest.oneOf.3.cache_config","typeLabel":"SemanticCacheConfig · object | ExactMatchCacheConfig · object"},"logging_config":{"description":"Logging configuration for the chat prompt","type":"object","required":["enabled"],"properties":{"enabled":{"description":"Whether logging is enabled for the chat prompt","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.3.logging_config.enabled","typeLabel":"boolean"},"tracing_project_fqn":{"description":"The FQN of the tracing project where the logs will be stored","type":"string","uniqueKey":"manifest.oneOf.3.logging_config.tracing_project_fqn","typeLabel":"string"}},"title":"LoggingConfig","x-fern-type-name":"LoggingConfig","uniqueKey":"manifest.oneOf.3.logging_config","typeLabel":"LoggingConfig · object"},"sub_agents":{"description":"Sub agents to be used in the chat prompt","type":"array","items":{"description":"Sub agent configuration for the chat prompt","type":"object","required":["name"],"properties":{"name":{"description":"Name of the sub agent","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.3.sub_agents.items.[INDEX].name","typeLabel":"string"}},"title":"SubAgent","x-fern-type-name":"SubAgent","uniqueKey":"manifest.oneOf.3.sub_agents.items.[INDEX]","typeLabel":"SubAgent · object"},"uniqueKey":"manifest.oneOf.3.sub_agents","typeLabel":"SubAgent · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.3","typeLabel":"ChatPromptManifest · object"},{"type":"object","title":"DataDirectoryManifest","description":"Manifest of the resource to be created or updated","required":["type","name","ml_repo","metadata","source"],"x-fern-type-name":"DataDirectoryManifest","properties":{"type":{"description":"Type","type":"string","enum":["data-dir"],"default":"data-dir","isRequired":true,"uniqueKey":"manifest.oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the data directory","type":"string","maxLength":256,"pattern":"^[A-Za-z0-9_\\-]+$","isRequired":true,"uniqueKey":"manifest.oneOf.4.name","typeLabel":"string"},"ml_repo":{"description":"Name of the ML Repo to create the data directory under","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,98}[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.4.ml_repo","typeLabel":"string"},"metadata":{"description":"Key Value metadata. Should be valid JSON. For e.g. `{\"business-unit\": \"sales\", \"quality\": \"good\", \"rating\": 4.5}`","type":"object","isRequired":true,"uniqueKey":"manifest.oneOf.4.metadata","typeLabel":"object"},"source":{"oneOf":[{"type":"object","title":"TrueFoundryManagedSource","description":"TrueFoundry Managed Source","required":["type"],"x-fern-type-name":"TrueFoundryManagedSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["truefoundry"],"default":"truefoundry","isRequired":true,"uniqueKey":"manifest.oneOf.4.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"uri":{"description":"URI","type":"string","pattern":"^(s3|gs|wasbs)://.*","uniqueKey":"manifest.oneOf.4.source.oneOf.0.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.4.source.oneOf.0","typeLabel":"TrueFoundryManagedSource · object"},{"type":"object","title":"ExternalBlobStorageSource","description":"External Blob Storage Source","required":["type","uri"],"x-fern-type-name":"ExternalBlobStorageSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["external"],"default":"external","isRequired":true,"uniqueKey":"manifest.oneOf.4.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uri":{"description":"URI referencing a path in the blob storage bucket linked to the MLRepo","type":"string","pattern":"^(s3|gs|wasbs)://.*","isRequired":true,"uniqueKey":"manifest.oneOf.4.source.oneOf.1.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.4.source.oneOf.1","typeLabel":"ExternalBlobStorageSource · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.4.source","typeLabel":"TrueFoundryManagedSource · object | ExternalBlobStorageSource · object"},"description":{"oneOf":[{"description":"Description for the data directory","type":"string","maxLength":512,"uniqueKey":"manifest.oneOf.4.description.oneOf.0","typeLabel":"string"},{"description":"Description for the data directory","type":"null","maxLength":512,"uniqueKey":"manifest.oneOf.4.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.4.description","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"manifest.oneOf.4","typeLabel":"DataDirectoryManifest · object"},{"type":"object","title":"Service","description":"Manifest of the resource to be created or updated","required":["type","replicas","name","image","ports"],"x-fern-type-name":"Service","properties":{"name":{"description":"Name of the service. This uniquely identifies this service in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.5.name","typeLabel":"string"},"image":{"oneOf":[{"type":"object","title":"Build","description":"Describes how we build our code into a Docker image.","required":["type","build_source","build_spec"],"x-fern-type-name":"Build","properties":{"type":{"description":"+value=build","type":"string","enum":["build"],"default":"build","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.type","typeLabel":"enum\u003cstring>"},"build_source":{"oneOf":[{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_source.oneOf.0.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_source.oneOf.0","typeLabel":"RemoteSource · object"},{"type":"object","title":"GitSource","description":"Describes that we are using code stored in a git repository to build our image","required":["type","repo_url","ref"],"x-fern-type-name":"GitSource","properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"The repository URL.","type":"string","pattern":"^(https?://)\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_source.oneOf.1.repo_url","typeLabel":"string"},"ref":{"description":"The commit SHA.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_source.oneOf.1.ref","typeLabel":"string"},"branch_name":{"description":"Selecting branch will select latest commit SHA of the branch.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_source.oneOf.1.branch_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_source.oneOf.1","typeLabel":"GitSource · object"},{"type":"object","title":"LocalSource","description":"Describes that we are using code stored in a local developement environment to build our image","required":["type","project_root_path","local_build"],"x-fern-type-name":"LocalSource","properties":{"type":{"description":"+value=local","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"project_root_path":{"description":"Local project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_source.oneOf.2.project_root_path","typeLabel":"string"},"local_build":{"description":"run docker build locally","type":"boolean","default":false,"isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_source.oneOf.2.local_build","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_source.oneOf.2","typeLabel":"LocalSource · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_source","typeLabel":"RemoteSource · object | GitSource · object | LocalSource · object"},"build_spec":{"oneOf":[{"type":"object","title":"DockerFileBuild","description":"Describes that we are using a dockerfile to build our image","required":["type","dockerfile_path","build_context_path"],"x-fern-type-name":"DockerFileBuild","properties":{"type":{"description":"+value=dockerfile","type":"string","enum":["dockerfile"],"default":"dockerfile","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.type","typeLabel":"enum\u003cstring>"},"dockerfile_path":{"description":"The file path of the Dockerfile relative to project root path.","type":"string","default":"./Dockerfile","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.dockerfile_path","typeLabel":"string"},"build_context_path":{"description":"Build context path for the Dockerfile relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.command","typeLabel":"string | string[]"},"build_args":{"description":"Build arguments to pass to docker build","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.build_args.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.build_args","typeLabel":"object"},"build_secrets":{"description":"Build secrets you can use in run statements inside dockerfile like RUN --mount=type=secret,id=pip_index_url ... you can learn more about build secrets here https://www.truefoundry.com/docs/docker-build-secrets","type":"array","items":{"type":"object","required":["id","value"],"properties":{"id":{"description":"The ID of the build secret.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].id","typeLabel":"string"},"value":{"description":"The value of the build secret.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].value","typeLabel":"string"},"env":{"description":"The name of the environment variable to inject the secret into.","type":"string","pattern":"^[_a-zA-Z0-9][_a-zA-Z0-9]{1,31}$","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].env","typeLabel":"string"}},"title":"BuildSecret","x-fern-type-name":"BuildSecret","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX]","typeLabel":"BuildSecret · object"},"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.build_secrets","typeLabel":"BuildSecret · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0","typeLabel":"DockerFileBuild · object"},{"type":"object","title":"PythonBuild","description":"Describes that we are using python to build a container image with a specific python version and pip packages installed.","required":["type","build_context_path","command"],"x-fern-type-name":"PythonBuild","properties":{"type":{"description":"+value=tfy-python-buildpack","type":"string","enum":["tfy-python-buildpack"],"default":"tfy-python-buildpack","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.type","typeLabel":"enum\u003cstring>"},"build_context_path":{"description":"Build path relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.command","typeLabel":"string | string[]"},"python_version":{"description":"Python version to run your application. Should be one of the tags listed on [Official Python Docker Page](https://hub.docker.com/_/python)","type":"string","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_version","typeLabel":"string"},"requirements_path":{"description":"Path to `requirements.txt` relative to\n`Path to build context`","type":"string","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.pip_packages","typeLabel":"string[]"},"python_dependencies":{"oneOf":[{"type":"object","title":"Pip","description":"Use pip to install requirements files and packages","required":["type"],"x-fern-type-name":"Pip","properties":{"type":{"description":"+value=pip","type":"string","enum":["pip"],"default":"pip","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.type","typeLabel":"enum\u003cstring>"},"requirements_path":{"description":"Path to `requirements.txt` relative to `Path to build context`","type":"string","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0","typeLabel":"Pip · object"},{"type":"object","title":"UV","description":"Use `uv` to setup env.\nYour build context root must contain `pyproject.toml` and `uv.lock`","required":["type"],"x-fern-type-name":"UV","properties":{"type":{"description":"+value=uv","type":"string","enum":["uv"],"default":"uv","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uv_version":{"description":"UV version to use","type":"string","default":"latest","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.uv_version","typeLabel":"string"},"sync_options":{"description":"Sync options to pass to uv command","type":"string","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.sync_options","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1","typeLabel":"UV · object"},{"type":"object","title":"Poetry","description":"Use `poetry` to setup env.\nYour build context root must contain `pyproject.toml` and `poetry.lock`","required":["type"],"x-fern-type-name":"Poetry","properties":{"type":{"description":"+value=poetry","type":"string","enum":["poetry"],"default":"poetry","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.type","typeLabel":"enum\u003cstring>"},"poetry_version":{"oneOf":[{"type":"string","description":"Poetry version to use","default":"latest","enum":["latest"],"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","description":"Poetry version to use","default":"latest","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version.oneOf.1","typeLabel":"string"}],"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version","typeLabel":"enum\u003cstring> | string"},"install_options":{"description":"install options to pass to poetry command","type":"string","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.install_options","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2","typeLabel":"Poetry · object"}],"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies","typeLabel":"Pip · object | UV · object | Poetry · object"},"apt_packages":{"description":"Debian packages to install via `apt get`.\nIn Python/YAML E.g. [\"git\", \"ffmpeg\", \"htop\"]","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.apt_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.apt_packages","typeLabel":"string[]"},"cuda_version":{"description":"Version of CUDA Toolkit and CUDNN to install in the image\nThese combinations are based off of publically available docker images on docker hub\nYou can also specify a valid tag of the form {cuda_version_number}-cudnn{cudnn_version_number}-{runtime|devel}-ubuntu{ubuntu_version}\nRefer https://hub.docker.com/r/nvidia/cuda/tags for valid set of values\nNote: We use deadsnakes ubuntu ppa to add Python that currently supports only Ubuntu 18.04, 20.04 and 22.04","type":"string","pattern":"^((\\d+\\.\\d+(\\.\\d+)?-cudnn(\\d+)?-(runtime|devel)-ubuntu\\d+\\.\\d+)|11\\.0-cudnn8|11\\.1-cudnn8|11\\.2-cudnn8|11\\.3-cudnn8|11\\.4-cudnn8|11\\.5-cudnn8|11\\.6-cudnn8|11\\.7-cudnn8|11\\.8-cudnn8|12\\.0-cudnn8|12\\.1-cudnn8|12\\.2-cudnn8|12\\.3-cudnn9|12\\.4-cudnn9|12\\.5-cudnn9|12\\.6-cudnn9|12\\.8-cudnn9|12\\.9-cudnn9)$","uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.cuda_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1","typeLabel":"PythonBuild · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0.build_spec","typeLabel":"DockerFileBuild · object | PythonBuild · object"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.5.image.oneOf.0.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.0","typeLabel":"Build · object"},{"type":"object","title":"Image","description":"Describes that we are using a pre-built image stored in a Docker Image registry","required":["type","image_uri"],"x-fern-type-name":"Image","properties":{"type":{"description":"+value=image","type":"string","enum":["image"],"default":"image","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.1.type","typeLabel":"enum\u003cstring>"},"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.1.image_uri","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.5.image.oneOf.1.docker_registry","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.5.image.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.5.image.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.5.image.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"manifest.oneOf.5.image.oneOf.1.command","typeLabel":"string | string[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.5.image.oneOf.1","typeLabel":"Image · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.5.image","typeLabel":"Build · object | Image · object"},"ports":{"description":"Expose the deployment to make it accessible over the internet or keep it private. Implement authentication to restrict access. [Docs](https://docs.truefoundry.com/docs/define-ports-and-domains)","type":"array","items":{"description":"Describes the ports the service should be exposed to.","type":"object","required":["port","protocol","expose"],"properties":{"port":{"description":"Port number to expose.","type":"integer","minimum":1,"maximum":65535,"default":80,"isRequired":true,"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].port","typeLabel":"integer"},"protocol":{"description":"Protocol for the port.","type":"string","enum":["TCP","UDP"],"default":"TCP","isRequired":true,"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].protocol","typeLabel":"enum\u003cstring>"},"expose":{"description":"Expose the port","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].expose","typeLabel":"boolean"},"app_protocol":{"description":"Application Protocol for the port.\nSelect the application protocol used by your service. For most use cases, this should be `http`(HTTP/1.1).\nIf you are running a gRPC server, select the `grpc` option.\nThis is only applicable if `expose=true`.","type":"string","enum":["http","grpc","tcp"],"default":"http","uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].app_protocol","typeLabel":"enum\u003cstring>"},"host":{"description":"Host e.g. ai.example.com, app.truefoundry.com","type":"string","pattern":"^((([a-zA-Z0-9\\-]{1,63}\\.)([a-zA-Z0-9\\-]{1,63}\\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$","uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].host","typeLabel":"string"},"path":{"description":"Path e.g. /v1/api/ml/, /v2/docs/","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].path","typeLabel":"string"},"rewrite_path_to":{"description":"Rewrite the path prefix to a different path.\nIf `path` is `/v1/api` and `rewrite_path_to` is `/api`. The URI in the HTTP request `http://0.0.0.0:8080/v1/api/houses` will be rewritten to `http://0.0.0.0:8080/api/houses` before the request is forwarded your service.\nDefaults to `/`.\nThis is only applicable if `path` is given.","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].rewrite_path_to","typeLabel":"string"},"auth":{"oneOf":[{"type":"object","title":"BasicAuthCreds","description":"Username and password","required":["type","username","password"],"x-fern-type-name":"BasicAuthCreds","properties":{"type":{"description":"+value=basic_auth","type":"string","enum":["basic_auth"],"default":"basic_auth","isRequired":true,"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"username":{"description":"Username for service auth - Username for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.0.username","typeLabel":"string"},"password":{"description":"Password for service auth - Password for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.0.password","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.0","typeLabel":"BasicAuthCreds · object"},{"type":"object","title":"JwtAuthConfig","description":"Configure JWT-based authentication using JWKS","required":["type","integration_fqn"],"x-fern-type-name":"JwtAuthConfig","properties":{"type":{"description":"+value=jwt_auth","type":"string","enum":["jwt_auth"],"default":"jwt_auth","isRequired":true,"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"integration_fqn":{"description":"FQN of the JWT Auth integration. If you can't find your integration here,\nadd it through the [Integrations](/integrations) page","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.integration_fqn","typeLabel":"string"},"enable_login":{"description":"Enable login for the service","type":"boolean","uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.enable_login","typeLabel":"boolean"},"claims":{"description":"List of key-value pairs of claims to verify in the JWT token","type":"array","items":{"type":"object","required":["key","values"],"properties":{"key":{"type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].key","typeLabel":"string"},"values":{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX]","typeLabel":"object"},"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.claims","typeLabel":"object[]"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1","typeLabel":"JwtAuthConfig · object"},{"type":"object","title":"TrueFoundryInteractiveLogin","description":"Login with truefoundry","required":["type"],"x-fern-type-name":"TrueFoundryInteractiveLogin","properties":{"type":{"description":"+value=truefoundry_oauth","type":"string","enum":["truefoundry_oauth"],"default":"truefoundry_oauth","isRequired":true,"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.2.type","typeLabel":"enum\u003cstring>"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth.oneOf.2","typeLabel":"TrueFoundryInteractiveLogin · object"}],"uniqueKey":"manifest.oneOf.5.ports.items.[INDEX].auth","typeLabel":"BasicAuthCreds · object | JwtAuthConfig · object | TrueFoundryInteractiveLogin · object"}},"title":"Port","x-fern-type-name":"Port","uniqueKey":"manifest.oneOf.5.ports.items.[INDEX]","typeLabel":"Port · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.5.ports","typeLabel":"Port · object[]"},"type":{"description":"+value=service","type":"string","enum":["service"],"default":"service","isRequired":true,"uniqueKey":"manifest.oneOf.5.type","typeLabel":"enum\u003cstring>"},"replicas":{"oneOf":[{"type":"number","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"maximum":500,"minimum":0,"isRequired":true,"uniqueKey":"manifest.oneOf.5.replicas.oneOf.0","typeLabel":"number"},{"type":"object","title":"ServiceAutoscaling","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"required":["metrics","min_replicas","max_replicas"],"x-fern-type-name":"ServiceAutoscaling","properties":{"min_replicas":{"description":"Minimum number of replicas to keep available","type":"integer","minimum":0,"default":1,"isRequired":true,"uniqueKey":"manifest.oneOf.5.replicas.oneOf.1.min_replicas","typeLabel":"integer"},"max_replicas":{"description":"Maximum number of replicas allowed for the component.","type":"integer","minimum":1,"maximum":500,"isRequired":true,"uniqueKey":"manifest.oneOf.5.replicas.oneOf.1.max_replicas","typeLabel":"integer"},"metrics":{"oneOf":[{"type":"object","title":"CPUUtilizationMetric","description":"Metrics to use for the autoscaler","required":["type","value"],"x-fern-type-name":"CPUUtilizationMetric","properties":{"type":{"description":"+value=cpu_utilization","type":"string","enum":["cpu_utilization"],"default":"cpu_utilization","isRequired":true,"uniqueKey":"manifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.0.type","typeLabel":"enum\u003cstring>"},"value":{"description":"Percentage of cpu request averaged over all replicas which the autoscaler should try to maintain","type":"integer","minimum":1,"maximum":100,"isRequired":true,"uniqueKey":"manifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.0.value","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.0","typeLabel":"CPUUtilizationMetric · object"},{"type":"object","title":"RPSMetric","description":"Metrics to use for the autoscaler","required":["type","value"],"x-fern-type-name":"RPSMetric","properties":{"type":{"description":"+value=rps","type":"string","enum":["rps"],"default":"rps","isRequired":true,"uniqueKey":"manifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.1.type","typeLabel":"enum\u003cstring>"},"value":{"description":"Average request per second averaged over all replicas that autoscaler should try to maintain","type":"number","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"manifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.1.value","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.1","typeLabel":"RPSMetric · object"},{"type":"object","title":"CronMetric","description":"Metrics to use for the autoscaler","required":["type","start","end","timezone"],"x-fern-type-name":"CronMetric","properties":{"type":{"description":"+value=cron","type":"string","enum":["cron"],"default":"cron","isRequired":true,"uniqueKey":"manifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.2.type","typeLabel":"enum\u003cstring>"},"start":{"description":"Cron expression indicating the start of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.2.start","typeLabel":"string"},"end":{"description":"Cron expression indicating the end of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.2.end","typeLabel":"string"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","default":"UTC","isRequired":true,"uniqueKey":"manifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.2.timezone","typeLabel":"string"},"desired_replicas":{"description":"Desired number of replicas during the given interval. Default value is max_replicas.","type":"integer","minimum":1,"uniqueKey":"manifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.2.desired_replicas","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.2","typeLabel":"CronMetric · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.5.replicas.oneOf.1.metrics","typeLabel":"CPUUtilizationMetric · object | RPSMetric · object | CronMetric · object"},"polling_interval":{"description":"This is the interval to check each trigger on.","type":"integer","minimum":0,"default":30,"uniqueKey":"manifest.oneOf.5.replicas.oneOf.1.polling_interval","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.5.replicas.oneOf.1","typeLabel":"ServiceAutoscaling · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.5.replicas","typeLabel":"number | ServiceAutoscaling · object"},"artifacts_download":{"description":"Download and cache models in a volume to enhance loading speeds and reduce costs by avoiding repeated downloads. [Docs](https://docs.truefoundry.com/docs/download-and-cache-models)","type":"object","required":["artifacts"],"properties":{"artifacts":{"description":"List of artifacts to be cached","type":"array","items":{"oneOf":[{"type":"object","title":"TrueFoundryArtifactSource","description":"Input for Artifact from TrueFoundry Artifact Registry","required":["type","artifact_version_fqn","download_path_env_variable"],"x-fern-type-name":"TrueFoundryArtifactSource","properties":{"type":{"description":"+value=truefoundry-artifact","type":"string","enum":["truefoundry-artifact"],"default":"truefoundry-artifact","isRequired":true,"uniqueKey":"manifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"artifact_version_fqn":{"description":"Artifact or Model Version FQN of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.0.artifact_version_fqn","typeLabel":"string"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.0.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.0","typeLabel":"TrueFoundryArtifactSource · object"},{"type":"object","title":"HuggingfaceArtifactSource","description":"Input for Artifact from Huggingface Model Hub","required":["type","model_id","revision","ignore_patterns","download_path_env_variable"],"x-fern-type-name":"HuggingfaceArtifactSource","properties":{"type":{"description":"+value=huggingface-hub","type":"string","enum":["huggingface-hub"],"default":"huggingface-hub","isRequired":true,"uniqueKey":"manifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"model_id":{"description":"Model ID of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.1.model_id","typeLabel":"string"},"revision":{"description":"Revision of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.1.revision","typeLabel":"string"},"ignore_patterns":{"description":"List of patterns to ignore while downloading the artifact","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns.items.[INDEX]","typeLabel":"string"},"default":["*.h5","*.ot","*.tflite","*.msgpack"],"isRequired":true,"uniqueKey":"manifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns","typeLabel":"string[]"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.1.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.1","typeLabel":"HuggingfaceArtifactSource · object"}],"uniqueKey":"manifest.oneOf.5.artifacts_download.artifacts.items.[INDEX]","typeLabel":"TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.5.artifacts_download.artifacts","typeLabel":"(TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object)[]"},"cache_volume":{"description":"Describes the volume that will be used to cache the models","type":"object","required":["storage_class","cache_size"],"properties":{"storage_class":{"description":"Storage class of the Volume where artifacts will be cached","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.artifacts_download.cache_volume.storage_class","typeLabel":"string"},"cache_size":{"description":"Size of the Volume (in GB) where artifacts will be cached. Should be greater than twice the size of artifacts getting cached","type":"integer","minimum":1,"maximum":10000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.5.artifacts_download.cache_volume.cache_size","typeLabel":"integer"}},"title":"ArtifactsCacheVolume","x-fern-type-name":"ArtifactsCacheVolume","uniqueKey":"manifest.oneOf.5.artifacts_download.cache_volume","typeLabel":"ArtifactsCacheVolume · object"}},"title":"ArtifactsDownload","x-fern-type-name":"ArtifactsDownload","uniqueKey":"manifest.oneOf.5.artifacts_download","typeLabel":"ArtifactsDownload · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"manifest.oneOf.5.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.5.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.5.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"manifest.oneOf.5.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.5.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.5.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.5.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.5.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"manifest.oneOf.5.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"manifest.oneOf.5.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"manifest.oneOf.5.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"manifest.oneOf.5.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.5.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.5.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.5.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.5.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.5.env","typeLabel":"object | null"},"service_account":{"type":"string","uniqueKey":"manifest.oneOf.5.service_account","typeLabel":"string"},"mounts":{"description":"Configure data to be mounted to service pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-service)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"manifest.oneOf.5.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.5.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"manifest.oneOf.5.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.5.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.5.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.5.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"manifest.oneOf.5.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.5.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"manifest.oneOf.5.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"manifest.oneOf.5.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.5.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"manifest.oneOf.5.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"manifest.oneOf.5.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"labels":{"description":"Labels","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.5.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.5.labels","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"manifest.oneOf.5.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"manifest.oneOf.5.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"manifest.oneOf.5.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"manifest.oneOf.5.kustomize","typeLabel":"Kustomize · object"},"liveness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"manifest.oneOf.5.liveness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.liveness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"manifest.oneOf.5.liveness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"manifest.oneOf.5.liveness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"manifest.oneOf.5.liveness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"manifest.oneOf.5.liveness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"manifest.oneOf.5.liveness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"manifest.oneOf.5.liveness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"manifest.oneOf.5.liveness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"manifest.oneOf.5.liveness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"manifest.oneOf.5.liveness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"manifest.oneOf.5.liveness_probe","typeLabel":"HealthProbe · object"},"readiness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"manifest.oneOf.5.readiness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.readiness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"manifest.oneOf.5.readiness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"manifest.oneOf.5.readiness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"manifest.oneOf.5.readiness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"manifest.oneOf.5.readiness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"manifest.oneOf.5.readiness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"manifest.oneOf.5.readiness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"manifest.oneOf.5.readiness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"manifest.oneOf.5.readiness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"manifest.oneOf.5.readiness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"manifest.oneOf.5.readiness_probe","typeLabel":"HealthProbe · object"},"startup_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"manifest.oneOf.5.startup_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.5.startup_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"manifest.oneOf.5.startup_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"manifest.oneOf.5.startup_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"manifest.oneOf.5.startup_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"manifest.oneOf.5.startup_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"manifest.oneOf.5.startup_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"manifest.oneOf.5.startup_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"manifest.oneOf.5.startup_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"manifest.oneOf.5.startup_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"manifest.oneOf.5.startup_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"manifest.oneOf.5.startup_probe","typeLabel":"HealthProbe · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"manifest.oneOf.5.workspace_fqn","typeLabel":"string"},"auto_shutdown":{"type":"object","required":["wait_time"],"properties":{"wait_time":{"description":"The period to wait after the last received request before scaling the replicas to 0. This value should be high enough to allow for the replicas of the service to come up to avoid premature scaling down.","type":"integer","minimum":0,"maximum":604800,"default":900,"isRequired":true,"uniqueKey":"manifest.oneOf.5.auto_shutdown.wait_time","typeLabel":"integer"}},"title":"Autoshutdown","x-fern-type-name":"Autoshutdown","uniqueKey":"manifest.oneOf.5.auto_shutdown","typeLabel":"Autoshutdown · object"},"allow_interception":{"description":"Whether to allow intercepts to be applied for this service.\nThis would inject an additional sidecar in each pod of the service. Not recommended on production","type":"boolean","default":false,"uniqueKey":"manifest.oneOf.5.allow_interception","typeLabel":"boolean"},"rollout_strategy":{"oneOf":[{"type":"object","title":"Rolling","description":"This strategy updates the pods in a rolling fashion such that a subset of the\ntotal pods are replaced with new version at one time.\nA commonly used strategy can be to have maxUnavailablePercentage close to 0 so that there\nis no downtime and keep the maxSurgePercentage to around 25%. If you are anyways running\na large number of pods, the service can often tolerate a few pods going down - so you\nmax maxUnavailablePercentage = 10 and maxSurgePercentage=0. You can read about it more\n[here](https://spot.io/resources/kubernetes-autoscaling/5-kubernetes-deployment-strategies-roll-out-like-the-pros/)","required":["type","max_unavailable_percentage","max_surge_percentage"],"x-fern-type-name":"Rolling","properties":{"type":{"description":"+value=rolling_update","type":"string","enum":["rolling_update"],"default":"rolling_update","isRequired":true,"uniqueKey":"manifest.oneOf.5.rollout_strategy.oneOf.0.type","typeLabel":"enum\u003cstring>"},"max_unavailable_percentage":{"description":"Percentage of total replicas that can be brought down at one time.\nFor a value of 25 when replicas are set to 12 this would mean minimum (25% of 12) = 3 pods might be unavailable during the deployment.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"manifest.oneOf.5.rollout_strategy.oneOf.0.max_unavailable_percentage","typeLabel":"integer"},"max_surge_percentage":{"description":"Percentage of total replicas of updated image that can be brought up over the total replicas count.\nFor a value of 25 when replicas are set to 12 this would mean (12+(25% of 12) = 15) pods might be running at one time.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"manifest.oneOf.5.rollout_strategy.oneOf.0.max_surge_percentage","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.5.rollout_strategy.oneOf.0","typeLabel":"Rolling · object"},{"type":"object","title":"Canary","description":"This strategy brings up the new release without bringing the older release down. Traffic is shifted from the older release to the newer release in a staged manner.\nThis can help with verifying the health of the new release without shifting complete traffic.","required":["type","steps"],"x-fern-type-name":"Canary","properties":{"type":{"description":"+value=canary","type":"string","enum":["canary"],"default":"canary","isRequired":true,"uniqueKey":"manifest.oneOf.5.rollout_strategy.oneOf.1.type","typeLabel":"enum\u003cstring>"},"steps":{"description":"These steps would be executed in order to enable shifting of traffic slowly from stable to canary version","type":"array","items":{"type":"object","required":["weight_percentage"],"properties":{"weight_percentage":{"description":"Percentage of total traffic to be shifted to the canary release.\nThe rest will continue to go to the existing deployment","type":"integer","minimum":0,"maximum":100,"isRequired":true,"uniqueKey":"manifest.oneOf.5.rollout_strategy.oneOf.1.steps.items.[INDEX].weight_percentage","typeLabel":"integer"},"pause_duration":{"description":"Duration for which to pause the release. The release process will wait for these seconds before proceeding to the next step.\nIf this is not set, the step will pause indefinitely on this step","type":"integer","minimum":0,"uniqueKey":"manifest.oneOf.5.rollout_strategy.oneOf.1.steps.items.[INDEX].pause_duration","typeLabel":"integer"}},"title":"CanaryStep","x-fern-type-name":"CanaryStep","uniqueKey":"manifest.oneOf.5.rollout_strategy.oneOf.1.steps.items.[INDEX]","typeLabel":"CanaryStep · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.5.rollout_strategy.oneOf.1.steps","typeLabel":"CanaryStep · object[]"}},"uniqueKey":"manifest.oneOf.5.rollout_strategy.oneOf.1","typeLabel":"Canary · object"},{"type":"object","title":"BlueGreen","description":"This strategy brings up the new release completely before switching the complete load to the new release.\nThis minimizes the time that two versions are serving traffic at the same time.","required":["type"],"x-fern-type-name":"BlueGreen","properties":{"type":{"description":"+value=blue_green","type":"string","enum":["blue_green"],"default":"blue_green","isRequired":true,"uniqueKey":"manifest.oneOf.5.rollout_strategy.oneOf.2.type","typeLabel":"enum\u003cstring>"},"enable_auto_promotion":{"description":"Promote the new release to handle the complete traffic. A manual promotion would be needed if this is disabled","type":"boolean","default":false,"uniqueKey":"manifest.oneOf.5.rollout_strategy.oneOf.2.enable_auto_promotion","typeLabel":"boolean"},"auto_promotion_seconds":{"description":"Promote the new release to handle the complete traffic after waiting for these many seconds","type":"integer","minimum":0,"default":30,"uniqueKey":"manifest.oneOf.5.rollout_strategy.oneOf.2.auto_promotion_seconds","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.5.rollout_strategy.oneOf.2","typeLabel":"BlueGreen · object"}],"uniqueKey":"manifest.oneOf.5.rollout_strategy","typeLabel":"Rolling · object | Canary · object | BlueGreen · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.5","typeLabel":"Service · object"},{"type":"object","title":"ApplicationSet","description":"Manifest of the resource to be created or updated","required":["type","name"],"x-fern-type-name":"ApplicationSet","properties":{"type":{"description":"+value=application-set","type":"string","enum":["application-set"],"default":"application-set","isRequired":true,"uniqueKey":"manifest.oneOf.6.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the application set.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.name","typeLabel":"string"},"components":{"description":"Array of components with their specifications.","type":"array","items":{"oneOf":[{"type":"object","title":"Service","description":"Describes the configuration for the service","required":["type","replicas","name","image","ports"],"x-fern-type-name":"Service","properties":{"name":{"description":"Name of the service. This uniquely identifies this service in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.name","typeLabel":"string"},"image":{"oneOf":[{"type":"object","title":"Build","description":"Describes how we build our code into a Docker image.","required":["type","build_source","build_spec"],"x-fern-type-name":"Build","properties":{"type":{"description":"+value=build","type":"string","enum":["build"],"default":"build","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.type","typeLabel":"enum\u003cstring>"},"build_source":{"oneOf":[{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.0.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.0","typeLabel":"RemoteSource · object"},{"type":"object","title":"GitSource","description":"Describes that we are using code stored in a git repository to build our image","required":["type","repo_url","ref"],"x-fern-type-name":"GitSource","properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"The repository URL.","type":"string","pattern":"^(https?://)\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.1.repo_url","typeLabel":"string"},"ref":{"description":"The commit SHA.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.1.ref","typeLabel":"string"},"branch_name":{"description":"Selecting branch will select latest commit SHA of the branch.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.1.branch_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.1","typeLabel":"GitSource · object"},{"type":"object","title":"LocalSource","description":"Describes that we are using code stored in a local developement environment to build our image","required":["type","project_root_path","local_build"],"x-fern-type-name":"LocalSource","properties":{"type":{"description":"+value=local","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"project_root_path":{"description":"Local project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.2.project_root_path","typeLabel":"string"},"local_build":{"description":"run docker build locally","type":"boolean","default":false,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.2.local_build","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.2","typeLabel":"LocalSource · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source","typeLabel":"RemoteSource · object | GitSource · object | LocalSource · object"},"build_spec":{"oneOf":[{"type":"object","title":"DockerFileBuild","description":"Describes that we are using a dockerfile to build our image","required":["type","dockerfile_path","build_context_path"],"x-fern-type-name":"DockerFileBuild","properties":{"type":{"description":"+value=dockerfile","type":"string","enum":["dockerfile"],"default":"dockerfile","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.type","typeLabel":"enum\u003cstring>"},"dockerfile_path":{"description":"The file path of the Dockerfile relative to project root path.","type":"string","default":"./Dockerfile","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.dockerfile_path","typeLabel":"string"},"build_context_path":{"description":"Build context path for the Dockerfile relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.command","typeLabel":"string | string[]"},"build_args":{"description":"Build arguments to pass to docker build","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_args.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_args","typeLabel":"object"},"build_secrets":{"description":"Build secrets you can use in run statements inside dockerfile like RUN --mount=type=secret,id=pip_index_url ... you can learn more about build secrets here https://www.truefoundry.com/docs/docker-build-secrets","type":"array","items":{"type":"object","required":["id","value"],"properties":{"id":{"description":"The ID of the build secret.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].id","typeLabel":"string"},"value":{"description":"The value of the build secret.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].value","typeLabel":"string"},"env":{"description":"The name of the environment variable to inject the secret into.","type":"string","pattern":"^[_a-zA-Z0-9][_a-zA-Z0-9]{1,31}$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].env","typeLabel":"string"}},"title":"BuildSecret","x-fern-type-name":"BuildSecret","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX]","typeLabel":"BuildSecret · object"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_secrets","typeLabel":"BuildSecret · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0","typeLabel":"DockerFileBuild · object"},{"type":"object","title":"PythonBuild","description":"Describes that we are using python to build a container image with a specific python version and pip packages installed.","required":["type","build_context_path","command"],"x-fern-type-name":"PythonBuild","properties":{"type":{"description":"+value=tfy-python-buildpack","type":"string","enum":["tfy-python-buildpack"],"default":"tfy-python-buildpack","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.type","typeLabel":"enum\u003cstring>"},"build_context_path":{"description":"Build path relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.command","typeLabel":"string | string[]"},"python_version":{"description":"Python version to run your application. Should be one of the tags listed on [Official Python Docker Page](https://hub.docker.com/_/python)","type":"string","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_version","typeLabel":"string"},"requirements_path":{"description":"Path to `requirements.txt` relative to\n`Path to build context`","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.pip_packages","typeLabel":"string[]"},"python_dependencies":{"oneOf":[{"type":"object","title":"Pip","description":"Use pip to install requirements files and packages","required":["type"],"x-fern-type-name":"Pip","properties":{"type":{"description":"+value=pip","type":"string","enum":["pip"],"default":"pip","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.type","typeLabel":"enum\u003cstring>"},"requirements_path":{"description":"Path to `requirements.txt` relative to `Path to build context`","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0","typeLabel":"Pip · object"},{"type":"object","title":"UV","description":"Use `uv` to setup env.\nYour build context root must contain `pyproject.toml` and `uv.lock`","required":["type"],"x-fern-type-name":"UV","properties":{"type":{"description":"+value=uv","type":"string","enum":["uv"],"default":"uv","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uv_version":{"description":"UV version to use","type":"string","default":"latest","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.uv_version","typeLabel":"string"},"sync_options":{"description":"Sync options to pass to uv command","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.sync_options","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1","typeLabel":"UV · object"},{"type":"object","title":"Poetry","description":"Use `poetry` to setup env.\nYour build context root must contain `pyproject.toml` and `poetry.lock`","required":["type"],"x-fern-type-name":"Poetry","properties":{"type":{"description":"+value=poetry","type":"string","enum":["poetry"],"default":"poetry","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.type","typeLabel":"enum\u003cstring>"},"poetry_version":{"type":"any","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version","typeLabel":"any"},"install_options":{"description":"install options to pass to poetry command","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.install_options","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2","typeLabel":"Poetry · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies","typeLabel":"Pip · object | UV · object | Poetry · object"},"apt_packages":{"description":"Debian packages to install via `apt get`.\nIn Python/YAML E.g. [\"git\", \"ffmpeg\", \"htop\"]","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.apt_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.apt_packages","typeLabel":"string[]"},"cuda_version":{"description":"Version of CUDA Toolkit and CUDNN to install in the image\nThese combinations are based off of publically available docker images on docker hub\nYou can also specify a valid tag of the form {cuda_version_number}-cudnn{cudnn_version_number}-{runtime|devel}-ubuntu{ubuntu_version}\nRefer https://hub.docker.com/r/nvidia/cuda/tags for valid set of values\nNote: We use deadsnakes ubuntu ppa to add Python that currently supports only Ubuntu 18.04, 20.04 and 22.04","type":"string","pattern":"^((\\d+\\.\\d+(\\.\\d+)?-cudnn(\\d+)?-(runtime|devel)-ubuntu\\d+\\.\\d+)|11\\.0-cudnn8|11\\.1-cudnn8|11\\.2-cudnn8|11\\.3-cudnn8|11\\.4-cudnn8|11\\.5-cudnn8|11\\.6-cudnn8|11\\.7-cudnn8|11\\.8-cudnn8|12\\.0-cudnn8|12\\.1-cudnn8|12\\.2-cudnn8|12\\.3-cudnn9|12\\.4-cudnn9|12\\.5-cudnn9|12\\.6-cudnn9|12\\.8-cudnn9|12\\.9-cudnn9)$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.cuda_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1","typeLabel":"PythonBuild · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec","typeLabel":"DockerFileBuild · object | PythonBuild · object"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0","typeLabel":"Build · object"},{"type":"object","title":"Image","description":"Describes that we are using a pre-built image stored in a Docker Image registry","required":["type","image_uri"],"x-fern-type-name":"Image","properties":{"type":{"description":"+value=image","type":"string","enum":["image"],"default":"image","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.1.type","typeLabel":"enum\u003cstring>"},"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.1.image_uri","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.1.docker_registry","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.1.command","typeLabel":"string | string[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.1","typeLabel":"Image · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.image","typeLabel":"Build · object | Image · object"},"ports":{"description":"Expose the deployment to make it accessible over the internet or keep it private. Implement authentication to restrict access. [Docs](https://docs.truefoundry.com/docs/define-ports-and-domains)","type":"array","items":{"description":"Describes the ports the service should be exposed to.","type":"object","required":["port","protocol","expose"],"properties":{"port":{"description":"Port number to expose.","type":"integer","minimum":1,"maximum":65535,"default":80,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].port","typeLabel":"integer"},"protocol":{"description":"Protocol for the port.","type":"string","enum":["TCP","UDP"],"default":"TCP","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].protocol","typeLabel":"enum\u003cstring>"},"expose":{"description":"Expose the port","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].expose","typeLabel":"boolean"},"app_protocol":{"description":"Application Protocol for the port.\nSelect the application protocol used by your service. For most use cases, this should be `http`(HTTP/1.1).\nIf you are running a gRPC server, select the `grpc` option.\nThis is only applicable if `expose=true`.","type":"string","enum":["http","grpc","tcp"],"default":"http","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].app_protocol","typeLabel":"enum\u003cstring>"},"host":{"description":"Host e.g. ai.example.com, app.truefoundry.com","type":"string","pattern":"^((([a-zA-Z0-9\\-]{1,63}\\.)([a-zA-Z0-9\\-]{1,63}\\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].host","typeLabel":"string"},"path":{"description":"Path e.g. /v1/api/ml/, /v2/docs/","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].path","typeLabel":"string"},"rewrite_path_to":{"description":"Rewrite the path prefix to a different path.\nIf `path` is `/v1/api` and `rewrite_path_to` is `/api`. The URI in the HTTP request `http://0.0.0.0:8080/v1/api/houses` will be rewritten to `http://0.0.0.0:8080/api/houses` before the request is forwarded your service.\nDefaults to `/`.\nThis is only applicable if `path` is given.","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].rewrite_path_to","typeLabel":"string"},"auth":{"oneOf":[{"type":"object","title":"BasicAuthCreds","description":"Username and password","required":["type","username","password"],"x-fern-type-name":"BasicAuthCreds","properties":{"type":{"description":"+value=basic_auth","type":"string","enum":["basic_auth"],"default":"basic_auth","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"username":{"description":"Username for service auth - Username for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.0.username","typeLabel":"string"},"password":{"description":"Password for service auth - Password for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.0.password","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.0","typeLabel":"BasicAuthCreds · object"},{"type":"object","title":"JwtAuthConfig","description":"Configure JWT-based authentication using JWKS","required":["type","integration_fqn"],"x-fern-type-name":"JwtAuthConfig","properties":{"type":{"description":"+value=jwt_auth","type":"string","enum":["jwt_auth"],"default":"jwt_auth","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"integration_fqn":{"description":"FQN of the JWT Auth integration. If you can't find your integration here,\nadd it through the [Integrations](/integrations) page","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.integration_fqn","typeLabel":"string"},"enable_login":{"description":"Enable login for the service","type":"boolean","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.enable_login","typeLabel":"boolean"},"claims":{"description":"List of key-value pairs of claims to verify in the JWT token","type":"array","items":{"type":"object","required":["key","values"],"properties":{"key":{"type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].key","typeLabel":"string"},"values":{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX]","typeLabel":"object"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.claims","typeLabel":"object[]"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1","typeLabel":"JwtAuthConfig · object"},{"type":"object","title":"TrueFoundryInteractiveLogin","description":"Login with truefoundry","required":["type"],"x-fern-type-name":"TrueFoundryInteractiveLogin","properties":{"type":{"description":"+value=truefoundry_oauth","type":"string","enum":["truefoundry_oauth"],"default":"truefoundry_oauth","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.2.type","typeLabel":"enum\u003cstring>"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.2","typeLabel":"TrueFoundryInteractiveLogin · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth","typeLabel":"BasicAuthCreds · object | JwtAuthConfig · object | TrueFoundryInteractiveLogin · object"}},"title":"Port","x-fern-type-name":"Port","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX]","typeLabel":"Port · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.ports","typeLabel":"Port · object[]"},"type":{"description":"+value=service","type":"string","enum":["service"],"default":"service","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"replicas":{"oneOf":[{"type":"number","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"maximum":500,"minimum":0,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.0","typeLabel":"number"},{"type":"object","title":"ServiceAutoscaling","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"required":["metrics","min_replicas","max_replicas"],"x-fern-type-name":"ServiceAutoscaling","properties":{"min_replicas":{"description":"Minimum number of replicas to keep available","type":"integer","minimum":0,"default":1,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.min_replicas","typeLabel":"integer"},"max_replicas":{"description":"Maximum number of replicas allowed for the component.","type":"integer","minimum":1,"maximum":500,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.max_replicas","typeLabel":"integer"},"metrics":{"oneOf":[{"type":"object","title":"CPUUtilizationMetric","description":"Metrics to use for the autoscaler","required":["type","value"],"x-fern-type-name":"CPUUtilizationMetric","properties":{"type":{"description":"+value=cpu_utilization","type":"string","enum":["cpu_utilization"],"default":"cpu_utilization","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.0.type","typeLabel":"enum\u003cstring>"},"value":{"description":"Percentage of cpu request averaged over all replicas which the autoscaler should try to maintain","type":"integer","minimum":1,"maximum":100,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.0.value","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.0","typeLabel":"CPUUtilizationMetric · object"},{"type":"object","title":"RPSMetric","description":"Metrics to use for the autoscaler","required":["type","value"],"x-fern-type-name":"RPSMetric","properties":{"type":{"description":"+value=rps","type":"string","enum":["rps"],"default":"rps","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.1.type","typeLabel":"enum\u003cstring>"},"value":{"description":"Average request per second averaged over all replicas that autoscaler should try to maintain","type":"number","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.1.value","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.1","typeLabel":"RPSMetric · object"},{"type":"object","title":"CronMetric","description":"Metrics to use for the autoscaler","required":["type","start","end","timezone"],"x-fern-type-name":"CronMetric","properties":{"type":{"description":"+value=cron","type":"string","enum":["cron"],"default":"cron","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.2.type","typeLabel":"enum\u003cstring>"},"start":{"description":"Cron expression indicating the start of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.2.start","typeLabel":"string"},"end":{"description":"Cron expression indicating the end of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.2.end","typeLabel":"string"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","default":"UTC","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.2.timezone","typeLabel":"string"},"desired_replicas":{"description":"Desired number of replicas during the given interval. Default value is max_replicas.","type":"integer","minimum":1,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.2.desired_replicas","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.2","typeLabel":"CronMetric · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics","typeLabel":"CPUUtilizationMetric · object | RPSMetric · object | CronMetric · object"},"polling_interval":{"description":"This is the interval to check each trigger on.","type":"integer","minimum":0,"default":30,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.polling_interval","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1","typeLabel":"ServiceAutoscaling · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas","typeLabel":"number | ServiceAutoscaling · object"},"artifacts_download":{"description":"Download and cache models in a volume to enhance loading speeds and reduce costs by avoiding repeated downloads. [Docs](https://docs.truefoundry.com/docs/download-and-cache-models)","type":"object","required":["artifacts"],"properties":{"artifacts":{"description":"List of artifacts to be cached","type":"array","items":{"oneOf":[{"type":"object","title":"TrueFoundryArtifactSource","description":"Input for Artifact from TrueFoundry Artifact Registry","required":["type","artifact_version_fqn","download_path_env_variable"],"x-fern-type-name":"TrueFoundryArtifactSource","properties":{"type":{"description":"+value=truefoundry-artifact","type":"string","enum":["truefoundry-artifact"],"default":"truefoundry-artifact","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"artifact_version_fqn":{"description":"Artifact or Model Version FQN of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.0.artifact_version_fqn","typeLabel":"string"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.0.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.0","typeLabel":"TrueFoundryArtifactSource · object"},{"type":"object","title":"HuggingfaceArtifactSource","description":"Input for Artifact from Huggingface Model Hub","required":["type","model_id","revision","ignore_patterns","download_path_env_variable"],"x-fern-type-name":"HuggingfaceArtifactSource","properties":{"type":{"description":"+value=huggingface-hub","type":"string","enum":["huggingface-hub"],"default":"huggingface-hub","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"model_id":{"description":"Model ID of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1.model_id","typeLabel":"string"},"revision":{"description":"Revision of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1.revision","typeLabel":"string"},"ignore_patterns":{"description":"List of patterns to ignore while downloading the artifact","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns.items.[INDEX]","typeLabel":"string"},"default":["*.h5","*.ot","*.tflite","*.msgpack"],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns","typeLabel":"string[]"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1","typeLabel":"HuggingfaceArtifactSource · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX]","typeLabel":"TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts","typeLabel":"(TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object)[]"},"cache_volume":{"description":"Describes the volume that will be used to cache the models","type":"object","required":["storage_class","cache_size"],"properties":{"storage_class":{"description":"Storage class of the Volume where artifacts will be cached","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.cache_volume.storage_class","typeLabel":"string"},"cache_size":{"description":"Size of the Volume (in GB) where artifacts will be cached. Should be greater than twice the size of artifacts getting cached","type":"integer","minimum":1,"maximum":10000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.cache_volume.cache_size","typeLabel":"integer"}},"title":"ArtifactsCacheVolume","x-fern-type-name":"ArtifactsCacheVolume","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.cache_volume","typeLabel":"ArtifactsCacheVolume · object"}},"title":"ArtifactsDownload","x-fern-type-name":"ArtifactsDownload","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download","typeLabel":"ArtifactsDownload · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.env","typeLabel":"object | null"},"service_account":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.service_account","typeLabel":"string"},"mounts":{"description":"Configure data to be mounted to service pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-service)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"labels":{"description":"Labels","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.labels","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.kustomize","typeLabel":"Kustomize · object"},"liveness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe","typeLabel":"HealthProbe · object"},"readiness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe","typeLabel":"HealthProbe · object"},"startup_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe","typeLabel":"HealthProbe · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.workspace_fqn","typeLabel":"string"},"auto_shutdown":{"type":"object","required":["wait_time"],"properties":{"wait_time":{"description":"The period to wait after the last received request before scaling the replicas to 0. This value should be high enough to allow for the replicas of the service to come up to avoid premature scaling down.","type":"integer","minimum":0,"maximum":604800,"default":900,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.auto_shutdown.wait_time","typeLabel":"integer"}},"title":"Autoshutdown","x-fern-type-name":"Autoshutdown","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.auto_shutdown","typeLabel":"Autoshutdown · object"},"allow_interception":{"description":"Whether to allow intercepts to be applied for this service.\nThis would inject an additional sidecar in each pod of the service. Not recommended on production","type":"boolean","default":false,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.allow_interception","typeLabel":"boolean"},"rollout_strategy":{"oneOf":[{"type":"object","title":"Rolling","description":"This strategy updates the pods in a rolling fashion such that a subset of the\ntotal pods are replaced with new version at one time.\nA commonly used strategy can be to have maxUnavailablePercentage close to 0 so that there\nis no downtime and keep the maxSurgePercentage to around 25%. If you are anyways running\na large number of pods, the service can often tolerate a few pods going down - so you\nmax maxUnavailablePercentage = 10 and maxSurgePercentage=0. You can read about it more\n[here](https://spot.io/resources/kubernetes-autoscaling/5-kubernetes-deployment-strategies-roll-out-like-the-pros/)","required":["type","max_unavailable_percentage","max_surge_percentage"],"x-fern-type-name":"Rolling","properties":{"type":{"description":"+value=rolling_update","type":"string","enum":["rolling_update"],"default":"rolling_update","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.0.type","typeLabel":"enum\u003cstring>"},"max_unavailable_percentage":{"description":"Percentage of total replicas that can be brought down at one time.\nFor a value of 25 when replicas are set to 12 this would mean minimum (25% of 12) = 3 pods might be unavailable during the deployment.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.0.max_unavailable_percentage","typeLabel":"integer"},"max_surge_percentage":{"description":"Percentage of total replicas of updated image that can be brought up over the total replicas count.\nFor a value of 25 when replicas are set to 12 this would mean (12+(25% of 12) = 15) pods might be running at one time.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.0.max_surge_percentage","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.0","typeLabel":"Rolling · object"},{"type":"object","title":"Canary","description":"This strategy brings up the new release without bringing the older release down. Traffic is shifted from the older release to the newer release in a staged manner.\nThis can help with verifying the health of the new release without shifting complete traffic.","required":["type","steps"],"x-fern-type-name":"Canary","properties":{"type":{"description":"+value=canary","type":"string","enum":["canary"],"default":"canary","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.1.type","typeLabel":"enum\u003cstring>"},"steps":{"description":"These steps would be executed in order to enable shifting of traffic slowly from stable to canary version","type":"array","items":{"type":"object","required":["weight_percentage"],"properties":{"weight_percentage":{"description":"Percentage of total traffic to be shifted to the canary release.\nThe rest will continue to go to the existing deployment","type":"integer","minimum":0,"maximum":100,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.1.steps.items.[INDEX].weight_percentage","typeLabel":"integer"},"pause_duration":{"description":"Duration for which to pause the release. The release process will wait for these seconds before proceeding to the next step.\nIf this is not set, the step will pause indefinitely on this step","type":"integer","minimum":0,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.1.steps.items.[INDEX].pause_duration","typeLabel":"integer"}},"title":"CanaryStep","x-fern-type-name":"CanaryStep","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.1.steps.items.[INDEX]","typeLabel":"CanaryStep · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.1.steps","typeLabel":"CanaryStep · object[]"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.1","typeLabel":"Canary · object"},{"type":"object","title":"BlueGreen","description":"This strategy brings up the new release completely before switching the complete load to the new release.\nThis minimizes the time that two versions are serving traffic at the same time.","required":["type"],"x-fern-type-name":"BlueGreen","properties":{"type":{"description":"+value=blue_green","type":"string","enum":["blue_green"],"default":"blue_green","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.2.type","typeLabel":"enum\u003cstring>"},"enable_auto_promotion":{"description":"Promote the new release to handle the complete traffic. A manual promotion would be needed if this is disabled","type":"boolean","default":false,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.2.enable_auto_promotion","typeLabel":"boolean"},"auto_promotion_seconds":{"description":"Promote the new release to handle the complete traffic after waiting for these many seconds","type":"integer","minimum":0,"default":30,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.2.auto_promotion_seconds","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.2","typeLabel":"BlueGreen · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy","typeLabel":"Rolling · object | Canary · object | BlueGreen · object"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.0","typeLabel":"Service · object"},{"type":"object","title":"AsyncService","description":"Describes the configuration for the async-service","required":["type","replicas","worker_config","name","image","ports"],"x-fern-type-name":"AsyncService","properties":{"name":{"description":"Name of the service. This uniquely identifies this service in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.name","typeLabel":"string"},"image":{"oneOf":[{"type":"object","title":"Build","description":"Describes how we build our code into a Docker image.","required":["type","build_source","build_spec"],"x-fern-type-name":"Build","properties":{"type":{"description":"+value=build","type":"string","enum":["build"],"default":"build","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.type","typeLabel":"enum\u003cstring>"},"build_source":{"oneOf":[{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.0.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.0","typeLabel":"RemoteSource · object"},{"type":"object","title":"GitSource","description":"Describes that we are using code stored in a git repository to build our image","required":["type","repo_url","ref"],"x-fern-type-name":"GitSource","properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"The repository URL.","type":"string","pattern":"^(https?://)\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.1.repo_url","typeLabel":"string"},"ref":{"description":"The commit SHA.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.1.ref","typeLabel":"string"},"branch_name":{"description":"Selecting branch will select latest commit SHA of the branch.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.1.branch_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.1","typeLabel":"GitSource · object"},{"type":"object","title":"LocalSource","description":"Describes that we are using code stored in a local developement environment to build our image","required":["type","project_root_path","local_build"],"x-fern-type-name":"LocalSource","properties":{"type":{"description":"+value=local","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"project_root_path":{"description":"Local project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.2.project_root_path","typeLabel":"string"},"local_build":{"description":"run docker build locally","type":"boolean","default":false,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.2.local_build","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.2","typeLabel":"LocalSource · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source","typeLabel":"RemoteSource · object | GitSource · object | LocalSource · object"},"build_spec":{"oneOf":[{"type":"object","title":"DockerFileBuild","description":"Describes that we are using a dockerfile to build our image","required":["type","dockerfile_path","build_context_path"],"x-fern-type-name":"DockerFileBuild","properties":{"type":{"description":"+value=dockerfile","type":"string","enum":["dockerfile"],"default":"dockerfile","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.type","typeLabel":"enum\u003cstring>"},"dockerfile_path":{"description":"The file path of the Dockerfile relative to project root path.","type":"string","default":"./Dockerfile","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.dockerfile_path","typeLabel":"string"},"build_context_path":{"description":"Build context path for the Dockerfile relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.command","typeLabel":"string | string[]"},"build_args":{"description":"Build arguments to pass to docker build","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_args.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_args","typeLabel":"object"},"build_secrets":{"description":"Build secrets you can use in run statements inside dockerfile like RUN --mount=type=secret,id=pip_index_url ... you can learn more about build secrets here https://www.truefoundry.com/docs/docker-build-secrets","type":"array","items":{"type":"object","required":["id","value"],"properties":{"id":{"description":"The ID of the build secret.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].id","typeLabel":"string"},"value":{"description":"The value of the build secret.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].value","typeLabel":"string"},"env":{"description":"The name of the environment variable to inject the secret into.","type":"string","pattern":"^[_a-zA-Z0-9][_a-zA-Z0-9]{1,31}$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].env","typeLabel":"string"}},"title":"BuildSecret","x-fern-type-name":"BuildSecret","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX]","typeLabel":"BuildSecret · object"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_secrets","typeLabel":"BuildSecret · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0","typeLabel":"DockerFileBuild · object"},{"type":"object","title":"PythonBuild","description":"Describes that we are using python to build a container image with a specific python version and pip packages installed.","required":["type","build_context_path","command"],"x-fern-type-name":"PythonBuild","properties":{"type":{"description":"+value=tfy-python-buildpack","type":"string","enum":["tfy-python-buildpack"],"default":"tfy-python-buildpack","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.type","typeLabel":"enum\u003cstring>"},"build_context_path":{"description":"Build path relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.command","typeLabel":"string | string[]"},"python_version":{"description":"Python version to run your application. Should be one of the tags listed on [Official Python Docker Page](https://hub.docker.com/_/python)","type":"string","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_version","typeLabel":"string"},"requirements_path":{"description":"Path to `requirements.txt` relative to\n`Path to build context`","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.pip_packages","typeLabel":"string[]"},"python_dependencies":{"oneOf":[{"type":"object","title":"Pip","description":"Use pip to install requirements files and packages","required":["type"],"x-fern-type-name":"Pip","properties":{"type":{"description":"+value=pip","type":"string","enum":["pip"],"default":"pip","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.type","typeLabel":"enum\u003cstring>"},"requirements_path":{"description":"Path to `requirements.txt` relative to `Path to build context`","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0","typeLabel":"Pip · object"},{"type":"object","title":"UV","description":"Use `uv` to setup env.\nYour build context root must contain `pyproject.toml` and `uv.lock`","required":["type"],"x-fern-type-name":"UV","properties":{"type":{"description":"+value=uv","type":"string","enum":["uv"],"default":"uv","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uv_version":{"description":"UV version to use","type":"string","default":"latest","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.uv_version","typeLabel":"string"},"sync_options":{"description":"Sync options to pass to uv command","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.sync_options","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1","typeLabel":"UV · object"},{"type":"object","title":"Poetry","description":"Use `poetry` to setup env.\nYour build context root must contain `pyproject.toml` and `poetry.lock`","required":["type"],"x-fern-type-name":"Poetry","properties":{"type":{"description":"+value=poetry","type":"string","enum":["poetry"],"default":"poetry","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.type","typeLabel":"enum\u003cstring>"},"poetry_version":{"type":"any","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version","typeLabel":"any"},"install_options":{"description":"install options to pass to poetry command","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.install_options","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2","typeLabel":"Poetry · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies","typeLabel":"Pip · object | UV · object | Poetry · object"},"apt_packages":{"description":"Debian packages to install via `apt get`.\nIn Python/YAML E.g. [\"git\", \"ffmpeg\", \"htop\"]","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.apt_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.apt_packages","typeLabel":"string[]"},"cuda_version":{"description":"Version of CUDA Toolkit and CUDNN to install in the image\nThese combinations are based off of publically available docker images on docker hub\nYou can also specify a valid tag of the form {cuda_version_number}-cudnn{cudnn_version_number}-{runtime|devel}-ubuntu{ubuntu_version}\nRefer https://hub.docker.com/r/nvidia/cuda/tags for valid set of values\nNote: We use deadsnakes ubuntu ppa to add Python that currently supports only Ubuntu 18.04, 20.04 and 22.04","type":"string","pattern":"^((\\d+\\.\\d+(\\.\\d+)?-cudnn(\\d+)?-(runtime|devel)-ubuntu\\d+\\.\\d+)|11\\.0-cudnn8|11\\.1-cudnn8|11\\.2-cudnn8|11\\.3-cudnn8|11\\.4-cudnn8|11\\.5-cudnn8|11\\.6-cudnn8|11\\.7-cudnn8|11\\.8-cudnn8|12\\.0-cudnn8|12\\.1-cudnn8|12\\.2-cudnn8|12\\.3-cudnn9|12\\.4-cudnn9|12\\.5-cudnn9|12\\.6-cudnn9|12\\.8-cudnn9|12\\.9-cudnn9)$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.cuda_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1","typeLabel":"PythonBuild · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec","typeLabel":"DockerFileBuild · object | PythonBuild · object"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0","typeLabel":"Build · object"},{"type":"object","title":"Image","description":"Describes that we are using a pre-built image stored in a Docker Image registry","required":["type","image_uri"],"x-fern-type-name":"Image","properties":{"type":{"description":"+value=image","type":"string","enum":["image"],"default":"image","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.1.type","typeLabel":"enum\u003cstring>"},"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.1.image_uri","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.1.docker_registry","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.1.command","typeLabel":"string | string[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.1","typeLabel":"Image · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.image","typeLabel":"Build · object | Image · object"},"ports":{"description":"Expose the deployment to make it accessible over the internet or keep it private. Implement authentication to restrict access. [Docs](https://docs.truefoundry.com/docs/define-ports-and-domains)","type":"array","items":{"description":"Describes the ports the service should be exposed to.","type":"object","required":["port","protocol","expose"],"properties":{"port":{"description":"Port number to expose.","type":"integer","minimum":1,"maximum":65535,"default":80,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].port","typeLabel":"integer"},"protocol":{"description":"Protocol for the port.","type":"string","enum":["TCP","UDP"],"default":"TCP","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].protocol","typeLabel":"enum\u003cstring>"},"expose":{"description":"Expose the port","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].expose","typeLabel":"boolean"},"app_protocol":{"description":"Application Protocol for the port.\nSelect the application protocol used by your service. For most use cases, this should be `http`(HTTP/1.1).\nIf you are running a gRPC server, select the `grpc` option.\nThis is only applicable if `expose=true`.","type":"string","enum":["http","grpc","tcp"],"default":"http","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].app_protocol","typeLabel":"enum\u003cstring>"},"host":{"description":"Host e.g. ai.example.com, app.truefoundry.com","type":"string","pattern":"^((([a-zA-Z0-9\\-]{1,63}\\.)([a-zA-Z0-9\\-]{1,63}\\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].host","typeLabel":"string"},"path":{"description":"Path e.g. /v1/api/ml/, /v2/docs/","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].path","typeLabel":"string"},"rewrite_path_to":{"description":"Rewrite the path prefix to a different path.\nIf `path` is `/v1/api` and `rewrite_path_to` is `/api`. The URI in the HTTP request `http://0.0.0.0:8080/v1/api/houses` will be rewritten to `http://0.0.0.0:8080/api/houses` before the request is forwarded your service.\nDefaults to `/`.\nThis is only applicable if `path` is given.","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].rewrite_path_to","typeLabel":"string"},"auth":{"oneOf":[{"type":"object","title":"BasicAuthCreds","description":"Username and password","required":["type","username","password"],"x-fern-type-name":"BasicAuthCreds","properties":{"type":{"description":"+value=basic_auth","type":"string","enum":["basic_auth"],"default":"basic_auth","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"username":{"description":"Username for service auth - Username for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.0.username","typeLabel":"string"},"password":{"description":"Password for service auth - Password for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.0.password","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.0","typeLabel":"BasicAuthCreds · object"},{"type":"object","title":"JwtAuthConfig","description":"Configure JWT-based authentication using JWKS","required":["type","integration_fqn"],"x-fern-type-name":"JwtAuthConfig","properties":{"type":{"description":"+value=jwt_auth","type":"string","enum":["jwt_auth"],"default":"jwt_auth","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"integration_fqn":{"description":"FQN of the JWT Auth integration. If you can't find your integration here,\nadd it through the [Integrations](/integrations) page","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.integration_fqn","typeLabel":"string"},"enable_login":{"description":"Enable login for the service","type":"boolean","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.enable_login","typeLabel":"boolean"},"claims":{"description":"List of key-value pairs of claims to verify in the JWT token","type":"array","items":{"type":"object","required":["key","values"],"properties":{"key":{"type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].key","typeLabel":"string"},"values":{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX]","typeLabel":"object"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.claims","typeLabel":"object[]"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1","typeLabel":"JwtAuthConfig · object"},{"type":"object","title":"TrueFoundryInteractiveLogin","description":"Login with truefoundry","required":["type"],"x-fern-type-name":"TrueFoundryInteractiveLogin","properties":{"type":{"description":"+value=truefoundry_oauth","type":"string","enum":["truefoundry_oauth"],"default":"truefoundry_oauth","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.2.type","typeLabel":"enum\u003cstring>"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.2","typeLabel":"TrueFoundryInteractiveLogin · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth","typeLabel":"BasicAuthCreds · object | JwtAuthConfig · object | TrueFoundryInteractiveLogin · object"}},"title":"Port","x-fern-type-name":"Port","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX]","typeLabel":"Port · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.ports","typeLabel":"Port · object[]"},"type":{"description":"+value=async-service","type":"string","enum":["async-service"],"default":"async-service","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"replicas":{"oneOf":[{"type":"number","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"maximum":500,"minimum":0,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.0","typeLabel":"number"},{"type":"object","title":"AsyncServiceAutoscaling","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"required":["metrics","min_replicas","max_replicas"],"x-fern-type-name":"AsyncServiceAutoscaling","properties":{"min_replicas":{"description":"Minimum number of replicas to keep available","type":"integer","minimum":0,"default":1,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.min_replicas","typeLabel":"integer"},"max_replicas":{"description":"Maximum number of replicas allowed for the component.","type":"integer","minimum":1,"maximum":500,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.max_replicas","typeLabel":"integer"},"metrics":{"oneOf":[{"type":"object","title":"SQSQueueMetricConfig","description":"Metrics to use for the autoscaler","required":["type","queue_length"],"x-fern-type-name":"SQSQueueMetricConfig","properties":{"type":{"description":"+value=sqs","type":"string","enum":["sqs"],"default":"sqs","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.0.type","typeLabel":"enum\u003cstring>"},"queue_length":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the queue and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.0.queue_length","typeLabel":"integer"},"auth":{"type":"any","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.0.auth","typeLabel":"any"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.0","typeLabel":"SQSQueueMetricConfig · object"},{"type":"object","title":"NATSMetricConfig","description":"Metrics to use for the autoscaler","required":["type","lag_threshold"],"x-fern-type-name":"NATSMetricConfig","properties":{"type":{"description":"+value=nats","type":"string","enum":["nats"],"default":"nats","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.1.type","typeLabel":"enum\u003cstring>"},"lag_threshold":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the stream and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.1.lag_threshold","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.1","typeLabel":"NATSMetricConfig · object"},{"type":"object","title":"KafkaMetricConfig","description":"Metrics to use for the autoscaler","required":["type","lag_threshold"],"x-fern-type-name":"KafkaMetricConfig","properties":{"type":{"description":"+value=kafka","type":"string","enum":["kafka"],"default":"kafka","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.2.type","typeLabel":"enum\u003cstring>"},"lag_threshold":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the stream and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.2.lag_threshold","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.2","typeLabel":"KafkaMetricConfig · object"},{"type":"object","title":"CronMetric","description":"Metrics to use for the autoscaler","required":["type","start","end","timezone"],"x-fern-type-name":"CronMetric","properties":{"type":{"description":"+value=cron","type":"string","enum":["cron"],"default":"cron","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.3.type","typeLabel":"enum\u003cstring>"},"start":{"description":"Cron expression indicating the start of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.3.start","typeLabel":"string"},"end":{"description":"Cron expression indicating the end of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.3.end","typeLabel":"string"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","default":"UTC","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.3.timezone","typeLabel":"string"},"desired_replicas":{"description":"Desired number of replicas during the given interval. Default value is max_replicas.","type":"integer","minimum":1,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.3.desired_replicas","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.3","typeLabel":"CronMetric · object"},{"type":"object","title":"AMQPMetricConfig","description":"Metrics to use for the autoscaler","required":["type","queue_length"],"x-fern-type-name":"AMQPMetricConfig","properties":{"type":{"description":"+value=amqp","type":"string","enum":["amqp"],"default":"amqp","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.4.type","typeLabel":"enum\u003cstring>"},"queue_length":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the stream and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.4.queue_length","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.4","typeLabel":"AMQPMetricConfig · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics","typeLabel":"SQSQueueMetricConfig · object | NATSMetricConfig · object | KafkaMetricConfig · object | CronMetric · object | AMQPMetricConfig · object"},"polling_interval":{"description":"This is the interval to check each trigger on.","type":"integer","minimum":0,"default":30,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.polling_interval","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1","typeLabel":"AsyncServiceAutoscaling · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas","typeLabel":"number | AsyncServiceAutoscaling · object"},"worker_config":{"type":"object","required":["input_config","num_concurrent_workers"],"properties":{"input_config":{"oneOf":[{"type":"object","title":"SQSInputConfig","description":"Describes the configuration for the input SQS worker","required":["type","queue_url","region_name","visibility_timeout","wait_time_seconds"],"x-fern-type-name":"SQSInputConfig","properties":{"type":{"description":"+value=sqs","type":"string","enum":["sqs"],"default":"sqs","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"queue_url":{"description":"AWS SQS Queue URL of Subscriber","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0.queue_url","typeLabel":"string"},"region_name":{"description":"AWS Region Name","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0.region_name","typeLabel":"string"},"visibility_timeout":{"description":"A period during which Amazon SQS prevents all consumers from receiving and processing the message. If one message takes 5 seconds to process, you can set this number to 7 or any number higher than 5. This will ensure that while the message is being processed, it will not be available to other replicas. For more information, see [here](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html)","type":"integer","minimum":1,"maximum":43200,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0.visibility_timeout","typeLabel":"integer"},"wait_time_seconds":{"description":"Wait timeout for long polling. For more information, see [here](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html)","type":"integer","minimum":1,"maximum":20,"default":19,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0.wait_time_seconds","typeLabel":"integer"},"auth":{"type":"object","required":["aws_access_key_id","aws_secret_access_key"],"properties":{"aws_access_key_id":{"description":"AWS Access Key ID","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0.auth.aws_access_key_id","typeLabel":"string"},"aws_secret_access_key":{"description":"AWS Secret Access Key for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0.auth.aws_secret_access_key","typeLabel":"string"},"aws_session_token":{"description":"AWS Session Token, only required when using temporary credentials","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0.auth.aws_session_token","typeLabel":"string"}},"title":"AWSAccessKeyAuth","x-fern-type-name":"AWSAccessKeyAuth","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0.auth","typeLabel":"AWSAccessKeyAuth · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0","typeLabel":"SQSInputConfig · object"},{"type":"object","title":"NATSInputConfig","description":"Describes the configuration for the input NATS worker","required":["type","nats_url","stream_name","root_subject","consumer_name","wait_time_seconds"],"x-fern-type-name":"NATSInputConfig","properties":{"type":{"description":"+value=nats","type":"string","enum":["nats"],"default":"nats","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nats_url":{"description":"Input NATS URL","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.nats_url","typeLabel":"string"},"stream_name":{"description":"Name of the NATS stream","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.stream_name","typeLabel":"string"},"root_subject":{"description":"Root subject of input NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-.]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.root_subject","typeLabel":"string"},"consumer_name":{"description":"Consumer name of input NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-_]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.consumer_name","typeLabel":"string"},"wait_time_seconds":{"description":"Wait timeout for long polling.","type":"integer","minimum":1,"maximum":20,"default":19,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.wait_time_seconds","typeLabel":"integer"},"nats_metrics_url":{"description":"URL for the NATS metrics endpoint. It is compulsory if you want to use NATS autoscaling.","type":"string","pattern":"^(http(s?)://).*$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.nats_metrics_url","typeLabel":"string"},"auth":{"description":"NATS User Password Authentication","type":"object","required":["account_name","user","password"],"properties":{"account_name":{"description":"Name of the NATS account","type":"string","default":"$G","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.auth.account_name","typeLabel":"string"},"user":{"description":"User for NATS authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.auth.user","typeLabel":"string"},"password":{"description":"Password for NATS authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.auth.password","typeLabel":"string"}},"title":"NATSUserPasswordAuth","x-fern-type-name":"NATSUserPasswordAuth","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.auth","typeLabel":"NATSUserPasswordAuth · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1","typeLabel":"NATSInputConfig · object"},{"type":"object","title":"KafkaInputConfig","description":"Describes the configuration for the input Kafka worker","required":["type","bootstrap_servers","topic_name","consumer_group","tls"],"x-fern-type-name":"KafkaInputConfig","properties":{"type":{"description":"+value=kafka","type":"string","enum":["kafka"],"default":"kafka","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2.type","typeLabel":"enum\u003cstring>"},"bootstrap_servers":{"description":"'Kafka Bootstrap servers - Comma separated list of Kafka brokers \"hostname:port\" to connect to for bootstrap'","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2.bootstrap_servers","typeLabel":"string"},"topic_name":{"description":"Kafka topic to subscribe to","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2.topic_name","typeLabel":"string"},"consumer_group":{"description":"The name of the consumer group to join for dynamic partition assignment","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2.consumer_group","typeLabel":"string"},"tls":{"description":"TLS configuration for SASL authentication","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2.tls","typeLabel":"boolean"},"wait_time_seconds":{"description":"Wait timeout for long polling.","type":"integer","minimum":1,"maximum":300,"default":10,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2.wait_time_seconds","typeLabel":"integer"},"auth":{"type":"object","required":["username","password"],"properties":{"username":{"description":"Username for SASL authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2.auth.username","typeLabel":"string"},"password":{"description":"Password for SASL authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2.auth.password","typeLabel":"string"}},"title":"KafkaSASLAuth","x-fern-type-name":"KafkaSASLAuth","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2.auth","typeLabel":"KafkaSASLAuth · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2","typeLabel":"KafkaInputConfig · object"},{"type":"object","title":"AMQPInputConfig","description":"Describes the configuration for the input AMQP worker","required":["type","url","queue_name","wait_time_seconds"],"x-fern-type-name":"AMQPInputConfig","properties":{"type":{"description":"+value=amqp","type":"string","enum":["amqp"],"default":"amqp","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.3.type","typeLabel":"enum\u003cstring>"},"url":{"description":"AMQP Queue URL of Subscriber","type":"string","pattern":"^(amqp|amqps?)://(?:[^:@]+(?::[^:@]+)?@)?([^/?]+)(?:/([^?]+))?/?([^?]+)?(?:\\?(.*))?$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.3.url","typeLabel":"string"},"queue_name":{"description":"AMQP Queue Name","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.3.queue_name","typeLabel":"string"},"wait_time_seconds":{"description":"Wait timeout for long polling.","type":"integer","minimum":1,"default":5,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.3.wait_time_seconds","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.3","typeLabel":"AMQPInputConfig · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config","typeLabel":"SQSInputConfig · object | NATSInputConfig · object | KafkaInputConfig · object | AMQPInputConfig · object"},"num_concurrent_workers":{"description":"Number of concurrent workers to spawn for the processor","type":"integer","minimum":1,"maximum":10,"default":1,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.num_concurrent_workers","typeLabel":"integer"},"output_config":{"oneOf":[{"type":"object","title":"SQSOutputConfig","description":"Describes the configuration for the output SQS worker","required":["type","queue_url","region_name"],"x-fern-type-name":"SQSOutputConfig","properties":{"type":{"description":"+value=sqs","type":"string","enum":["sqs"],"default":"sqs","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"queue_url":{"description":"AWS SQS Queue URL of Publisher","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.0.queue_url","typeLabel":"string"},"region_name":{"description":"AWS Region Name","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.0.region_name","typeLabel":"string"},"auth":{"type":"object","required":["aws_access_key_id","aws_secret_access_key"],"properties":{"aws_access_key_id":{"description":"AWS Access Key ID","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.0.auth.aws_access_key_id","typeLabel":"string"},"aws_secret_access_key":{"description":"AWS Secret Access Key for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.0.auth.aws_secret_access_key","typeLabel":"string"},"aws_session_token":{"description":"AWS Session Token, only required when using temporary credentials","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.0.auth.aws_session_token","typeLabel":"string"}},"title":"AWSAccessKeyAuth","x-fern-type-name":"AWSAccessKeyAuth","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.0.auth","typeLabel":"AWSAccessKeyAuth · object"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.0","typeLabel":"SQSOutputConfig · object"},{"type":"object","title":"NATSOutputConfig","description":"Describes the configuration for the output NATS worker","required":["type","nats_url","root_subject"],"x-fern-type-name":"NATSOutputConfig","properties":{"type":{"description":"+value=nats","type":"string","enum":["nats"],"default":"nats","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nats_url":{"description":"Output NATS URL","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.1.nats_url","typeLabel":"string"},"root_subject":{"description":"Root subject of output NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-.]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.1.root_subject","typeLabel":"string"},"auth":{"description":"NATS User Password Authentication","type":"object","required":["account_name","user","password"],"properties":{"account_name":{"description":"Name of the NATS account","type":"string","default":"$G","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.1.auth.account_name","typeLabel":"string"},"user":{"description":"User for NATS authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.1.auth.user","typeLabel":"string"},"password":{"description":"Password for NATS authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.1.auth.password","typeLabel":"string"}},"title":"NATSUserPasswordAuth","x-fern-type-name":"NATSUserPasswordAuth","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.1.auth","typeLabel":"NATSUserPasswordAuth · object"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.1","typeLabel":"NATSOutputConfig · object"},{"type":"object","title":"CoreNATSOutputConfig","description":"Describes the configuration for the output Core NATS worker","required":["type","nats_url","root_subject"],"x-fern-type-name":"CoreNATSOutputConfig","properties":{"type":{"description":"+value=core-nats","type":"string","enum":["core-nats"],"default":"core-nats","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.2.type","typeLabel":"enum\u003cstring>"},"nats_url":{"description":"Output NATS URL","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.2.nats_url","typeLabel":"string"},"root_subject":{"description":"Root subject of output NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-.]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.2.root_subject","typeLabel":"string"},"auth":{"description":"NATS User Password Authentication","type":"object","required":["account_name","user","password"],"properties":{"account_name":{"description":"Name of the NATS account","type":"string","default":"$G","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.2.auth.account_name","typeLabel":"string"},"user":{"description":"User for NATS authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.2.auth.user","typeLabel":"string"},"password":{"description":"Password for NATS authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.2.auth.password","typeLabel":"string"}},"title":"NATSUserPasswordAuth","x-fern-type-name":"NATSUserPasswordAuth","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.2.auth","typeLabel":"NATSUserPasswordAuth · object"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.2","typeLabel":"CoreNATSOutputConfig · object"},{"type":"object","title":"KafkaOutputConfig","description":"Describes the configuration for the output Kafka worker","required":["type","bootstrap_servers","topic_name","tls"],"x-fern-type-name":"KafkaOutputConfig","properties":{"type":{"description":"+value=kafka","type":"string","enum":["kafka"],"default":"kafka","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.3.type","typeLabel":"enum\u003cstring>"},"bootstrap_servers":{"description":"'Kafka Bootstrap servers - Comma separated list of Kafka brokers \"hostname:port\" to connect to for bootstrap'","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.3.bootstrap_servers","typeLabel":"string"},"topic_name":{"description":"Kafka topic to publish to","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.3.topic_name","typeLabel":"string"},"tls":{"description":"TLS configuration for SASL authentication","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.3.tls","typeLabel":"boolean"},"auth":{"type":"object","required":["username","password"],"properties":{"username":{"description":"Username for SASL authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.3.auth.username","typeLabel":"string"},"password":{"description":"Password for SASL authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.3.auth.password","typeLabel":"string"}},"title":"KafkaSASLAuth","x-fern-type-name":"KafkaSASLAuth","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.3.auth","typeLabel":"KafkaSASLAuth · object"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.3","typeLabel":"KafkaOutputConfig · object"},{"type":"object","title":"AMQPOutputConfig","description":"Describes the configuration for the output AMQP worker","required":["type","url","routing_key"],"x-fern-type-name":"AMQPOutputConfig","properties":{"type":{"description":"+value=amqp","type":"string","enum":["amqp"],"default":"amqp","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.4.type","typeLabel":"enum\u003cstring>"},"url":{"description":"AMQP Queue URL of Publisher","type":"string","pattern":"^(amqp|amqps?)://(?:[^:@]+(?::[^:@]+)?@)?([^/?]+)(?:/([^?]+))?/?([^?]+)?(?:\\?(.*))?$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.4.url","typeLabel":"string"},"routing_key":{"description":"AMQP Routing Key to publish to.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.4.routing_key","typeLabel":"string"},"exchange_name":{"description":"AMQP Exchange Name","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.4.exchange_name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.4","typeLabel":"AMQPOutputConfig · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config","typeLabel":"SQSOutputConfig · object | NATSOutputConfig · object | CoreNATSOutputConfig · object | KafkaOutputConfig · object | AMQPOutputConfig · object"}},"title":"WorkerConfig","x-fern-type-name":"WorkerConfig","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config","typeLabel":"WorkerConfig · object"},"artifacts_download":{"description":"Download and cache models in a volume to enhance loading speeds and reduce costs by avoiding repeated downloads. [Docs](https://docs.truefoundry.com/docs/download-and-cache-models)","type":"object","required":["artifacts"],"properties":{"artifacts":{"description":"List of artifacts to be cached","type":"array","items":{"oneOf":[{"type":"object","title":"TrueFoundryArtifactSource","description":"Input for Artifact from TrueFoundry Artifact Registry","required":["type","artifact_version_fqn","download_path_env_variable"],"x-fern-type-name":"TrueFoundryArtifactSource","properties":{"type":{"description":"+value=truefoundry-artifact","type":"string","enum":["truefoundry-artifact"],"default":"truefoundry-artifact","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"artifact_version_fqn":{"description":"Artifact or Model Version FQN of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.0.artifact_version_fqn","typeLabel":"string"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.0.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.0","typeLabel":"TrueFoundryArtifactSource · object"},{"type":"object","title":"HuggingfaceArtifactSource","description":"Input for Artifact from Huggingface Model Hub","required":["type","model_id","revision","ignore_patterns","download_path_env_variable"],"x-fern-type-name":"HuggingfaceArtifactSource","properties":{"type":{"description":"+value=huggingface-hub","type":"string","enum":["huggingface-hub"],"default":"huggingface-hub","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"model_id":{"description":"Model ID of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1.model_id","typeLabel":"string"},"revision":{"description":"Revision of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1.revision","typeLabel":"string"},"ignore_patterns":{"description":"List of patterns to ignore while downloading the artifact","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns.items.[INDEX]","typeLabel":"string"},"default":["*.h5","*.ot","*.tflite","*.msgpack"],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns","typeLabel":"string[]"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1","typeLabel":"HuggingfaceArtifactSource · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX]","typeLabel":"TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts","typeLabel":"(TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object)[]"},"cache_volume":{"description":"Describes the volume that will be used to cache the models","type":"object","required":["storage_class","cache_size"],"properties":{"storage_class":{"description":"Storage class of the Volume where artifacts will be cached","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.cache_volume.storage_class","typeLabel":"string"},"cache_size":{"description":"Size of the Volume (in GB) where artifacts will be cached. Should be greater than twice the size of artifacts getting cached","type":"integer","minimum":1,"maximum":10000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.cache_volume.cache_size","typeLabel":"integer"}},"title":"ArtifactsCacheVolume","x-fern-type-name":"ArtifactsCacheVolume","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.cache_volume","typeLabel":"ArtifactsCacheVolume · object"}},"title":"ArtifactsDownload","x-fern-type-name":"ArtifactsDownload","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download","typeLabel":"ArtifactsDownload · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.env","typeLabel":"object | null"},"service_account":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.service_account","typeLabel":"string"},"mounts":{"description":"Configure data to be mounted to service pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-service)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"labels":{"description":"Labels","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.labels","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.kustomize","typeLabel":"Kustomize · object"},"liveness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe","typeLabel":"HealthProbe · object"},"readiness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe","typeLabel":"HealthProbe · object"},"startup_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe","typeLabel":"HealthProbe · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.workspace_fqn","typeLabel":"string"},"rollout_strategy":{"description":"This strategy updates the pods in a rolling fashion such that a subset of the\ntotal pods are replaced with new version at one time.\nA commonly used strategy can be to have maxUnavailablePercentage close to 0 so that there\nis no downtime and keep the maxSurgePercentage to around 25%. If you are anyways running\na large number of pods, the service can often tolerate a few pods going down - so you\nmax maxUnavailablePercentage = 10 and maxSurgePercentage=0. You can read about it more\n[here](https://spot.io/resources/kubernetes-autoscaling/5-kubernetes-deployment-strategies-roll-out-like-the-pros/)","type":"object","required":["type","max_unavailable_percentage","max_surge_percentage"],"properties":{"type":{"description":"+value=rolling_update","type":"string","enum":["rolling_update"],"default":"rolling_update","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.rollout_strategy.type","typeLabel":"enum\u003cstring>"},"max_unavailable_percentage":{"description":"Percentage of total replicas that can be brought down at one time.\nFor a value of 25 when replicas are set to 12 this would mean minimum (25% of 12) = 3 pods might be unavailable during the deployment.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.rollout_strategy.max_unavailable_percentage","typeLabel":"integer"},"max_surge_percentage":{"description":"Percentage of total replicas of updated image that can be brought up over the total replicas count.\nFor a value of 25 when replicas are set to 12 this would mean (12+(25% of 12) = 15) pods might be running at one time.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.rollout_strategy.max_surge_percentage","typeLabel":"integer"}},"title":"Rolling","x-fern-type-name":"Rolling","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.rollout_strategy","typeLabel":"Rolling · object"},"sidecar":{"type":"object","required":["destination_url"],"properties":{"destination_url":{"description":"URL for the processor to invoke","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.sidecar.destination_url","typeLabel":"string"},"request_timeout":{"description":"Timeout for the invoke request in seconds","type":"integer","minimum":1,"default":10,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.sidecar.request_timeout","typeLabel":"integer"},"sidecar_image":{"description":"Image for the processor sidecar (This field will be deprecated in the future)","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.sidecar.sidecar_image","typeLabel":"string"}},"title":"AsyncProcessorSidecar","x-fern-type-name":"AsyncProcessorSidecar","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1.sidecar","typeLabel":"AsyncProcessorSidecar · object"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.1","typeLabel":"AsyncService · object"},{"type":"object","title":"Job","description":"Describes the configuration for the job","required":["type","name","image","trigger"],"x-fern-type-name":"Job","properties":{"type":{"description":"+value=job","type":"string","enum":["job"],"default":"job","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the job","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.name","typeLabel":"string"},"image":{"oneOf":[{"type":"object","title":"Build","description":"Describes how we build our code into a Docker image.","required":["type","build_source","build_spec"],"x-fern-type-name":"Build","properties":{"type":{"description":"+value=build","type":"string","enum":["build"],"default":"build","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.type","typeLabel":"enum\u003cstring>"},"build_source":{"oneOf":[{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.0.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.0","typeLabel":"RemoteSource · object"},{"type":"object","title":"GitSource","description":"Describes that we are using code stored in a git repository to build our image","required":["type","repo_url","ref"],"x-fern-type-name":"GitSource","properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"The repository URL.","type":"string","pattern":"^(https?://)\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.1.repo_url","typeLabel":"string"},"ref":{"description":"The commit SHA.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.1.ref","typeLabel":"string"},"branch_name":{"description":"Selecting branch will select latest commit SHA of the branch.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.1.branch_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.1","typeLabel":"GitSource · object"},{"type":"object","title":"LocalSource","description":"Describes that we are using code stored in a local developement environment to build our image","required":["type","project_root_path","local_build"],"x-fern-type-name":"LocalSource","properties":{"type":{"description":"+value=local","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"project_root_path":{"description":"Local project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.2.project_root_path","typeLabel":"string"},"local_build":{"description":"run docker build locally","type":"boolean","default":false,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.2.local_build","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.2","typeLabel":"LocalSource · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source","typeLabel":"RemoteSource · object | GitSource · object | LocalSource · object"},"build_spec":{"oneOf":[{"type":"object","title":"DockerFileBuild","description":"Describes that we are using a dockerfile to build our image","required":["type","dockerfile_path","build_context_path"],"x-fern-type-name":"DockerFileBuild","properties":{"type":{"description":"+value=dockerfile","type":"string","enum":["dockerfile"],"default":"dockerfile","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.type","typeLabel":"enum\u003cstring>"},"dockerfile_path":{"description":"The file path of the Dockerfile relative to project root path.","type":"string","default":"./Dockerfile","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.dockerfile_path","typeLabel":"string"},"build_context_path":{"description":"Build context path for the Dockerfile relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.command","typeLabel":"string | string[]"},"build_args":{"description":"Build arguments to pass to docker build","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_args.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_args","typeLabel":"object"},"build_secrets":{"description":"Build secrets you can use in run statements inside dockerfile like RUN --mount=type=secret,id=pip_index_url ... you can learn more about build secrets here https://www.truefoundry.com/docs/docker-build-secrets","type":"array","items":{"type":"object","required":["id","value"],"properties":{"id":{"description":"The ID of the build secret.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].id","typeLabel":"string"},"value":{"description":"The value of the build secret.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].value","typeLabel":"string"},"env":{"description":"The name of the environment variable to inject the secret into.","type":"string","pattern":"^[_a-zA-Z0-9][_a-zA-Z0-9]{1,31}$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].env","typeLabel":"string"}},"title":"BuildSecret","x-fern-type-name":"BuildSecret","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX]","typeLabel":"BuildSecret · object"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_secrets","typeLabel":"BuildSecret · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0","typeLabel":"DockerFileBuild · object"},{"type":"object","title":"PythonBuild","description":"Describes that we are using python to build a container image with a specific python version and pip packages installed.","required":["type","build_context_path","command"],"x-fern-type-name":"PythonBuild","properties":{"type":{"description":"+value=tfy-python-buildpack","type":"string","enum":["tfy-python-buildpack"],"default":"tfy-python-buildpack","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.type","typeLabel":"enum\u003cstring>"},"build_context_path":{"description":"Build path relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.command","typeLabel":"string | string[]"},"python_version":{"description":"Python version to run your application. Should be one of the tags listed on [Official Python Docker Page](https://hub.docker.com/_/python)","type":"string","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_version","typeLabel":"string"},"requirements_path":{"description":"Path to `requirements.txt` relative to\n`Path to build context`","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.pip_packages","typeLabel":"string[]"},"python_dependencies":{"oneOf":[{"type":"object","title":"Pip","description":"Use pip to install requirements files and packages","required":["type"],"x-fern-type-name":"Pip","properties":{"type":{"description":"+value=pip","type":"string","enum":["pip"],"default":"pip","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.type","typeLabel":"enum\u003cstring>"},"requirements_path":{"description":"Path to `requirements.txt` relative to `Path to build context`","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0","typeLabel":"Pip · object"},{"type":"object","title":"UV","description":"Use `uv` to setup env.\nYour build context root must contain `pyproject.toml` and `uv.lock`","required":["type"],"x-fern-type-name":"UV","properties":{"type":{"description":"+value=uv","type":"string","enum":["uv"],"default":"uv","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uv_version":{"description":"UV version to use","type":"string","default":"latest","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.uv_version","typeLabel":"string"},"sync_options":{"description":"Sync options to pass to uv command","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.sync_options","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1","typeLabel":"UV · object"},{"type":"object","title":"Poetry","description":"Use `poetry` to setup env.\nYour build context root must contain `pyproject.toml` and `poetry.lock`","required":["type"],"x-fern-type-name":"Poetry","properties":{"type":{"description":"+value=poetry","type":"string","enum":["poetry"],"default":"poetry","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.type","typeLabel":"enum\u003cstring>"},"poetry_version":{"type":"any","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version","typeLabel":"any"},"install_options":{"description":"install options to pass to poetry command","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.install_options","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2","typeLabel":"Poetry · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies","typeLabel":"Pip · object | UV · object | Poetry · object"},"apt_packages":{"description":"Debian packages to install via `apt get`.\nIn Python/YAML E.g. [\"git\", \"ffmpeg\", \"htop\"]","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.apt_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.apt_packages","typeLabel":"string[]"},"cuda_version":{"description":"Version of CUDA Toolkit and CUDNN to install in the image\nThese combinations are based off of publically available docker images on docker hub\nYou can also specify a valid tag of the form {cuda_version_number}-cudnn{cudnn_version_number}-{runtime|devel}-ubuntu{ubuntu_version}\nRefer https://hub.docker.com/r/nvidia/cuda/tags for valid set of values\nNote: We use deadsnakes ubuntu ppa to add Python that currently supports only Ubuntu 18.04, 20.04 and 22.04","type":"string","pattern":"^((\\d+\\.\\d+(\\.\\d+)?-cudnn(\\d+)?-(runtime|devel)-ubuntu\\d+\\.\\d+)|11\\.0-cudnn8|11\\.1-cudnn8|11\\.2-cudnn8|11\\.3-cudnn8|11\\.4-cudnn8|11\\.5-cudnn8|11\\.6-cudnn8|11\\.7-cudnn8|11\\.8-cudnn8|12\\.0-cudnn8|12\\.1-cudnn8|12\\.2-cudnn8|12\\.3-cudnn9|12\\.4-cudnn9|12\\.5-cudnn9|12\\.6-cudnn9|12\\.8-cudnn9|12\\.9-cudnn9)$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.cuda_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1","typeLabel":"PythonBuild · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec","typeLabel":"DockerFileBuild · object | PythonBuild · object"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0","typeLabel":"Build · object"},{"type":"object","title":"Image","description":"Describes that we are using a pre-built image stored in a Docker Image registry","required":["type","image_uri"],"x-fern-type-name":"Image","properties":{"type":{"description":"+value=image","type":"string","enum":["image"],"default":"image","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.1.type","typeLabel":"enum\u003cstring>"},"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.1.image_uri","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.1.docker_registry","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.1.command","typeLabel":"string | string[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.1","typeLabel":"Image · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.image","typeLabel":"Build · object | Image · object"},"trigger":{"oneOf":[{"type":"object","title":"Manual","description":"Trigger the job manually. [Docs](https://docs.truefoundry.com/docs/deploy-a-cron-job)","default":{"type":"manual"},"required":["type"],"x-fern-type-name":"Manual","properties":{"type":{"description":"+value=manual","type":"string","enum":["manual"],"default":"manual","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.trigger.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.trigger.oneOf.0","typeLabel":"Manual · object"},{"type":"object","title":"Schedule","description":"Run the job on a schedule. [Docs](https://docs.truefoundry.com/docs/deploy-a-cron-job)","default":{"type":"manual"},"required":["type","schedule","concurrency_policy"],"x-fern-type-name":"Schedule","properties":{"type":{"description":"+value=scheduled","type":"string","enum":["scheduled"],"default":"scheduled","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.trigger.oneOf.1.type","typeLabel":"enum\u003cstring>"},"schedule":{"description":"Specify the schedule for this job to be run periodically in cron format.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.trigger.oneOf.1.schedule","typeLabel":"string"},"concurrency_policy":{"description":"Choose whether to allow this job to run while another instance of the job is running, or to replace the currently running instance. Allow\nwill enable multiple instances of this job to run. Forbid will keep the current instance of the job running and stop a new instance from being run.\nReplace will terminate any currently running instance of the job and start a new one.","type":"string","enum":["Forbid","Allow","Replace"],"default":"Forbid","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.trigger.oneOf.1.concurrency_policy","typeLabel":"enum\u003cstring>"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.trigger.oneOf.1.timezone","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.trigger.oneOf.1","typeLabel":"Schedule · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.trigger","typeLabel":"Manual · object | Schedule · object"},"trigger_on_deploy":{"description":"Trigger the job after deploy immediately","type":"boolean","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.trigger_on_deploy","typeLabel":"boolean"},"params":{"description":"Configure params and pass it to create different job runs","type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"description":"Name of the param","type":"string","pattern":"^[a-z][a-z0-9\\-_]{0,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.params.items.[INDEX].name","typeLabel":"string"},"description":{"description":"Description of param","type":"string","pattern":"^.{1,127}$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.params.items.[INDEX].description","typeLabel":"string"},"default":{"description":"Default value or placeholder","type":"string","pattern":"^.{0,127}$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.params.items.[INDEX].default","typeLabel":"string"},"param_type":{"type":"string","enum":["string","ml_repo"],"default":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.params.items.[INDEX].param_type","typeLabel":"enum\u003cstring>"}},"title":"Param","x-fern-type-name":"Param","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.params.items.[INDEX]","typeLabel":"Param · object"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.params","typeLabel":"Param · object[]"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.env","typeLabel":"object | null"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.resources","typeLabel":"Resources · object"},"alerts":{"description":"Configure alerts to be sent when the job starts/fails/completes","type":"array","items":{"description":"Describes the configuration for the job alerts","type":"object","properties":{"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].to_emails.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].to_emails","typeLabel":"string[]"},"notification_target":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBot","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.2.channels","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.2","typeLabel":"SlackBot · object"},{"type":"object","title":"PagerDuty","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.3","typeLabel":"PagerDuty · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target","typeLabel":"Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object"},"on_start":{"description":"Send an alert when the job starts","type":"boolean","default":false,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].on_start","typeLabel":"boolean"},"on_completion":{"type":"boolean","default":false,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].on_completion","typeLabel":"boolean"},"on_failure":{"description":"Send an alert when the job fails","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].on_failure","typeLabel":"boolean"}},"title":"JobAlert","x-fern-type-name":"JobAlert","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX]","typeLabel":"JobAlert · object"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts","typeLabel":"JobAlert · object[]"},"retries":{"description":"Specify the maximum number of attempts to retry a job before it is marked as failed.","type":"integer","minimum":0,"maximum":10,"default":0,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.retries","typeLabel":"integer"},"timeout":{"description":"Job timeout in seconds.","type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":432000,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.timeout","typeLabel":"integer"},"concurrency_limit":{"description":"Number of runs that can run concurrently","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.concurrency_limit","typeLabel":"integer"},"service_account":{"description":"+sort=1000","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.service_account","typeLabel":"string"},"mounts":{"description":"Configure data to be mounted to job pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"labels":{"description":"Labels","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.labels","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.kustomize","typeLabel":"Kustomize · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2.workspace_fqn","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.2","typeLabel":"Job · object"},{"type":"object","title":"Helm","required":["type","name","source"],"x-fern-type-name":"Helm","properties":{"type":{"description":"+value=helm","type":"string","enum":["helm"],"default":"helm","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Helm deployment. This will be set as the release name of the chart you are deploying.","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.name","typeLabel":"string"},"source":{"oneOf":[{"type":"object","title":"HelmRepo","description":"Source helm repository","required":["type","repo_url","chart","version"],"x-fern-type-name":"HelmRepo","properties":{"type":{"description":"+value=helm-repo","type":"string","enum":["helm-repo"],"default":"helm-repo","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"Helm repository URL - Needs to be a valid URL.","type":"string","pattern":"^(((https?|wss):\\/\\/)?(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\\+.~#?\u0026\\/=]*))$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.0.repo_url","typeLabel":"string"},"chart":{"description":"The helm chart name","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._/-]*$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.0.chart","typeLabel":"string"},"version":{"description":"Helm chart version","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._+-]*$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.0.version","typeLabel":"string"},"integration_fqn":{"description":"FQN of the helm repo integration. If you can't find your integration here,\nadd it through the [Integrations](/integrations) page","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.0.integration_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.0","typeLabel":"HelmRepo · object"},{"type":"object","title":"OCIRepo","description":"OCIRepo","required":["type","oci_chart_url","version"],"x-fern-type-name":"OCIRepo","properties":{"type":{"description":"+value=oci-repo","type":"string","enum":["oci-repo"],"default":"oci-repo","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"oci_chart_url":{"description":"OCI chart URL - Need to be a valid URL.","type":"string","pattern":"^(((oci):\\/\\/)?(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\\+.~#?\u0026\\/=]*))$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.1.oci_chart_url","typeLabel":"string"},"version":{"description":"Helm chart version","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._+-]*$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.1.version","typeLabel":"string"},"integration_fqn":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations) page","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.1.integration_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.1","typeLabel":"OCIRepo · object"},{"type":"object","title":"GitHelmRepo","description":"Source helm repository","required":["type","repo_url","revision","path"],"x-fern-type-name":"GitHelmRepo","properties":{"type":{"description":"+value=git-helm-repo","type":"string","enum":["git-helm-repo"],"default":"git-helm-repo","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"Git repository URL - Needs to be a valid URL.","type":"string","pattern":"^(((https?|wss):\\/\\/)?(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\\+.~#?\u0026\\/=]*))$","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.2.repo_url","typeLabel":"string"},"revision":{"description":"Branch/Commit SHA/Tag of the git repo.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.2.revision","typeLabel":"string"},"path":{"description":"Path to the chart.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.2.path","typeLabel":"string"},"value_files":{"description":"Helm values files for overriding values in the helm chart.\nThe path is relative to the Path directory defined above","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.2.value_files.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.2.value_files","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.2","typeLabel":"GitHelmRepo · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.source","typeLabel":"HelmRepo · object | OCIRepo · object | GitHelmRepo · object"},"labels":{"description":"Add labels to base argo app","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.labels","typeLabel":"object"},"values":{"description":"Values file as block file","type":"object","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.values","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.kustomize","typeLabel":"Kustomize · object"},"ignoreDifferences":{"type":"array","items":{"type":"object","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.ignoreDifferences.items.[INDEX]","typeLabel":"object"},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.ignoreDifferences","typeLabel":"object[]"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3.workspace_fqn","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.6.components.items.[INDEX].oneOf.3","typeLabel":"Helm · object"}],"uniqueKey":"manifest.oneOf.6.components.items.[INDEX]","typeLabel":"Service · object | AsyncService · object | Job · object | Helm · object"},"uniqueKey":"manifest.oneOf.6.components","typeLabel":"(Service · object | AsyncService · object | Job · object | Helm · object)[]"},"template":{"description":"Template to be used for the application set.","type":"string","uniqueKey":"manifest.oneOf.6.template","typeLabel":"string"},"values":{"description":"Values to be used to render components for the application set.","type":"object","uniqueKey":"manifest.oneOf.6.values","typeLabel":"object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"manifest.oneOf.6.workspace_fqn","typeLabel":"string"},"convert_template_manifest":{"description":"Flag to indicate if the template manifest should be converted to TrueFoundry manifest","type":"boolean","uniqueKey":"manifest.oneOf.6.convert_template_manifest","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"manifest.oneOf.6","typeLabel":"ApplicationSet · object"},{"type":"object","title":"AwsProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","aws_account_id","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/aws","type":"string","enum":["provider-account/aws"],"default":"provider-account/aws","isRequired":true,"uniqueKey":"manifest.oneOf.7.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the AWS provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.7.name","typeLabel":"string"},"aws_account_id":{"description":"The AWS account ID.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.7.aws_account_id","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the AWS provider account.","type":"array","items":{"type":"any","uniqueKey":"manifest.oneOf.7.integrations.items.[INDEX]","typeLabel":"any"},"isRequired":true,"uniqueKey":"manifest.oneOf.7.integrations","typeLabel":"any[]"},"auth_data":{"type":"any","uniqueKey":"manifest.oneOf.7.auth_data","typeLabel":"any"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.7.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.7.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.7","typeLabel":"AwsProviderAccount · object"},{"type":"object","title":"SnowflakeProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","account_identifier","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/snowflake","type":"string","enum":["provider-account/snowflake"],"default":"provider-account/snowflake","isRequired":true,"uniqueKey":"manifest.oneOf.8.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Snowflake provider account","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.8.name","typeLabel":"string"},"account_identifier":{"description":"Snowflake account identifier, as in https://\u003caccount_identifier>.snowflakecomputing.com. Insert the identifier only, without the URL.","type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9\\-_.]*$","isRequired":true,"uniqueKey":"manifest.oneOf.8.account_identifier","typeLabel":"string"},"auth_data":{"description":"PAT","type":"object","required":["type","pat_token"],"properties":{"type":{"description":"+value=pat-token","type":"string","enum":["pat-token"],"default":"pat-token","isRequired":true,"uniqueKey":"manifest.oneOf.8.auth_data.type","typeLabel":"enum\u003cstring>"},"pat_token":{"description":"Snowflake programmatic access token. The account's network policy must allow the TrueFoundry control plane and gateway egress IPs.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.8.auth_data.pat_token","typeLabel":"string"}},"title":"SnowflakePatTokenAuth","x-fern-type-name":"SnowflakePatTokenAuth","isRequired":true,"uniqueKey":"manifest.oneOf.8.auth_data","typeLabel":"SnowflakePatTokenAuth · object"},"integrations":{"description":"List of integrations that are associated with the Snowflake provider account","type":"array","items":{"description":"Import agents from Snowflake Cortex into the TrueFoundry agent registry.","type":"object","required":["type","name"],"properties":{"type":{"description":"+value=integration/agent-registry/snowflake/cortex-agent","type":"string","enum":["integration/agent-registry/snowflake/cortex-agent"],"default":"integration/agent-registry/snowflake/cortex-agent","isRequired":true,"uniqueKey":"manifest.oneOf.8.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.8.integrations.items.[INDEX].name","typeLabel":"string"},"auth_data":{"description":"PAT","type":"object","required":["type","pat_token"],"properties":{"type":{"description":"+value=pat-token","type":"string","enum":["pat-token"],"default":"pat-token","isRequired":true,"uniqueKey":"manifest.oneOf.8.integrations.items.[INDEX].auth_data.type","typeLabel":"enum\u003cstring>"},"pat_token":{"description":"Snowflake programmatic access token. The account's network policy must allow the TrueFoundry control plane and gateway egress IPs.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.8.integrations.items.[INDEX].auth_data.pat_token","typeLabel":"string"}},"title":"SnowflakePatTokenAuth","x-fern-type-name":"SnowflakePatTokenAuth","uniqueKey":"manifest.oneOf.8.integrations.items.[INDEX].auth_data","typeLabel":"SnowflakePatTokenAuth · object"},"syncSchedule":{"description":"Cron Sync Schedule","type":"object","required":["type","expression"],"properties":{"type":{"description":"+value=cron","type":"string","enum":["cron"],"default":"cron","isRequired":true,"uniqueKey":"manifest.oneOf.8.integrations.items.[INDEX].syncSchedule.type","typeLabel":"enum\u003cstring>"},"expression":{"description":"Cron expression for when to run the sync. Minute cannot be configured.","type":"string","pattern":"^0 [^ ]+ [^ ]+ [^ ]+ [^ ]+$","isRequired":true,"uniqueKey":"manifest.oneOf.8.integrations.items.[INDEX].syncSchedule.expression","typeLabel":"string"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is UTC.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","default":"UTC","uniqueKey":"manifest.oneOf.8.integrations.items.[INDEX].syncSchedule.timezone","typeLabel":"string"}},"title":"CronSyncSchedule","x-fern-type-name":"CronSyncSchedule","uniqueKey":"manifest.oneOf.8.integrations.items.[INDEX].syncSchedule","typeLabel":"CronSyncSchedule · object"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.8.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.8.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"SnowflakeIntegrations","x-fern-type-name":"SnowflakeIntegrations","uniqueKey":"manifest.oneOf.8.integrations.items.[INDEX]","typeLabel":"SnowflakeIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.8.integrations","typeLabel":"SnowflakeIntegrations · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.8.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.8.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.8","typeLabel":"SnowflakeProviderAccount · object"},{"type":"object","title":"AzureProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/azure","type":"string","enum":["provider-account/azure"],"default":"provider-account/azure","isRequired":true,"uniqueKey":"manifest.oneOf.9.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Azure provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.9.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the Azure provider account.","type":"array","items":{"type":"any","uniqueKey":"manifest.oneOf.9.integrations.items.[INDEX]","typeLabel":"any"},"isRequired":true,"uniqueKey":"manifest.oneOf.9.integrations","typeLabel":"any[]"},"subscription_id":{"description":"The ID of the target subscription. The value must be an UUID.","type":"string","uniqueKey":"manifest.oneOf.9.subscription_id","typeLabel":"string"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.9.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.9.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.9","typeLabel":"AzureProviderAccount · object"},{"type":"object","title":"GcpProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/gcp","type":"string","enum":["provider-account/gcp"],"default":"provider-account/gcp","isRequired":true,"uniqueKey":"manifest.oneOf.10.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the GCP provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.10.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the GCP provider account.","type":"array","items":{"type":"any","uniqueKey":"manifest.oneOf.10.integrations.items.[INDEX]","typeLabel":"any"},"isRequired":true,"uniqueKey":"manifest.oneOf.10.integrations","typeLabel":"any[]"},"project_id":{"description":"The project id of the GCP account.","type":"string","uniqueKey":"manifest.oneOf.10.project_id","typeLabel":"string"},"auth_data":{"description":"GCP Key File Auth","type":"object","required":["type","key_file_content"],"properties":{"type":{"description":"+value=key-file","type":"string","enum":["key-file"],"default":"key-file","isRequired":true,"uniqueKey":"manifest.oneOf.10.auth_data.type","typeLabel":"enum\u003cstring>"},"key_file_content":{"type":"any","description":"Key File Content - Key file content must be valid JSON","isRequired":true,"uniqueKey":"manifest.oneOf.10.auth_data.key_file_content","typeLabel":"any"}},"title":"GcpKeyFileAuth","x-fern-type-name":"GcpKeyFileAuth","uniqueKey":"manifest.oneOf.10.auth_data","typeLabel":"GcpKeyFileAuth · object"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.10.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.10.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.10","typeLabel":"GcpProviderAccount · object"},{"type":"object","title":"DockerhubProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/dockerhub","type":"string","enum":["provider-account/dockerhub"],"default":"provider-account/dockerhub","isRequired":true,"uniqueKey":"manifest.oneOf.11.type","typeLabel":"enum\u003cstring>"},"name":{"description":"3 to 36 lower case characters long alphanumeric word, may contain - in between, cannot start with a number","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.11.name","typeLabel":"string"},"integrations":{"description":"+uiType=IntegrationsGroup","type":"array","items":{"description":"Dockerhub Registry","type":"object","required":["type","name","registry_url"],"properties":{"type":{"description":"+value=integration/docker-registry/dockerhub","type":"string","enum":["integration/docker-registry/dockerhub"],"default":"integration/docker-registry/dockerhub","isRequired":true,"uniqueKey":"manifest.oneOf.11.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.11.integrations.items.[INDEX].name","typeLabel":"string"},"registry_url":{"description":"Registry URL","type":"string","pattern":"^(https?:\\/\\/)?(index\\.docker\\.io|docker\\.io|registry\\.hub\\.docker\\.com)(\\/([\\w.-]+))?(\\/?)$","isRequired":true,"uniqueKey":"manifest.oneOf.11.integrations.items.[INDEX].registry_url","typeLabel":"string"},"auth_data":{"description":"Dockerhub Basic Auth","type":"object","required":["type","username","password"],"properties":{"type":{"description":"+value=basic-auth","type":"string","enum":["basic-auth"],"default":"basic-auth","isRequired":true,"uniqueKey":"manifest.oneOf.11.integrations.items.[INDEX].auth_data.type","typeLabel":"enum\u003cstring>"},"username":{"description":"+sort=100","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.11.integrations.items.[INDEX].auth_data.username","typeLabel":"string"},"password":{"description":"+sort=200\n+uiType=SecretSelect","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.11.integrations.items.[INDEX].auth_data.password","typeLabel":"string"}},"title":"DockerhubBasicAuth","x-fern-type-name":"DockerhubBasicAuth","uniqueKey":"manifest.oneOf.11.integrations.items.[INDEX].auth_data","typeLabel":"DockerhubBasicAuth · object"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.11.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.11.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"DockerhubIntegrations","x-fern-type-name":"DockerhubIntegrations","uniqueKey":"manifest.oneOf.11.integrations.items.[INDEX]","typeLabel":"DockerhubIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.11.integrations","typeLabel":"DockerhubIntegrations · object[]"},"account_name":{"description":"Account Name","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.11.account_name","typeLabel":"string"},"auth_data":{"description":"Dockerhub Basic Auth","type":"object","required":["type","username","password"],"properties":{"type":{"description":"+value=basic-auth","type":"string","enum":["basic-auth"],"default":"basic-auth","isRequired":true,"uniqueKey":"manifest.oneOf.11.auth_data.type","typeLabel":"enum\u003cstring>"},"username":{"description":"+sort=100","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.11.auth_data.username","typeLabel":"string"},"password":{"description":"+sort=200\n+uiType=SecretSelect","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.11.auth_data.password","typeLabel":"string"}},"title":"DockerhubBasicAuth","x-fern-type-name":"DockerhubBasicAuth","uniqueKey":"manifest.oneOf.11.auth_data","typeLabel":"DockerhubBasicAuth · object"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.11.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.11.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.11","typeLabel":"DockerhubProviderAccount · object"},{"type":"object","title":"BitbucketProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/bitbucket","type":"string","enum":["provider-account/bitbucket"],"default":"provider-account/bitbucket","isRequired":true,"uniqueKey":"manifest.oneOf.12.type","typeLabel":"enum\u003cstring>"},"name":{"description":"+uiProps={\"disableEdit\":true}","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.12.name","typeLabel":"string"},"integrations":{"description":"+uiType=IntegrationsGroup","type":"array","items":{"type":"any","uniqueKey":"manifest.oneOf.12.integrations.items.[INDEX]","typeLabel":"any"},"isRequired":true,"uniqueKey":"manifest.oneOf.12.integrations","typeLabel":"any[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.12.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.12.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.12","typeLabel":"BitbucketProviderAccount · object"},{"type":"object","title":"CustomProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/custom","type":"string","enum":["provider-account/custom"],"default":"provider-account/custom","isRequired":true,"uniqueKey":"manifest.oneOf.13.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.13.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the provider account.","type":"array","items":{"type":"any","uniqueKey":"manifest.oneOf.13.integrations.items.[INDEX]","typeLabel":"any"},"isRequired":true,"uniqueKey":"manifest.oneOf.13.integrations","typeLabel":"any[]"},"auth_data":{"description":"Custom Basic Auth","type":"object","required":["type","username","password"],"properties":{"type":{"description":"+value=basic-auth","type":"string","enum":["basic-auth"],"default":"basic-auth","isRequired":true,"uniqueKey":"manifest.oneOf.13.auth_data.type","typeLabel":"enum\u003cstring>"},"username":{"description":"The username for the basic authentication.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.13.auth_data.username","typeLabel":"string"},"password":{"description":"The password for the basic authentication.","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.13.auth_data.password","typeLabel":"string"}},"title":"CustomBasicAuth","x-fern-type-name":"CustomBasicAuth","uniqueKey":"manifest.oneOf.13.auth_data","typeLabel":"CustomBasicAuth · object"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.13.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.13.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.13","typeLabel":"CustomProviderAccount · object"},{"type":"object","title":"GithubProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/github","type":"string","enum":["provider-account/github"],"default":"provider-account/github","isRequired":true,"uniqueKey":"manifest.oneOf.14.type","typeLabel":"enum\u003cstring>"},"name":{"description":"+uiProps={\"disableEdit\":true}","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.14.name","typeLabel":"string"},"integrations":{"description":"+uiType=IntegrationsGroup","type":"array","items":{"description":"Github","type":"object","required":["type","name","account_name"],"properties":{"type":{"description":"+value=integration/vcs/github","type":"string","enum":["integration/vcs/github"],"default":"integration/vcs/github","isRequired":true,"uniqueKey":"manifest.oneOf.14.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"+sort=100","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.14.integrations.items.[INDEX].name","typeLabel":"string"},"account_name":{"description":"Account Name","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.14.integrations.items.[INDEX].account_name","typeLabel":"string"},"auth_data":{"type":"any","uniqueKey":"manifest.oneOf.14.integrations.items.[INDEX].auth_data","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.14.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.14.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"GithubIntegration","x-fern-type-name":"GithubIntegration","uniqueKey":"manifest.oneOf.14.integrations.items.[INDEX]","typeLabel":"GithubIntegration · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.14.integrations","typeLabel":"GithubIntegration · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.14.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.14.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.14","typeLabel":"GithubProviderAccount · object"},{"type":"object","title":"GitlabProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/gitlab","type":"string","enum":["provider-account/gitlab"],"default":"provider-account/gitlab","isRequired":true,"uniqueKey":"manifest.oneOf.15.type","typeLabel":"enum\u003cstring>"},"name":{"description":"+uiProps={\"disableEdit\":true}","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.15.name","typeLabel":"string"},"integrations":{"description":"+uiType=IntegrationsGroup","type":"array","items":{"description":"Gitlab","type":"object","required":["type","name","account_name"],"properties":{"type":{"description":"+value=integration/vcs/gitlab","type":"string","enum":["integration/vcs/gitlab"],"default":"integration/vcs/gitlab","isRequired":true,"uniqueKey":"manifest.oneOf.15.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"+sort=100","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.15.integrations.items.[INDEX].name","typeLabel":"string"},"account_name":{"description":"Account Name","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.15.integrations.items.[INDEX].account_name","typeLabel":"string"},"auth_data":{"type":"any","uniqueKey":"manifest.oneOf.15.integrations.items.[INDEX].auth_data","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.15.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.15.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"GitlabIntegration","x-fern-type-name":"GitlabIntegration","uniqueKey":"manifest.oneOf.15.integrations.items.[INDEX]","typeLabel":"GitlabIntegration · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.15.integrations","typeLabel":"GitlabIntegration · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.15.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.15.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.15","typeLabel":"GitlabProviderAccount · object"},{"type":"object","title":"JfrogProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/jfrog","type":"string","enum":["provider-account/jfrog"],"default":"provider-account/jfrog","isRequired":true,"uniqueKey":"manifest.oneOf.16.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.16.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the provider account.","type":"array","items":{"description":"Jfrog Artifacts Registry","type":"object","required":["type","name","registry_url"],"properties":{"type":{"description":"+value=integration/docker-registry/jfrog","type":"string","enum":["integration/docker-registry/jfrog"],"default":"integration/docker-registry/jfrog","isRequired":true,"uniqueKey":"manifest.oneOf.16.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.16.integrations.items.[INDEX].name","typeLabel":"string"},"registry_url":{"description":"The URL of the registry.","type":"string","pattern":"^(https?:\\/\\/)?([-a-zA-Z0-9._\\-+/]{1,256}\\.[a-zA-Z0-9()]{1,6})(\\/([\\w.-]+))?(\\/?)$","isRequired":true,"uniqueKey":"manifest.oneOf.16.integrations.items.[INDEX].registry_url","typeLabel":"string"},"auth_data":{"description":"Jfrog Basic Auth","type":"object","required":["type","username","password"],"properties":{"type":{"description":"+value=basic-auth","type":"string","enum":["basic-auth"],"default":"basic-auth","isRequired":true,"uniqueKey":"manifest.oneOf.16.integrations.items.[INDEX].auth_data.type","typeLabel":"enum\u003cstring>"},"username":{"description":"The username for the basic authentication.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.16.integrations.items.[INDEX].auth_data.username","typeLabel":"string"},"password":{"description":"The password for the basic authentication.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.16.integrations.items.[INDEX].auth_data.password","typeLabel":"string"}},"title":"JfrogBasicAuth","x-fern-type-name":"JfrogBasicAuth","uniqueKey":"manifest.oneOf.16.integrations.items.[INDEX].auth_data","typeLabel":"JfrogBasicAuth · object"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.16.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.16.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"JFrogIntegrations","x-fern-type-name":"JFrogIntegrations","uniqueKey":"manifest.oneOf.16.integrations.items.[INDEX]","typeLabel":"JFrogIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.16.integrations","typeLabel":"JFrogIntegrations · object[]"},"account_name":{"description":"The name of the JFrog account.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.16.account_name","typeLabel":"string"},"auth_data":{"description":"Jfrog Basic Auth","type":"object","required":["type","username","password"],"properties":{"type":{"description":"+value=basic-auth","type":"string","enum":["basic-auth"],"default":"basic-auth","isRequired":true,"uniqueKey":"manifest.oneOf.16.auth_data.type","typeLabel":"enum\u003cstring>"},"username":{"description":"The username for the basic authentication.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.16.auth_data.username","typeLabel":"string"},"password":{"description":"The password for the basic authentication.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.16.auth_data.password","typeLabel":"string"}},"title":"JfrogBasicAuth","x-fern-type-name":"JfrogBasicAuth","uniqueKey":"manifest.oneOf.16.auth_data","typeLabel":"JfrogBasicAuth · object"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.16.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.16.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.16","typeLabel":"JfrogProviderAccount · object"},{"type":"object","title":"TTLProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/ttl","type":"string","enum":["provider-account/ttl"],"default":"provider-account/ttl","isRequired":true,"uniqueKey":"manifest.oneOf.17.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.17.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the provider account.","type":"array","items":{"description":"TTL","type":"object","required":["type","name","registry_url"],"properties":{"type":{"description":"+value=integration/docker-registry/ttl","type":"string","enum":["integration/docker-registry/ttl"],"default":"integration/docker-registry/ttl","isRequired":true,"uniqueKey":"manifest.oneOf.17.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.17.integrations.items.[INDEX].name","typeLabel":"string"},"registry_url":{"description":"The URL of the registry.","type":"string","default":"https://ttl.sh","pattern":"^(https?:\\/\\/)?(ttl\\.sh)$","isRequired":true,"uniqueKey":"manifest.oneOf.17.integrations.items.[INDEX].registry_url","typeLabel":"string"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.17.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.17.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"TTLIntegrations","x-fern-type-name":"TTLIntegrations","uniqueKey":"manifest.oneOf.17.integrations.items.[INDEX]","typeLabel":"TTLIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.17.integrations","typeLabel":"TTLIntegrations · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.17.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.17.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.17","typeLabel":"TTLProviderAccount · object"},{"type":"object","title":"TrueFoundryProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/truefoundry","type":"string","enum":["provider-account/truefoundry"],"default":"provider-account/truefoundry","isRequired":true,"uniqueKey":"manifest.oneOf.18.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.18.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the provider account.","type":"array","items":{"description":"TrueFoundry DBSSM","type":"object","required":["type","name"],"properties":{"type":{"description":"+value=integration/secret-store/truefoundry/db","type":"string","enum":["integration/secret-store/truefoundry/db"],"default":"integration/secret-store/truefoundry/db","isRequired":true,"uniqueKey":"manifest.oneOf.18.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.18.integrations.items.[INDEX].name","typeLabel":"string"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.18.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.18.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"TrueFoundryIntegrations","x-fern-type-name":"TrueFoundryIntegrations","uniqueKey":"manifest.oneOf.18.integrations.items.[INDEX]","typeLabel":"TrueFoundryIntegrations · object"},"uniqueKey":"manifest.oneOf.18.integrations","typeLabel":"TrueFoundryIntegrations · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.18.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.18.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.18","typeLabel":"TrueFoundryProviderAccount · object"},{"type":"object","title":"QuayProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/quay","type":"string","enum":["provider-account/quay"],"default":"provider-account/quay","isRequired":true,"uniqueKey":"manifest.oneOf.19.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.19.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the provider account.","type":"array","items":{"description":"Quay Artifacts Registry","type":"object","required":["type","name","registry_url"],"properties":{"type":{"description":"+value=integration/docker-registry/quay","type":"string","enum":["integration/docker-registry/quay"],"default":"integration/docker-registry/quay","isRequired":true,"uniqueKey":"manifest.oneOf.19.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.19.integrations.items.[INDEX].name","typeLabel":"string"},"registry_url":{"description":"The URL of the registry.","type":"string","pattern":"^(https?://)?(quay\\.io)(/([\\w.-]+))?(/?)$","isRequired":true,"uniqueKey":"manifest.oneOf.19.integrations.items.[INDEX].registry_url","typeLabel":"string"},"auth_data":{"description":"Quay Basic Auth","type":"object","required":["type","username","password"],"properties":{"type":{"description":"+value=basic-auth","type":"string","enum":["basic-auth"],"default":"basic-auth","isRequired":true,"uniqueKey":"manifest.oneOf.19.integrations.items.[INDEX].auth_data.type","typeLabel":"enum\u003cstring>"},"username":{"description":"The username for the basic authentication.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.19.integrations.items.[INDEX].auth_data.username","typeLabel":"string"},"password":{"description":"The password for the basic authentication.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.19.integrations.items.[INDEX].auth_data.password","typeLabel":"string"}},"title":"QuayBasicAuth","x-fern-type-name":"QuayBasicAuth","uniqueKey":"manifest.oneOf.19.integrations.items.[INDEX].auth_data","typeLabel":"QuayBasicAuth · object"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.19.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.19.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"QuayIntegrations","x-fern-type-name":"QuayIntegrations","uniqueKey":"manifest.oneOf.19.integrations.items.[INDEX]","typeLabel":"QuayIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.19.integrations","typeLabel":"QuayIntegrations · object[]"},"account_name":{"description":"The name of the account on Quay.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.19.account_name","typeLabel":"string"},"auth_data":{"description":"Quay Basic Auth","type":"object","required":["type","username","password"],"properties":{"type":{"description":"+value=basic-auth","type":"string","enum":["basic-auth"],"default":"basic-auth","isRequired":true,"uniqueKey":"manifest.oneOf.19.auth_data.type","typeLabel":"enum\u003cstring>"},"username":{"description":"The username for the basic authentication.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.19.auth_data.username","typeLabel":"string"},"password":{"description":"The password for the basic authentication.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.19.auth_data.password","typeLabel":"string"}},"title":"QuayBasicAuth","x-fern-type-name":"QuayBasicAuth","uniqueKey":"manifest.oneOf.19.auth_data","typeLabel":"QuayBasicAuth · object"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.19.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.19.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.19","typeLabel":"QuayProviderAccount · object"},{"type":"object","title":"SlackProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/slack","type":"string","enum":["provider-account/slack"],"default":"provider-account/slack","isRequired":true,"uniqueKey":"manifest.oneOf.20.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.20.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the provider account.","type":"array","items":{"type":"any","uniqueKey":"manifest.oneOf.20.integrations.items.[INDEX]","typeLabel":"any"},"isRequired":true,"uniqueKey":"manifest.oneOf.20.integrations","typeLabel":"any[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.20.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.20.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.20","typeLabel":"SlackProviderAccount · object"},{"type":"object","title":"WebhookProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/webhook","type":"string","enum":["provider-account/webhook"],"default":"provider-account/webhook","isRequired":true,"uniqueKey":"manifest.oneOf.21.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.21.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the provider account.","type":"array","items":{"description":"Webhook Integration","type":"object","required":["type","name","webhook_url"],"properties":{"type":{"description":"+value=integration/gateway-request-logger/webhook","type":"string","enum":["integration/gateway-request-logger/webhook"],"default":"integration/gateway-request-logger/webhook","isRequired":true,"uniqueKey":"manifest.oneOf.21.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.21.integrations.items.[INDEX].name","typeLabel":"string"},"webhook_url":{"description":"The URL of the webhook endpoint","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.21.integrations.items.[INDEX].webhook_url","typeLabel":"string"},"auth_data":{"type":"any","uniqueKey":"manifest.oneOf.21.integrations.items.[INDEX].auth_data","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.21.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.21.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"WebhookIntegrations","x-fern-type-name":"WebhookIntegrations","uniqueKey":"manifest.oneOf.21.integrations.items.[INDEX]","typeLabel":"WebhookIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.21.integrations","typeLabel":"WebhookIntegrations · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.21.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.21.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.21","typeLabel":"WebhookProviderAccount · object"},{"type":"object","title":"PagerDutyProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/pagerduty","type":"string","enum":["provider-account/pagerduty"],"default":"provider-account/pagerduty","isRequired":true,"uniqueKey":"manifest.oneOf.22.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the PagerDuty provider account","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.22.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the PagerDuty provider account","type":"array","items":{"description":"PagerDuty Integration","type":"object","required":["type","name","auth_data"],"properties":{"type":{"description":"+value=integration/notification-channel/pagerduty","type":"string","enum":["integration/notification-channel/pagerduty"],"default":"integration/notification-channel/pagerduty","isRequired":true,"uniqueKey":"manifest.oneOf.22.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.22.integrations.items.[INDEX].name","typeLabel":"string"},"auth_data":{"description":"PagerDuty Credentails","type":"object","required":["type","integration_key","integration_url"],"properties":{"type":{"description":"+value=pagerduty-integration-auth","type":"string","enum":["pagerduty-integration-auth"],"default":"pagerduty-integration-auth","isRequired":true,"uniqueKey":"manifest.oneOf.22.integrations.items.[INDEX].auth_data.type","typeLabel":"enum\u003cstring>"},"integration_key":{"description":"The integration key for the PagerDuty integration","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.22.integrations.items.[INDEX].auth_data.integration_key","typeLabel":"string"},"integration_url":{"description":"The integration URL for the PagerDuty integration","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.22.integrations.items.[INDEX].auth_data.integration_url","typeLabel":"string"}},"title":"PagerDutyIntegrationKeyAuth","x-fern-type-name":"PagerDutyIntegrationKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.22.integrations.items.[INDEX].auth_data","typeLabel":"PagerDutyIntegrationKeyAuth · object"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.22.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.22.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"PagerDutyIntegrations","x-fern-type-name":"PagerDutyIntegrations","uniqueKey":"manifest.oneOf.22.integrations.items.[INDEX]","typeLabel":"PagerDutyIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.22.integrations","typeLabel":"PagerDutyIntegrations · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.22.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.22.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.22","typeLabel":"PagerDutyProviderAccount · object"},{"type":"object","title":"MSTeamsProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/ms-teams","type":"string","enum":["provider-account/ms-teams"],"default":"provider-account/ms-teams","isRequired":true,"uniqueKey":"manifest.oneOf.23.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the MS Teams provider account","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.23.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the MS Teams provider account","type":"array","items":{"description":"MS Teams Webhook Integration","type":"object","required":["type","name","auth_data"],"properties":{"type":{"description":"+value=integration/notification-channel/ms-teams-webhook","type":"string","enum":["integration/notification-channel/ms-teams-webhook"],"default":"integration/notification-channel/ms-teams-webhook","isRequired":true,"uniqueKey":"manifest.oneOf.23.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.23.integrations.items.[INDEX].name","typeLabel":"string"},"auth_data":{"description":"MS Teams Webhook Auth","type":"object","required":["type","webhook_url"],"properties":{"type":{"description":"+value=auth/ms-teams-webhook","type":"string","enum":["ms-teams-webhook"],"default":"ms-teams-webhook","isRequired":true,"uniqueKey":"manifest.oneOf.23.integrations.items.[INDEX].auth_data.type","typeLabel":"enum\u003cstring>"},"webhook_url":{"description":"The Microsoft Teams Incoming Webhook URL","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.23.integrations.items.[INDEX].auth_data.webhook_url","typeLabel":"string"}},"title":"MSTeamsWebhookAuth","x-fern-type-name":"MSTeamsWebhookAuth","isRequired":true,"uniqueKey":"manifest.oneOf.23.integrations.items.[INDEX].auth_data","typeLabel":"MSTeamsWebhookAuth · object"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.23.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.23.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"MSTeamsIntegrations","x-fern-type-name":"MSTeamsIntegrations","uniqueKey":"manifest.oneOf.23.integrations.items.[INDEX]","typeLabel":"MSTeamsIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.23.integrations","typeLabel":"MSTeamsIntegrations · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.23.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.23.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.23","typeLabel":"MSTeamsProviderAccount · object"},{"type":"object","title":"HashicorpProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/hashicorp","type":"string","enum":["provider-account/hashicorp"],"default":"provider-account/hashicorp","isRequired":true,"uniqueKey":"manifest.oneOf.24.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the HashiCorp Vault provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.24.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the HashiCorp Vault provider account.","type":"array","items":{"description":"HashiCorp Vault Integration","type":"object","required":["type","name","vault_url","kv_mount_path","auth_data"],"properties":{"type":{"description":"+value=integration/secret-store/hashicorp/vault","type":"string","enum":["integration/secret-store/hashicorp/vault"],"default":"integration/secret-store/hashicorp/vault","isRequired":true,"uniqueKey":"manifest.oneOf.24.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.24.integrations.items.[INDEX].name","typeLabel":"string"},"vault_url":{"description":"The URL of the HashiCorp Vault server (e.g., https://vault.example.com:8200).","type":"string","pattern":"^https?://[^\\s]+$","isRequired":true,"uniqueKey":"manifest.oneOf.24.integrations.items.[INDEX].vault_url","typeLabel":"string"},"kv_mount_path":{"description":"Mount path of the KV v2 engine vault to use for secrets.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.24.integrations.items.[INDEX].kv_mount_path","typeLabel":"string"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"manifest.oneOf.24.integrations.items.[INDEX].auth_data","typeLabel":"any"},"root_path":{"type":"string","pattern":"^[^/\\s]+(?:/[^/\\s]+)*$","uniqueKey":"manifest.oneOf.24.integrations.items.[INDEX].root_path","typeLabel":"string"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.24.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.24.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"},"namespace":{"description":"Namespace for vault operations, used for multi-tenancy in HashiCorp Vault Enterprise. Optional for open source Vault.","type":"string","uniqueKey":"manifest.oneOf.24.integrations.items.[INDEX].namespace","typeLabel":"string"}},"title":"HashicorpIntegrations","x-fern-type-name":"HashicorpIntegrations","uniqueKey":"manifest.oneOf.24.integrations.items.[INDEX]","typeLabel":"HashicorpIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.24.integrations","typeLabel":"HashicorpIntegrations · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.24.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.24.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.24","typeLabel":"HashicorpProviderAccount · object"},{"type":"object","title":"AwsBedrockProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","region","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/aws-bedrock","type":"string","enum":["provider-account/aws-bedrock"],"default":"provider-account/aws-bedrock","isRequired":true,"uniqueKey":"manifest.oneOf.25.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the AWS Bedrock model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.25.name","typeLabel":"string"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"manifest.oneOf.25.region","typeLabel":"enum\u003cstring>"},"integrations":{"description":"List of integrations that are associated with the AWS Bedrock model account","type":"array","items":{"description":"Bedrock Model","type":"object","required":["name","model_id","type","model_types"],"properties":{"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.25.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The AWS Bedrock model identifier or inference profile. Can be a foundation model ID (e.g., anthropic.claude-3-5-sonnet-20240620-v1:0, amazon.titan-text-express-v1), an inference profile ID (e.g., us.anthropic.claude-3-5-sonnet-20240620-v1:0), or an inference profile ARN (e.g., arn:aws:bedrock:us-east-1:123456789012:inference-profile/my-profile).","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.25.integrations.items.[INDEX].model_id","typeLabel":"string"},"type":{"description":"+value=integration/model/bedrock","type":"string","enum":["integration/model/bedrock"],"default":"integration/model/bedrock","isRequired":true,"uniqueKey":"manifest.oneOf.25.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"model_types":{"description":"Specify the type of the Bedrock model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.25.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.25.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","uniqueKey":"manifest.oneOf.25.integrations.items.[INDEX].region","typeLabel":"enum\u003cstring>"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.25.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.25.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.25.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"BedrockModel","x-fern-type-name":"BedrockModel","uniqueKey":"manifest.oneOf.25.integrations.items.[INDEX]","typeLabel":"BedrockModel · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.25.integrations","typeLabel":"BedrockModel · object[]"},"base_url":{"description":"Optional custom base URL (e.g. a VPC/PrivateLink endpoint) for AWS Bedrock. When set, requests are sent here instead of the default bedrock-runtime.{region}.amazonaws.com host.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.25.base_url","typeLabel":"string"},"auth_data":{"type":"any","uniqueKey":"manifest.oneOf.25.auth_data","typeLabel":"any"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.25.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.25.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.25.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.25.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.25.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.25.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.25.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.25","typeLabel":"AwsBedrockProviderAccount · object"},{"type":"object","title":"GoogleVertexProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","project_id","region","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/google-vertex","type":"string","enum":["provider-account/google-vertex"],"default":"provider-account/google-vertex","isRequired":true,"uniqueKey":"manifest.oneOf.26.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Google Vertex model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.26.name","typeLabel":"string"},"project_id":{"description":"The Google Cloud project ID where Vertex AI is enabled","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.26.project_id","typeLabel":"string"},"region":{"type":"string","enum":["global","africa-south1","asia-east1","asia-east2","asia-northeast1","asia-northeast2","asia-northeast3","asia-south1","asia-south2","asia-southeast1","asia-southeast2","asia-southeast3","australia-southeast1","australia-southeast2","europe-central2","europe-north1","europe-north2","europe-southwest1","europe-west1","europe-west2","europe-west3","europe-west4","europe-west6","europe-west8","europe-west9","europe-west10","europe-west12","me-central1","me-central2","me-west1","northamerica-northeast1","northamerica-northeast2","northamerica-south1","southamerica-east1","southamerica-west1","us-central1","us-east1","us-east4","us-east5","us-south1","us-west1","us-west2","us-west3","us-west4","eu","us"],"title":"VertexRegion","x-fern-type-name":"VertexRegion","isRequired":true,"uniqueKey":"manifest.oneOf.26.region","typeLabel":"enum\u003cstring>"},"integrations":{"description":"List of integrations that are associated with the Google Vertex model account","type":"array","items":{"description":"Vertex Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/vertex","type":"string","enum":["integration/model/vertex"],"default":"integration/model/vertex","isRequired":true,"uniqueKey":"manifest.oneOf.26.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.26.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Google Vertex AI model identifier (e.g., gemini-2.5-pro, anthropic/claude-sonnet-4-5@20250929). This is the model version name from Vertex AI's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.26.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Vertex AI model (e.g., chat, text, etc.)","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.26.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.26.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"region":{"type":"string","enum":["global","africa-south1","asia-east1","asia-east2","asia-northeast1","asia-northeast2","asia-northeast3","asia-south1","asia-south2","asia-southeast1","asia-southeast2","asia-southeast3","australia-southeast1","australia-southeast2","europe-central2","europe-north1","europe-north2","europe-southwest1","europe-west1","europe-west2","europe-west3","europe-west4","europe-west6","europe-west8","europe-west9","europe-west10","europe-west12","me-central1","me-central2","me-west1","northamerica-northeast1","northamerica-northeast2","northamerica-south1","southamerica-east1","southamerica-west1","us-central1","us-east1","us-east4","us-east5","us-south1","us-west1","us-west2","us-west3","us-west4","eu","us"],"title":"VertexRegion","x-fern-type-name":"VertexRegion","uniqueKey":"manifest.oneOf.26.integrations.items.[INDEX].region","typeLabel":"enum\u003cstring>"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.26.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.26.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.26.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"VertexModel","x-fern-type-name":"VertexModel","uniqueKey":"manifest.oneOf.26.integrations.items.[INDEX]","typeLabel":"VertexModel · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.26.integrations","typeLabel":"VertexModel · object[]"},"auth_data":{"type":"any","uniqueKey":"manifest.oneOf.26.auth_data","typeLabel":"any"},"base_url":{"description":"Optional custom base URL for the Vertex AI inference endpoint (e.g. a Private Service Connect / PSC endpoint for private connectivity). When set, chat/generate requests are routed here instead of the region-derived public host (\u003cregion>-aiplatform.googleapis.com). Leave empty to use the public Vertex AI API.","type":"string","pattern":"^https?:\\/\\/\\S+$","uniqueKey":"manifest.oneOf.26.base_url","typeLabel":"string"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.26.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.26.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.26.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.26.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.26.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.26.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.26.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.26","typeLabel":"GoogleVertexProviderAccount · object"},{"type":"object","title":"GoogleGeminiProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/google-gemini","type":"string","enum":["provider-account/google-gemini"],"default":"provider-account/google-gemini","isRequired":true,"uniqueKey":"manifest.oneOf.27.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Google Gemini model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.27.name","typeLabel":"string"},"auth_data":{"description":"Google Cloud API Key Auth","type":"object","required":["type","apiKey"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.27.auth_data.type","typeLabel":"enum\u003cstring>"},"apiKey":{"description":"The API key for Google Cloud authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.27.auth_data.apiKey","typeLabel":"string"}},"title":"GcpApiKeyAuth","x-fern-type-name":"GcpApiKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.27.auth_data","typeLabel":"GcpApiKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Google Gemini model account","type":"array","items":{"description":"Gemini Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/gemini","type":"string","enum":["integration/model/gemini"],"default":"integration/model/gemini","isRequired":true,"uniqueKey":"manifest.oneOf.27.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.27.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Google Gemini model identifier (e.g., gemini-2.0-flash, gemini-2.0-flash-lite-preview-02-05, gemini-2.0-flash-lite-preview-02-05). This is the standard model name from Google's Gemini API documentation.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.27.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Gemini model (e.g., chat, text, etc.)","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.27.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.27.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.27.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.27.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.27.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"GeminiModel","x-fern-type-name":"GeminiModel","uniqueKey":"manifest.oneOf.27.integrations.items.[INDEX]","typeLabel":"GeminiModel · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.27.integrations","typeLabel":"GeminiModel · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.27.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.27.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.27.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.27.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.27.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.27.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.27.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.27","typeLabel":"GoogleGeminiProviderAccount · object"},{"type":"object","title":"AzureOpenAIProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","azure_endpoint","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/azure-openai","type":"string","enum":["provider-account/azure-openai"],"default":"provider-account/azure-openai","isRequired":true,"uniqueKey":"manifest.oneOf.28.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Azure OpenAI model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.28.name","typeLabel":"string"},"azure_endpoint":{"description":"The Azure OpenAI Service endpoint URL. Should look like https://{resource-name}.openai.azure.com (a trailing /openai suffix is optional and stripped automatically)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.28.azure_endpoint","typeLabel":"string"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"manifest.oneOf.28.auth_data","typeLabel":"any"},"integrations":{"description":"List of integrations that are associated with the Azure OpenAI model account","type":"array","items":{"description":"Azure OpenAI Model","type":"object","required":["type","name","model_id","api_version","model_types"],"properties":{"type":{"description":"+value=integration/model/azure-openai","type":"string","enum":["integration/model/azure-openai"],"default":"integration/model/azure-openai","isRequired":true,"uniqueKey":"manifest.oneOf.28.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.28.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The model deployment name created in your Azure OpenAI resource (e.g., gpt-4-deployment, gpt-35-turbo-deployment). This is NOT the base model name but the deployment name you configured in Azure.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.28.integrations.items.[INDEX].model_id","typeLabel":"string"},"api_version":{"description":"The Azure OpenAI API version to use","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.28.integrations.items.[INDEX].api_version","typeLabel":"string"},"model_types":{"description":"Specify the type of the Azure OpenAI model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.28.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.28.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"foundation_model":{"description":"The foundation model identifier (e.g., gpt-4o-2024-11-20)","type":"string","uniqueKey":"manifest.oneOf.28.integrations.items.[INDEX].foundation_model","typeLabel":"string"},"deployment_type":{"description":"Global: worldwide processing; Data zone (US): US data zone processing; Data zone (EU): EU data zone processing; Standard: single-region processing","type":"string","enum":["standard","datazone_us","datazone_eu","global"],"default":"standard","uniqueKey":"manifest.oneOf.28.integrations.items.[INDEX].deployment_type","typeLabel":"enum\u003cstring>"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.28.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.28.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.28.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"AzureOpenAIModel","x-fern-type-name":"AzureOpenAIModel","uniqueKey":"manifest.oneOf.28.integrations.items.[INDEX]","typeLabel":"AzureOpenAIModel · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.28.integrations","typeLabel":"AzureOpenAIModel · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.28.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.28.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.28.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.28.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.28.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.28.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.28.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.28","typeLabel":"AzureOpenAIProviderAccount · object"},{"type":"object","title":"AzureFoundryProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/azure-foundry","type":"string","enum":["provider-account/azure-foundry"],"default":"provider-account/azure-foundry","isRequired":true,"uniqueKey":"manifest.oneOf.29.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Azure AI Foundry model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.29.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the Azure Foundry model account","type":"array","items":{"description":"Azure AI Foundry Model","type":"object","required":["type","name","auth_data","model_types","model_id","azure_endpoint"],"properties":{"type":{"description":"+value=integration/model/azure-foundry","type":"string","enum":["integration/model/azure-foundry"],"default":"integration/model/azure-foundry","isRequired":true,"uniqueKey":"manifest.oneOf.29.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.29.integrations.items.[INDEX].name","typeLabel":"string"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"manifest.oneOf.29.integrations.items.[INDEX].auth_data","typeLabel":"any"},"model_types":{"description":"Types of models supported by this Azure AI Foundry deployment","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.29.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.29.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"model_id":{"description":"The model deployment name created in your Azure AI Foundry project. This is the deployment name you configured in Azure AI Foundry, not the base model name.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.29.integrations.items.[INDEX].model_id","typeLabel":"string"},"azure_endpoint":{"description":"The Azure AI Foundry endpoint URL. Should look like https://{deployment}.{region}.models.ai.azure.com","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.29.integrations.items.[INDEX].azure_endpoint","typeLabel":"string"},"api_version":{"description":"The API version for the Azure Foundry model","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.29.integrations.items.[INDEX].api_version","typeLabel":"string"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.29.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.29.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.29.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"AzureFoundryModel","x-fern-type-name":"AzureFoundryModel","uniqueKey":"manifest.oneOf.29.integrations.items.[INDEX]","typeLabel":"AzureFoundryModel · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.29.integrations","typeLabel":"AzureFoundryModel · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.29.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.29.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.29.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.29.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.29.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.29.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.29.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.29","typeLabel":"AzureFoundryProviderAccount · object"},{"type":"object","title":"MicrosoftFoundryProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","openai_endpoint","project_endpoint","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/microsoft-foundry","type":"string","enum":["provider-account/microsoft-foundry"],"default":"provider-account/microsoft-foundry","isRequired":true,"uniqueKey":"manifest.oneOf.30.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Microsoft Foundry model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.30.name","typeLabel":"string"},"openai_endpoint":{"description":"The classic Azure OpenAI endpoint, e.g. https://{resource-name}.openai.azure.com (the /openai or /openai/v1 suffix is optional and stripped automatically).","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.30.openai_endpoint","typeLabel":"string"},"project_endpoint":{"description":"The Microsoft Foundry project endpoint, e.g. https://{resource-name}.services.ai.azure.com/api/projects/{project-name}.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.30.project_endpoint","typeLabel":"string"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"manifest.oneOf.30.auth_data","typeLabel":"any"},"integrations":{"description":"List of integrations that are associated with this model account. Populate by fetching deployed models from Azure, then reviewing and selecting which ones to add.","type":"array","items":{"description":"Microsoft Foundry Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/microsoft-foundry","type":"string","enum":["integration/model/microsoft-foundry"],"default":"integration/model/microsoft-foundry","isRequired":true,"uniqueKey":"manifest.oneOf.30.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI. Once discovered, this becomes part of the stable client-facing model identifier and should not be changed lightly.","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.30.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The model deployment name created in your Azure resource (e.g., gpt-4o-deployment). This is NOT the base model name but the deployment name you configured in Azure.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.30.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Azure model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.30.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.30.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"api_version":{"description":"Only needed if this deployment does not support Azure's OpenAI-compatible v1 API. When set, requests to this deployment use the legacy deployment-scoped API with this api-version instead of /openai/v1/.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.30.integrations.items.[INDEX].api_version","typeLabel":"string"},"foundation_model":{"description":"The foundation model identifier (e.g., gpt-4o-2024-11-20). Drives pricing lookups. Editable, since Azure's reported model string may not always match an entry in TrueFoundry's model catalogue.","type":"string","uniqueKey":"manifest.oneOf.30.integrations.items.[INDEX].foundation_model","typeLabel":"string"},"deployment_type":{"description":"Global: worldwide processing; Data zone (US): US data zone processing; Data zone (EU): EU data zone processing; Standard: single-region processing","type":"string","enum":["standard","datazone_us","datazone_eu","global"],"default":"standard","uniqueKey":"manifest.oneOf.30.integrations.items.[INDEX].deployment_type","typeLabel":"enum\u003cstring>"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.30.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.30.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.30.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"MicrosoftFoundryModel","x-fern-type-name":"MicrosoftFoundryModel","uniqueKey":"manifest.oneOf.30.integrations.items.[INDEX]","typeLabel":"MicrosoftFoundryModel · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.30.integrations","typeLabel":"MicrosoftFoundryModel · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.30.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.30.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.30.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.30.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.30.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.30.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.30.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.30","typeLabel":"MicrosoftFoundryProviderAccount · object"},{"type":"object","title":"CohereProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/cohere","type":"string","enum":["provider-account/cohere"],"default":"provider-account/cohere","isRequired":true,"uniqueKey":"manifest.oneOf.31.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Cohere model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.31.name","typeLabel":"string"},"auth_data":{"description":"Cohere API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.31.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Cohere authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.31.auth_data.api_key","typeLabel":"string"}},"title":"CohereKeyAuth","x-fern-type-name":"CohereKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.31.auth_data","typeLabel":"CohereKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Cohere model account","type":"array","items":{"description":"Cohere Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/cohere","type":"string","enum":["integration/model/cohere"],"default":"integration/model/cohere","isRequired":true,"uniqueKey":"manifest.oneOf.31.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.31.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Cohere model identifier (e.g., command-a-03-2025, command-r-03-2024, command-r-03-2024). This is the standard model id from Cohere's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.31.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Cohere model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.31.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.31.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.31.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.31.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.31.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"CohereIntegrations","x-fern-type-name":"CohereIntegrations","uniqueKey":"manifest.oneOf.31.integrations.items.[INDEX]","typeLabel":"CohereIntegrations · object"},"uniqueKey":"manifest.oneOf.31.integrations","typeLabel":"CohereIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.31.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.31.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.31.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.31.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.31.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.31.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.31.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.31","typeLabel":"CohereProviderAccount · object"},{"type":"object","title":"AI21ProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/ai21","type":"string","enum":["provider-account/ai21"],"default":"provider-account/ai21","isRequired":true,"uniqueKey":"manifest.oneOf.32.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the AI21 model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.32.name","typeLabel":"string"},"auth_data":{"description":"Authentication method using AI21 API key","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.32.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for AI21 authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.32.auth_data.api_key","typeLabel":"string"}},"title":"AI21KeyAuth","x-fern-type-name":"AI21KeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.32.auth_data","typeLabel":"AI21KeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the AI21 model account","type":"array","items":{"description":"AI21 Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/ai21","type":"string","enum":["integration/model/ai21"],"default":"integration/model/ai21","isRequired":true,"uniqueKey":"manifest.oneOf.32.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.32.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The AI21 model identifier (e.g., jamba-large, jamba-mini). This is the model name from AI21's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.32.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the AI21 model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.32.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.32.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.32.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.32.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.32.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"AI21Integrations","x-fern-type-name":"AI21Integrations","uniqueKey":"manifest.oneOf.32.integrations.items.[INDEX]","typeLabel":"AI21Integrations · object"},"uniqueKey":"manifest.oneOf.32.integrations","typeLabel":"AI21Integrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.32.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.32.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.32.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.32.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.32.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.32.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.32.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.32","typeLabel":"AI21ProviderAccount · object"},{"type":"object","title":"AnthropicProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/anthropic","type":"string","enum":["provider-account/anthropic"],"default":"provider-account/anthropic","isRequired":true,"uniqueKey":"manifest.oneOf.33.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Anthropic model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.33.name","typeLabel":"string"},"auth_data":{"description":"Authentication method using Anthropic API key","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.33.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Anthropic authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.33.auth_data.api_key","typeLabel":"string"}},"title":"AnthropicKeyAuth","x-fern-type-name":"AnthropicKeyAuth","uniqueKey":"manifest.oneOf.33.auth_data","typeLabel":"AnthropicKeyAuth · object"},"base_url":{"description":"Optional custom base URL for the Anthropic API. Must include the version path, e.g. https://my-proxy.example.com/v1. When set, requests are sent here instead of the default https://api.anthropic.com/v1.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.33.base_url","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the Anthropic model account","type":"array","items":{"description":"Anthropic Model","type":"object","required":["name","model_id","type","model_types"],"properties":{"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.33.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Anthropic model identifier (e.g., claude-3-5-sonnet-20241022, claude-3-opus-20240229, claude-3-haiku-20240307). This is the standard model name from Anthropic's API documentation.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.33.integrations.items.[INDEX].model_id","typeLabel":"string"},"type":{"description":"+value=integration/model/anthropic","type":"string","enum":["integration/model/anthropic"],"default":"integration/model/anthropic","isRequired":true,"uniqueKey":"manifest.oneOf.33.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"model_types":{"description":"Specify the type of the Anthropic model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.33.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.33.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.33.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.33.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.33.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"AnthropicIntegrations","x-fern-type-name":"AnthropicIntegrations","uniqueKey":"manifest.oneOf.33.integrations.items.[INDEX]","typeLabel":"AnthropicIntegrations · object"},"uniqueKey":"manifest.oneOf.33.integrations","typeLabel":"AnthropicIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.33.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.33.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.33.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.33.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.33.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.33.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.33.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.33","typeLabel":"AnthropicProviderAccount · object"},{"type":"object","title":"DeepinfraProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/deepinfra","type":"string","enum":["provider-account/deepinfra"],"default":"provider-account/deepinfra","isRequired":true,"uniqueKey":"manifest.oneOf.34.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the DeepInfra model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.34.name","typeLabel":"string"},"auth_data":{"description":"DeepInfra API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.34.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for DeepInfra authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.34.auth_data.api_key","typeLabel":"string"}},"title":"DeepinfraKeyAuth","x-fern-type-name":"DeepinfraKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.34.auth_data","typeLabel":"DeepinfraKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the DeepInfra model account","type":"array","items":{"description":"DeepInfra Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/deepinfra","type":"string","enum":["integration/model/deepinfra"],"default":"integration/model/deepinfra","isRequired":true,"uniqueKey":"manifest.oneOf.34.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.34.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The DeepInfra model identifier (e.g., meta-llama/Llama-3.3-70B-Instruct-Turbo, mistralai/Mistral-Small-24B-Instruct-2501). This is the full model path from DeepInfra's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.34.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the DeepInfra model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.34.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.34.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.34.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.34.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.34.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"DeepinfraIntegrations","x-fern-type-name":"DeepinfraIntegrations","uniqueKey":"manifest.oneOf.34.integrations.items.[INDEX]","typeLabel":"DeepinfraIntegrations · object"},"uniqueKey":"manifest.oneOf.34.integrations","typeLabel":"DeepinfraIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.34.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.34.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.34.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.34.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.34.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.34.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.34.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.34","typeLabel":"DeepinfraProviderAccount · object"},{"type":"object","title":"GroqProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/groq","type":"string","enum":["provider-account/groq"],"default":"provider-account/groq","isRequired":true,"uniqueKey":"manifest.oneOf.35.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Groq model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.35.name","typeLabel":"string"},"auth_data":{"description":"Groq API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.35.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Groq authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.35.auth_data.api_key","typeLabel":"string"}},"title":"GroqKeyAuth","x-fern-type-name":"GroqKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.35.auth_data","typeLabel":"GroqKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Groq model account","type":"array","items":{"description":"Groq Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/groq","type":"string","enum":["integration/model/groq"],"default":"integration/model/groq","isRequired":true,"uniqueKey":"manifest.oneOf.35.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.35.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Groq model identifier (e.g., llama-3.1-8b-instant, openai/gpt-oss-20b). This is the standard model id from Groq's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.35.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Groq model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.35.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.35.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.35.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.35.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.35.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"GroqIntegrations","x-fern-type-name":"GroqIntegrations","uniqueKey":"manifest.oneOf.35.integrations.items.[INDEX]","typeLabel":"GroqIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.35.integrations","typeLabel":"GroqIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.35.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.35.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.35.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.35.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.35.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.35.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.35.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.35","typeLabel":"GroqProviderAccount · object"},{"type":"object","title":"MistralAIProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/mistral-ai","type":"string","enum":["provider-account/mistral-ai"],"default":"provider-account/mistral-ai","isRequired":true,"uniqueKey":"manifest.oneOf.36.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Mistral AI model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.36.name","typeLabel":"string"},"auth_data":{"description":"Mistral AI API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.36.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Mistral AI authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.36.auth_data.api_key","typeLabel":"string"}},"title":"MistralAIKeyAuth","x-fern-type-name":"MistralAIKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.36.auth_data","typeLabel":"MistralAIKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Mistral AI model account","type":"array","items":{"description":"Mistral AI Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/mistral-ai","type":"string","enum":["integration/model/mistral-ai"],"default":"integration/model/mistral-ai","isRequired":true,"uniqueKey":"manifest.oneOf.36.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.36.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Mistral AI model identifier (e.g., mistral-medium-2312, ministral-8b-2410). This is the API Endpoint name from Mistral AI's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.36.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Mistral AI model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.36.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.36.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.36.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.36.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.36.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"MistralAIIntegrations","x-fern-type-name":"MistralAIIntegrations","uniqueKey":"manifest.oneOf.36.integrations.items.[INDEX]","typeLabel":"MistralAIIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.36.integrations","typeLabel":"MistralAIIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.36.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.36.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.36.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.36.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.36.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.36.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.36.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.36","typeLabel":"MistralAIProviderAccount · object"},{"type":"object","title":"PerplexityAIProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/perplexity-ai","type":"string","enum":["provider-account/perplexity-ai"],"default":"provider-account/perplexity-ai","isRequired":true,"uniqueKey":"manifest.oneOf.37.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Perplexity AI model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.37.name","typeLabel":"string"},"auth_data":{"description":"Perplexity AI API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.37.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Perplexity AI authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.37.auth_data.api_key","typeLabel":"string"}},"title":"PerplexityAIKeyAuth","x-fern-type-name":"PerplexityAIKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.37.auth_data","typeLabel":"PerplexityAIKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Perplexity AI model account","type":"array","items":{"description":"Perplexity AI Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/perplexity-ai","type":"string","enum":["integration/model/perplexity-ai"],"default":"integration/model/perplexity-ai","isRequired":true,"uniqueKey":"manifest.oneOf.37.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.37.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Perplexity AI model identifier (e.g., sonar-reasoning, sonar). This is the model name from Perplexity AI's API documentation.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.37.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Perplexity AI model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.37.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.37.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.37.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.37.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.37.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"PerplexityIntegrations","x-fern-type-name":"PerplexityIntegrations","uniqueKey":"manifest.oneOf.37.integrations.items.[INDEX]","typeLabel":"PerplexityIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.37.integrations","typeLabel":"PerplexityIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.37.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.37.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.37.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.37.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.37.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.37.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.37.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.37","typeLabel":"PerplexityAIProviderAccount · object"},{"type":"object","title":"TogetherAIProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/together-ai","type":"string","enum":["provider-account/together-ai"],"default":"provider-account/together-ai","isRequired":true,"uniqueKey":"manifest.oneOf.38.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Together AI model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.38.name","typeLabel":"string"},"auth_data":{"description":"Together AI API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.38.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Together AI authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.38.auth_data.api_key","typeLabel":"string"}},"title":"TogetherAIKeyAuth","x-fern-type-name":"TogetherAIKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.38.auth_data","typeLabel":"TogetherAIKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Together AI model account","type":"array","items":{"description":"Together AI Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/together-ai","type":"string","enum":["integration/model/together-ai"],"default":"integration/model/together-ai","isRequired":true,"uniqueKey":"manifest.oneOf.38.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.38.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Together AI model identifier (e.g., deepseek-ai/DeepSeek-R1, moonshotai/Kimi-K2-Instruct-0905). This is the model name from Together AI's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.38.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Together AI model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.38.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.38.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.38.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.38.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.38.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"TogetherAIIntegrations","x-fern-type-name":"TogetherAIIntegrations","uniqueKey":"manifest.oneOf.38.integrations.items.[INDEX]","typeLabel":"TogetherAIIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.38.integrations","typeLabel":"TogetherAIIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.38.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.38.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.38.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.38.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.38.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.38.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.38.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.38","typeLabel":"TogetherAIProviderAccount · object"},{"type":"object","title":"NomicProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/nomic","type":"string","enum":["provider-account/nomic"],"default":"provider-account/nomic","isRequired":true,"uniqueKey":"manifest.oneOf.39.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Nomic model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.39.name","typeLabel":"string"},"auth_data":{"description":"Nomic API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.39.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Nomic authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.39.auth_data.api_key","typeLabel":"string"}},"title":"NomicKeyAuth","x-fern-type-name":"NomicKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.39.auth_data","typeLabel":"NomicKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Nomic model account","type":"array","items":{"description":"Nomic Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/nomic","type":"string","enum":["integration/model/nomic"],"default":"integration/model/nomic","isRequired":true,"uniqueKey":"manifest.oneOf.39.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.39.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The name of the Nomic model to use","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.39.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Nomic model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.39.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.39.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.39.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.39.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.39.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"NomicIntegrations","x-fern-type-name":"NomicIntegrations","uniqueKey":"manifest.oneOf.39.integrations.items.[INDEX]","typeLabel":"NomicIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.39.integrations","typeLabel":"NomicIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.39.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.39.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.39.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.39.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.39.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.39.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.39.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.39","typeLabel":"NomicProviderAccount · object"},{"type":"object","title":"PalmProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/palm","type":"string","enum":["provider-account/palm"],"default":"provider-account/palm","isRequired":true,"uniqueKey":"manifest.oneOf.40.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the PaLM model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.40.name","typeLabel":"string"},"auth_data":{"description":"PaLM API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.40.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"Your PaLM API key for authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.40.auth_data.api_key","typeLabel":"string"}},"title":"PalmKeyAuth","x-fern-type-name":"PalmKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.40.auth_data","typeLabel":"PalmKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the PaLM model account","type":"array","items":{"description":"PaLM Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/palm","type":"string","enum":["integration/model/palm"],"default":"integration/model/palm","isRequired":true,"uniqueKey":"manifest.oneOf.40.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name to identify this PaLM model in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.40.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The name of the PaLM model to use","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.40.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the PaLM model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.40.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.40.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.40.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.40.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.40.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"PalmIntegrations","x-fern-type-name":"PalmIntegrations","uniqueKey":"manifest.oneOf.40.integrations.items.[INDEX]","typeLabel":"PalmIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.40.integrations","typeLabel":"PalmIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.40.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.40.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.40.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.40.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.40.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.40.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.40.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.40","typeLabel":"PalmProviderAccount · object"},{"type":"object","title":"OllamaProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/ollama","type":"string","enum":["provider-account/ollama"],"default":"provider-account/ollama","isRequired":true,"uniqueKey":"manifest.oneOf.41.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Ollama model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.41.name","typeLabel":"string"},"auth_data":{"description":"Ollama API Key Auth","type":"object","required":["custom_host"],"properties":{"custom_host":{"description":"The custom host URL for Ollama API","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.41.auth_data.custom_host","typeLabel":"string"}},"title":"OllamaKeyAuth","x-fern-type-name":"OllamaKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.41.auth_data","typeLabel":"OllamaKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Ollama model account","type":"array","items":{"description":"Ollama Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/ollama","type":"string","enum":["integration/model/ollama"],"default":"integration/model/ollama","isRequired":true,"uniqueKey":"manifest.oneOf.41.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name to identify this Ollama model in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.41.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The name of the Ollama model to use","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.41.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Ollama model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.41.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.41.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.41.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.41.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.41.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"OllamaIntegrations","x-fern-type-name":"OllamaIntegrations","uniqueKey":"manifest.oneOf.41.integrations.items.[INDEX]","typeLabel":"OllamaIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.41.integrations","typeLabel":"OllamaIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.41.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.41.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.41.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.41.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.41.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.41.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.41.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.41","typeLabel":"OllamaProviderAccount · object"},{"type":"object","title":"OpenaiProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/openai","type":"string","enum":["provider-account/openai"],"default":"provider-account/openai","isRequired":true,"uniqueKey":"manifest.oneOf.42.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the OpenAI model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.42.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the OpenAI model account","type":"array","items":{"description":"OpenAI Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/openai","type":"string","enum":["integration/model/openai"],"default":"integration/model/openai","isRequired":true,"uniqueKey":"manifest.oneOf.42.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.42.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The OpenAI model identifier (e.g., gpt-4o, gpt-4-turbo, gpt-3.5-turbo, o1-mini). This is the standard model name from OpenAI's API documentation.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.42.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the OpenAI model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.42.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.42.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.42.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.42.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.42.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"OpenAIIntegrations","x-fern-type-name":"OpenAIIntegrations","uniqueKey":"manifest.oneOf.42.integrations.items.[INDEX]","typeLabel":"OpenAIIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.42.integrations","typeLabel":"OpenAIIntegrations · object[]"},"auth_data":{"description":"OpenAI API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.42.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"Your OpenAI API key for authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.42.auth_data.api_key","typeLabel":"string"}},"title":"OpenaiApiKeyAuth","x-fern-type-name":"OpenaiApiKeyAuth","uniqueKey":"manifest.oneOf.42.auth_data","typeLabel":"OpenaiApiKeyAuth · object"},"base_url":{"description":"Optional custom base URL for OpenAI API","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.42.base_url","typeLabel":"string"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.42.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.42.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.42.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.42.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.42.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.42.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.42.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.42","typeLabel":"OpenaiProviderAccount · object"},{"type":"object","title":"DatabricksProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data","base_url","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/databricks","type":"string","enum":["provider-account/databricks"],"default":"provider-account/databricks","isRequired":true,"uniqueKey":"manifest.oneOf.43.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Databricks model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.43.name","typeLabel":"string"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"manifest.oneOf.43.auth_data","typeLabel":"any"},"base_url":{"description":"The base URL of your Databricks workspace","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.43.base_url","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the Databricks model account","type":"array","items":{"description":"Databricks Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/databricks","type":"string","enum":["integration/model/databricks"],"default":"integration/model/databricks","isRequired":true,"uniqueKey":"manifest.oneOf.43.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.43.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The serving endpoint name configured in your Databricks workspace. This is the endpoint you created in Databricks Model Serving, not the underlying model name.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.43.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Databricks model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.43.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.43.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.43.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.43.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.43.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"DatabricksIntegrations","x-fern-type-name":"DatabricksIntegrations","uniqueKey":"manifest.oneOf.43.integrations.items.[INDEX]","typeLabel":"DatabricksIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.43.integrations","typeLabel":"DatabricksIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.43.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.43.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.43.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.43.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.43.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.43.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.43.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.43","typeLabel":"DatabricksProviderAccount · object"},{"type":"object","title":"ClouderaProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/cloudera","type":"string","enum":["provider-account/cloudera"],"default":"provider-account/cloudera","isRequired":true,"uniqueKey":"manifest.oneOf.44.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Cloudera model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.44.name","typeLabel":"string"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"manifest.oneOf.44.auth_data","typeLabel":"any"},"integrations":{"description":"List of integrations that are associated with the Cloudera model account","type":"array","items":{"description":"Cloudera Model","type":"object","required":["type","name","model_id","base_url","model_types"],"properties":{"type":{"description":"+value=integration/model/cloudera","type":"string","enum":["integration/model/cloudera"],"default":"integration/model/cloudera","isRequired":true,"uniqueKey":"manifest.oneOf.44.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.44.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The unique identifier of the Model in Cloudera Model Registry. This is the model ID assigned when you registered or deployed your model in the CDP Model Registry","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.44.integrations.items.[INDEX].model_id","typeLabel":"string"},"base_url":{"description":"The model endpoint URL up to the API version v1. To get the base_url, copy the model endpoint URL and delete the last two path components","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.44.integrations.items.[INDEX].base_url","typeLabel":"string"},"model_types":{"description":"Specify the type of the Cloudera model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.44.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.44.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.44.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.44.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.44.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"ClouderaIntegrations","x-fern-type-name":"ClouderaIntegrations","uniqueKey":"manifest.oneOf.44.integrations.items.[INDEX]","typeLabel":"ClouderaIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.44.integrations","typeLabel":"ClouderaIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.44.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.44.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.44.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.44.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.44.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.44.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.44.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.44","typeLabel":"ClouderaProviderAccount · object"},{"type":"object","title":"SelfHostedModelProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/self-hosted-model","type":"string","enum":["provider-account/self-hosted-model"],"default":"provider-account/self-hosted-model","isRequired":true,"uniqueKey":"manifest.oneOf.45.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the model account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.45.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the model account.","type":"array","items":{"description":"Self Hosted Model Integration","type":"object","required":["type","name","hosted_model_name","url","model_server","model_types"],"properties":{"type":{"description":"+value=integration/model/self-hosted-model","type":"string","enum":["integration/model/self-hosted-model"],"default":"integration/model/self-hosted-model","isRequired":true,"uniqueKey":"manifest.oneOf.45.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this self-hosted model in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.45.integrations.items.[INDEX].name","typeLabel":"string"},"hosted_model_name":{"description":"The name of the hosted model","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.45.integrations.items.[INDEX].hosted_model_name","typeLabel":"string"},"url":{"description":"The URL where the model is hosted","type":"string","pattern":"^https?:\\/\\/[^\\s\\/]+(\\/[^\\s\\/]*)*[^\\/\\s]$","isRequired":true,"uniqueKey":"manifest.oneOf.45.integrations.items.[INDEX].url","typeLabel":"string"},"model_server":{"description":"The type of model server being used","type":"string","enum":["openai-compatible","cohere-rerank-v2","nemo-retriever","infinity","tei","vllm-openai","comfyui"],"isRequired":true,"uniqueKey":"manifest.oneOf.45.integrations.items.[INDEX].model_server","typeLabel":"enum\u003cstring>"},"model_types":{"description":"Specify the type of the model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.45.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.45.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"tfy_application_id":{"description":"+uiType=Hidden","type":"string","uniqueKey":"manifest.oneOf.45.integrations.items.[INDEX].tfy_application_id","typeLabel":"string"},"tls_settings":{"description":"Configure TLS settings for secure connections with custom CA certificates.","type":"object","required":["reject_unauthorized"],"properties":{"reject_unauthorized":{"description":"When set to true, it will reject any connection which is not authorized with the list of supplied CAs.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.45.integrations.items.[INDEX].tls_settings.reject_unauthorized","typeLabel":"boolean"},"ca_cert":{"description":"Add custom CA certificates to use for TLS verification.","type":"string","uniqueKey":"manifest.oneOf.45.integrations.items.[INDEX].tls_settings.ca_cert","typeLabel":"string"}},"title":"CustomTLSSettings","x-fern-type-name":"CustomTLSSettings","uniqueKey":"manifest.oneOf.45.integrations.items.[INDEX].tls_settings","typeLabel":"CustomTLSSettings · object"},"auth_data":{"type":"any","uniqueKey":"manifest.oneOf.45.integrations.items.[INDEX].auth_data","typeLabel":"any"},"headers":{"description":"Self Hosted Model headers for the integration. Forwarded to the provider as is. For example: `{\"Authorization\": \"APIKey \u003ctoken>\"}`","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.45.integrations.items.[INDEX].headers.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.45.integrations.items.[INDEX].headers","typeLabel":"object"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.45.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.45.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.45.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"SelfHostedModelIntegrations","x-fern-type-name":"SelfHostedModelIntegrations","uniqueKey":"manifest.oneOf.45.integrations.items.[INDEX]","typeLabel":"SelfHostedModelIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.45.integrations","typeLabel":"SelfHostedModelIntegrations · object[]"},"collaborators":{"description":"Collaborators","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.45.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.45.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.45.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.45.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.45.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.45.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.45.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.45","typeLabel":"SelfHostedModelProviderAccount · object"},{"type":"object","title":"OpenRouterProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/openrouter","type":"string","enum":["provider-account/openrouter"],"default":"provider-account/openrouter","isRequired":true,"uniqueKey":"manifest.oneOf.46.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the OpenRouter model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.46.name","typeLabel":"string"},"auth_data":{"description":"OpenRouter API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.46.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for OpenRouter authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.46.auth_data.api_key","typeLabel":"string"}},"title":"OpenRouterApiKeyAuth","x-fern-type-name":"OpenRouterApiKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.46.auth_data","typeLabel":"OpenRouterApiKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the OpenRouter model account","type":"array","items":{"description":"OpenRouter Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/openrouter","type":"string","enum":["integration/model/openrouter"],"default":"integration/model/openrouter","isRequired":true,"uniqueKey":"manifest.oneOf.46.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.46.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The OpenRouter model identifier (e.g., anthropic/claude-3-haiku, openai/gpt-4o-mini). This is the model name from OpenRouter's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.46.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the OpenRouter model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.46.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.46.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.46.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.46.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.46.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"OpenRouterIntegrations","x-fern-type-name":"OpenRouterIntegrations","uniqueKey":"manifest.oneOf.46.integrations.items.[INDEX]","typeLabel":"OpenRouterIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.46.integrations","typeLabel":"OpenRouterIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.46.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.46.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.46.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.46.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.46.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.46.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.46.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.46","typeLabel":"OpenRouterProviderAccount · object"},{"type":"object","title":"SambaNovaProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/sambanova","type":"string","enum":["provider-account/sambanova"],"default":"provider-account/sambanova","isRequired":true,"uniqueKey":"manifest.oneOf.47.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the SambaNova model account","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.47.name","typeLabel":"string"},"auth_data":{"description":"SambaNova Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.47.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for SambaNova authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.47.auth_data.api_key","typeLabel":"string"}},"title":"SambaNovaKeyAuth","x-fern-type-name":"SambaNovaKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.47.auth_data","typeLabel":"SambaNovaKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the SambaNova model account","type":"array","items":{"description":"SambaNova Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/sambanova","type":"string","enum":["integration/model/sambanova"],"default":"integration/model/sambanova","isRequired":true,"uniqueKey":"manifest.oneOf.47.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.47.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The SambaNova model identifier (e.g., DeepSeek-R1-0528, Meta-Llama-3.3-70B-Instruct). This is the standard Model ID from SambaNova's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.47.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the SambaNova model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.47.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.47.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.47.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.47.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.47.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"SambaNovaIntegrations","x-fern-type-name":"SambaNovaIntegrations","uniqueKey":"manifest.oneOf.47.integrations.items.[INDEX]","typeLabel":"SambaNovaIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.47.integrations","typeLabel":"SambaNovaIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.47.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.47.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.47.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.47.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.47.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.47.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.47.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.47","typeLabel":"SambaNovaProviderAccount · object"},{"type":"object","title":"XAIProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/xai","type":"string","enum":["provider-account/xai"],"default":"provider-account/xai","isRequired":true,"uniqueKey":"manifest.oneOf.48.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the xAI model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.48.name","typeLabel":"string"},"auth_data":{"description":"Authentication method using xAI API key","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.48.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for xAI authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.48.auth_data.api_key","typeLabel":"string"}},"title":"XAIKeyAuth","x-fern-type-name":"XAIKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.48.auth_data","typeLabel":"XAIKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the xAI model account","type":"array","items":{"description":"xAI Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/xai","type":"string","enum":["integration/model/xai"],"default":"integration/model/xai","isRequired":true,"uniqueKey":"manifest.oneOf.48.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.48.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The xAI model identifier (e.g., grok-4-1-fast-reasoning, grok-4-1-fast-non-reasoning, grok-4). This is the model name from xAI's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.48.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the xAI model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.48.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.48.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.48.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.48.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.48.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"XAIIntegrations","x-fern-type-name":"XAIIntegrations","uniqueKey":"manifest.oneOf.48.integrations.items.[INDEX]","typeLabel":"XAIIntegrations · object"},"uniqueKey":"manifest.oneOf.48.integrations","typeLabel":"XAIIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.48.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.48.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.48.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.48.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.48.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.48.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.48.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.48","typeLabel":"XAIProviderAccount · object"},{"type":"object","title":"BasetenProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/baseten","type":"string","enum":["provider-account/baseten"],"default":"provider-account/baseten","isRequired":true,"uniqueKey":"manifest.oneOf.49.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Baseten model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.49.name","typeLabel":"string"},"auth_data":{"description":"Authentication method using Baseten API key","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.49.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Baseten authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.49.auth_data.api_key","typeLabel":"string"}},"title":"BasetenKeyAuth","x-fern-type-name":"BasetenKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.49.auth_data","typeLabel":"BasetenKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Baseten model account","type":"array","items":{"description":"Baseten Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/baseten","type":"string","enum":["integration/model/baseten"],"default":"integration/model/baseten","isRequired":true,"uniqueKey":"manifest.oneOf.49.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.49.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Baseten model identifier. This is the model name from Baseten's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.49.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Baseten model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.49.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.49.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.49.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.49.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.49.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"BasetenIntegrations","x-fern-type-name":"BasetenIntegrations","uniqueKey":"manifest.oneOf.49.integrations.items.[INDEX]","typeLabel":"BasetenIntegrations · object"},"uniqueKey":"manifest.oneOf.49.integrations","typeLabel":"BasetenIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.49.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.49.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.49.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.49.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.49.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.49.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.49.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.49","typeLabel":"BasetenProviderAccount · object"},{"type":"object","title":"AwsSagemakerProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","region","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/aws-sagemaker","type":"string","enum":["provider-account/aws-sagemaker"],"default":"provider-account/aws-sagemaker","isRequired":true,"uniqueKey":"manifest.oneOf.50.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Sagemaker model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.50.name","typeLabel":"string"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"manifest.oneOf.50.region","typeLabel":"enum\u003cstring>"},"integrations":{"description":"List of integrations that are associated with the Sagemaker model account","type":"array","items":{"description":"Sagemaker Model","type":"object","required":["name","model_id","type","model_types"],"properties":{"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.50.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The SageMaker endpoint name you created for your model deployment. This is the name of the inference endpoint in AWS SageMaker, not the model name.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.50.integrations.items.[INDEX].model_id","typeLabel":"string"},"type":{"description":"+value=integration/model/sagemaker","type":"string","enum":["integration/model/sagemaker"],"default":"integration/model/sagemaker","isRequired":true,"uniqueKey":"manifest.oneOf.50.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"model_types":{"description":"Specify the type of the Sagemaker model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.50.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.50.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","uniqueKey":"manifest.oneOf.50.integrations.items.[INDEX].region","typeLabel":"enum\u003cstring>"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.50.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.50.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.50.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"SagemakerModel","x-fern-type-name":"SagemakerModel","uniqueKey":"manifest.oneOf.50.integrations.items.[INDEX]","typeLabel":"SagemakerModel · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.50.integrations","typeLabel":"SagemakerModel · object[]"},"auth_data":{"type":"any","uniqueKey":"manifest.oneOf.50.auth_data","typeLabel":"any"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.50.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.50.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.50.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.50.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.50.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.50.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.50.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.50","typeLabel":"AwsSagemakerProviderAccount · object"},{"type":"object","title":"CerebrasProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/cerebras","type":"string","enum":["provider-account/cerebras"],"default":"provider-account/cerebras","isRequired":true,"uniqueKey":"manifest.oneOf.51.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Cerebras model account","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.51.name","typeLabel":"string"},"auth_data":{"type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.51.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Cerebras authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.51.auth_data.api_key","typeLabel":"string"}},"title":"CerebrasKeyAuth","x-fern-type-name":"CerebrasKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.51.auth_data","typeLabel":"CerebrasKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Cerebras model account","type":"array","items":{"type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/cerebras","type":"string","enum":["integration/model/cerebras"],"default":"integration/model/cerebras","isRequired":true,"uniqueKey":"manifest.oneOf.51.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.51.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Cerebras model identifier (e.g., llama-4-scout-17b-16e-instruct, llama3.1-70b). This is the standard model name from Cerebras's API documentation.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.51.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Cerebras model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.51.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.51.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.51.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.51.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.51.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"CerebrasIntegrations","x-fern-type-name":"CerebrasIntegrations","uniqueKey":"manifest.oneOf.51.integrations.items.[INDEX]","typeLabel":"CerebrasIntegrations · object"},"uniqueKey":"manifest.oneOf.51.integrations","typeLabel":"CerebrasIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.51.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.51.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.51.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.51.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.51.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.51.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.51.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.51","typeLabel":"CerebrasProviderAccount · object"},{"type":"object","title":"WaferProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/wafer","type":"string","enum":["provider-account/wafer"],"default":"provider-account/wafer","isRequired":true,"uniqueKey":"manifest.oneOf.52.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Wafer model account","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.52.name","typeLabel":"string"},"auth_data":{"description":"Wafer API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.52.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Wafer Serverless authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.52.auth_data.api_key","typeLabel":"string"}},"title":"WaferAPIKeyAuth","x-fern-type-name":"WaferAPIKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.52.auth_data","typeLabel":"WaferAPIKeyAuth · object"},"base_url":{"description":"Optional custom base URL for Wafer Serverless API (defaults to https://pass.wafer.ai/v1)","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.52.base_url","typeLabel":"string"},"zero_data_retention":{"description":"When enabled, sends the Wafer-ZDR: required header on API requests for request-scoped zero data retention","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.52.zero_data_retention","typeLabel":"boolean"},"integrations":{"description":"List of integrations that are associated with the Wafer model account","type":"array","items":{"description":"Wafer Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/wafer","type":"string","enum":["integration/model/wafer"],"default":"integration/model/wafer","isRequired":true,"uniqueKey":"manifest.oneOf.52.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.52.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Wafer model identifier (e.g., deepseek-v4-pro, deepseek-v4-flash). See https://docs.wafer.ai/serverless for the public catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.52.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Wafer model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.52.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.52.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.52.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.52.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.52.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"WaferIntegrations","x-fern-type-name":"WaferIntegrations","uniqueKey":"manifest.oneOf.52.integrations.items.[INDEX]","typeLabel":"WaferIntegrations · object"},"uniqueKey":"manifest.oneOf.52.integrations","typeLabel":"WaferIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.52.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.52.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.52.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.52.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.52.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.52.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.52.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.52","typeLabel":"WaferProviderAccount · object"},{"type":"object","title":"FireworksAIProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/fireworks-ai","type":"string","enum":["provider-account/fireworks-ai"],"default":"provider-account/fireworks-ai","isRequired":true,"uniqueKey":"manifest.oneOf.53.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Fireworks AI model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.53.name","typeLabel":"string"},"auth_data":{"description":"Fireworks AI API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.53.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The Fireworks AI API key (sent as a Bearer token). Create one in the Fireworks console.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.53.auth_data.api_key","typeLabel":"string"}},"title":"FireworksAIAPIKeyAuth","x-fern-type-name":"FireworksAIAPIKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.53.auth_data","typeLabel":"FireworksAIAPIKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Fireworks AI model account","type":"array","items":{"description":"Fireworks AI Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/fireworks-ai","type":"string","enum":["integration/model/fireworks-ai"],"default":"integration/model/fireworks-ai","isRequired":true,"uniqueKey":"manifest.oneOf.53.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.53.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Fireworks AI model identifier, for example accounts/fireworks/models/kimi-k3. For a dedicated deployment use accounts/\u003caccount>/deployments/\u003cdeployment>.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.53.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Fireworks AI model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.53.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.53.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.53.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.53.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.53.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"FireworksAIIntegrations","x-fern-type-name":"FireworksAIIntegrations","uniqueKey":"manifest.oneOf.53.integrations.items.[INDEX]","typeLabel":"FireworksAIIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.53.integrations","typeLabel":"FireworksAIIntegrations · object[]"},"base_url":{"description":"Override the Fireworks AI API base URL. Defaults to https://api.fireworks.ai/inference/v1. For US-only serverless use https://us.api.fireworks.ai/inference/v1 together with the US router model IDs, for example accounts/fireworks/routers/kimi-k3-us.","type":"string","pattern":"^https://[^\\s/?#@]+(?:/[^\\s?#]*)?$","uniqueKey":"manifest.oneOf.53.base_url","typeLabel":"string"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.53.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.53.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.53.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.53.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.53.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.53.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.53.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.53","typeLabel":"FireworksAIProviderAccount · object"},{"type":"object","title":"TypeSafeProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/typesafe","type":"string","enum":["provider-account/typesafe"],"default":"provider-account/typesafe","isRequired":true,"uniqueKey":"manifest.oneOf.54.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the TypeSafe model account","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.54.name","typeLabel":"string"},"auth_data":{"description":"TypeSafe API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.54.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The TypeSafe API key, sent to the model as an Authorization Bearer token","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.54.auth_data.api_key","typeLabel":"string"}},"title":"TypeSafeAPIKeyAuth","x-fern-type-name":"TypeSafeAPIKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.54.auth_data","typeLabel":"TypeSafeAPIKeyAuth · object"},"base_url":{"description":"Optional custom base URL for the TypeSafe API (defaults to https://api.typesafe.ai). Point this at a Cloudflare account (https://api.cloudflare.com/client/v4/accounts/\u003caccount_id>) to serve System One models through Cloudflare Workers AI instead.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.54.base_url","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the TypeSafe model account","type":"array","items":{"description":"TypeSafe Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/typesafe","type":"string","enum":["integration/model/typesafe"],"default":"integration/model/typesafe","isRequired":true,"uniqueKey":"manifest.oneOf.54.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.54.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The TypeSafe model identifier (e.g., jev-1.13.0, jev-latest). Pin a versioned id so confidence thresholds stay stable across releases. On a Cloudflare Workers AI base URL, use the Workers AI model name instead (e.g., typesafe/jev, @cf/cloudflare/clef, @cf/cloudflare/clef-flash).","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.54.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the TypeSafe model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.54.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["decision"],"isRequired":true,"uniqueKey":"manifest.oneOf.54.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.54.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.54.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.54.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"TypeSafeIntegrations","x-fern-type-name":"TypeSafeIntegrations","uniqueKey":"manifest.oneOf.54.integrations.items.[INDEX]","typeLabel":"TypeSafeIntegrations · object"},"uniqueKey":"manifest.oneOf.54.integrations","typeLabel":"TypeSafeIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.54.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.54.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.54.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.54.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.54.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.54.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.54.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.54","typeLabel":"TypeSafeProviderAccount · object"},{"type":"object","title":"SnowflakeCortexProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data","account_identifier","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/snowflake-cortex","type":"string","enum":["provider-account/snowflake-cortex"],"default":"provider-account/snowflake-cortex","isRequired":true,"uniqueKey":"manifest.oneOf.55.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Snowflake Cortex model account","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.55.name","typeLabel":"string"},"auth_data":{"type":"object","required":["type","pat_token"],"properties":{"type":{"description":"+value=pat-token","type":"string","enum":["pat-token"],"default":"pat-token","isRequired":true,"uniqueKey":"manifest.oneOf.55.auth_data.type","typeLabel":"enum\u003cstring>"},"pat_token":{"description":"PAT token for Snowflake Cortex authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.55.auth_data.pat_token","typeLabel":"string"}},"title":"SnowflakeCortexPatTokenAuth","x-fern-type-name":"SnowflakeCortexPatTokenAuth","isRequired":true,"uniqueKey":"manifest.oneOf.55.auth_data","typeLabel":"SnowflakeCortexPatTokenAuth · object"},"account_identifier":{"description":"Snowflake account identifier. You can find it in the URL of your Snowflake account. Example: https://\u003caccount_identifier>.snowflakecomputing.com. Insert the account identifier only, without the URL.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.55.account_identifier","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the Snowflake Cortex model account","type":"array","items":{"type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/snowflake-cortex","type":"string","enum":["integration/model/snowflake-cortex"],"default":"integration/model/snowflake-cortex","isRequired":true,"uniqueKey":"manifest.oneOf.55.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name to identify this Snowflake Cortex model in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.55.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"ID of the Snowflake Cortex model to use","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.55.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Snowflake Cortex model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.55.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.55.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.55.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.55.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.55.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"SnowflakeCortexIntegrations","x-fern-type-name":"SnowflakeCortexIntegrations","uniqueKey":"manifest.oneOf.55.integrations.items.[INDEX]","typeLabel":"SnowflakeCortexIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.55.integrations","typeLabel":"SnowflakeCortexIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.55.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.55.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.55.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.55.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.55.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.55.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.55.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.55","typeLabel":"SnowflakeCortexProviderAccount · object"},{"type":"object","title":"ElevenLabsProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/elevenlabs","type":"string","enum":["provider-account/elevenlabs"],"default":"provider-account/elevenlabs","isRequired":true,"uniqueKey":"manifest.oneOf.56.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the ElevenLabs model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.56.name","typeLabel":"string"},"auth_data":{"description":"ElevenLabs API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.56.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The XI API key for ElevenLabs authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.56.auth_data.api_key","typeLabel":"string"}},"title":"ElevenLabsApiKeyAuth","x-fern-type-name":"ElevenLabsApiKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.56.auth_data","typeLabel":"ElevenLabsApiKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the ElevenLabs model account","type":"array","items":{"description":"ElevenLabs Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/elevenlabs","type":"string","enum":["integration/model/elevenlabs"],"default":"integration/model/elevenlabs","isRequired":true,"uniqueKey":"manifest.oneOf.56.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.56.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The ElevenLabs model identifier (for example, eleven_multilingual_v2, eleven_turbo_v2_5)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.56.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the ElevenLabs model (text_to_speech or audio_transcription)","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.56.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["text_to_speech"],"isRequired":true,"uniqueKey":"manifest.oneOf.56.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.56.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.56.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.56.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"ElevenLabsModel","x-fern-type-name":"ElevenLabsModel","uniqueKey":"manifest.oneOf.56.integrations.items.[INDEX]","typeLabel":"ElevenLabsModel · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.56.integrations","typeLabel":"ElevenLabsModel · object[]"},"base_url":{"description":"Optional custom base URL for ElevenLabs API","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.56.base_url","typeLabel":"string"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.56.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.56.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.56.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.56.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.56.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.56.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.56.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.56","typeLabel":"ElevenLabsProviderAccount · object"},{"type":"object","title":"DeepgramProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/deepgram","type":"string","enum":["provider-account/deepgram"],"default":"provider-account/deepgram","isRequired":true,"uniqueKey":"manifest.oneOf.57.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Deepgram model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.57.name","typeLabel":"string"},"auth_data":{"description":"Deepgram API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.57.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Deepgram authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.57.auth_data.api_key","typeLabel":"string"}},"title":"DeepgramApiKeyAuth","x-fern-type-name":"DeepgramApiKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.57.auth_data","typeLabel":"DeepgramApiKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Deepgram model account","type":"array","items":{"description":"Deepgram Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/deepgram","type":"string","enum":["integration/model/deepgram"],"default":"integration/model/deepgram","isRequired":true,"uniqueKey":"manifest.oneOf.57.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.57.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Deepgram model identifier (for example, nova-2, nova-2-general, aura-asteria-en)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.57.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Deepgram model (text_to_speech or audio_transcription)","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.57.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["audio_transcription"],"isRequired":true,"uniqueKey":"manifest.oneOf.57.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.57.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.57.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.57.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"DeepgramModel","x-fern-type-name":"DeepgramModel","uniqueKey":"manifest.oneOf.57.integrations.items.[INDEX]","typeLabel":"DeepgramModel · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.57.integrations","typeLabel":"DeepgramModel · object[]"},"base_url":{"description":"Optional custom base URL for Deepgram API","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.57.base_url","typeLabel":"string"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.57.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.57.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.57.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.57.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.57.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.57.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.57.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.57","typeLabel":"DeepgramProviderAccount · object"},{"type":"object","title":"CartesiaProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","cartesia_version","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/cartesia","type":"string","enum":["provider-account/cartesia"],"default":"provider-account/cartesia","isRequired":true,"uniqueKey":"manifest.oneOf.58.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Cartesia model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.58.name","typeLabel":"string"},"cartesia_version":{"description":"The Cartesia API version header. Must be set to a supported API version.","type":"string","enum":["2025-04-16","2024-11-13","2024-06-10"],"default":"2025-04-16","isRequired":true,"uniqueKey":"manifest.oneOf.58.cartesia_version","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"Cartesia API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.58.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Cartesia authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.58.auth_data.api_key","typeLabel":"string"}},"title":"CartesiaApiKeyAuth","x-fern-type-name":"CartesiaApiKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.58.auth_data","typeLabel":"CartesiaApiKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Cartesia model account","type":"array","items":{"description":"Cartesia Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/cartesia","type":"string","enum":["integration/model/cartesia"],"default":"integration/model/cartesia","isRequired":true,"uniqueKey":"manifest.oneOf.58.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.58.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Cartesia model identifier (for example, sonic-2, sonic-multilingual)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.58.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Cartesia model (text_to_speech or audio_transcription)","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.58.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["text_to_speech"],"isRequired":true,"uniqueKey":"manifest.oneOf.58.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.58.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.58.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.58.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"CartesiaModel","x-fern-type-name":"CartesiaModel","uniqueKey":"manifest.oneOf.58.integrations.items.[INDEX]","typeLabel":"CartesiaModel · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.58.integrations","typeLabel":"CartesiaModel · object[]"},"base_url":{"description":"Optional custom base URL for Cartesia API","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.58.base_url","typeLabel":"string"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.58.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.58.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.58.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.58.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.58.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.58.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.58.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.58","typeLabel":"CartesiaProviderAccount · object"},{"type":"object","title":"SmallestAiProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/smallest-ai","type":"string","enum":["provider-account/smallest-ai"],"default":"provider-account/smallest-ai","isRequired":true,"uniqueKey":"manifest.oneOf.59.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Smallest AI model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.59.name","typeLabel":"string"},"auth_data":{"description":"Smallest AI API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.59.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Smallest AI authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.59.auth_data.api_key","typeLabel":"string"}},"title":"SmallestAiApiKeyAuth","x-fern-type-name":"SmallestAiApiKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.59.auth_data","typeLabel":"SmallestAiApiKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Smallest AI model account","type":"array","items":{"description":"Smallest AI Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/smallest-ai","type":"string","enum":["integration/model/smallest-ai"],"default":"integration/model/smallest-ai","isRequired":true,"uniqueKey":"manifest.oneOf.59.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.59.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Smallest AI model identifier (for example, lightning-v2, lightning-v3.1 for TTS, pulse for STT)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.59.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Smallest AI model (text_to_speech or audio_transcription)","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.59.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["text_to_speech"],"isRequired":true,"uniqueKey":"manifest.oneOf.59.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.59.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.59.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.59.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"SmallestAiModel","x-fern-type-name":"SmallestAiModel","uniqueKey":"manifest.oneOf.59.integrations.items.[INDEX]","typeLabel":"SmallestAiModel · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.59.integrations","typeLabel":"SmallestAiModel · object[]"},"base_url":{"description":"Optional custom base URL for Smallest AI API","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.59.base_url","typeLabel":"string"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.59.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.59.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.59.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.59.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.59.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.59.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.59.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.59","typeLabel":"SmallestAiProviderAccount · object"},{"type":"object","title":"AWSClaudePlatformProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","workspace_id","region"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/aws-claude-platform","type":"string","enum":["provider-account/aws-claude-platform"],"default":"provider-account/aws-claude-platform","isRequired":true,"uniqueKey":"manifest.oneOf.60.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the AWS Claude Platform model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.60.name","typeLabel":"string"},"workspace_id":{"description":"Your Claude Platform on AWS workspace ID, in the format wrkspc_\u003calphanumeric>.","type":"string","pattern":"^wrkspc_[A-Za-z0-9]+$","isRequired":true,"uniqueKey":"manifest.oneOf.60.workspace_id","typeLabel":"string"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"manifest.oneOf.60.region","typeLabel":"enum\u003cstring>"},"base_url":{"description":"Optional custom base URL (e.g. a VPC/PrivateLink endpoint) for Claude Platform on AWS. Must include the version path, e.g. https://my-endpoint.example.com/v1. When set, requests are sent here instead of the default aws-external-anthropic.{region}.api.aws/v1 host.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.60.base_url","typeLabel":"string"},"auth_data":{"type":"any","uniqueKey":"manifest.oneOf.60.auth_data","typeLabel":"any"},"integrations":{"description":"List of integrations that are associated with the AWS Claude Platform model account","type":"array","items":{"description":"AWS Claude Platform Model","type":"object","required":["name","model_id","type","model_types"],"properties":{"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.60.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Anthropic model identifier (e.g., claude-3-5-sonnet-20241022, claude-3-opus-20240229, claude-3-haiku-20240307). This is the standard model name from Anthropic's API documentation.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.60.integrations.items.[INDEX].model_id","typeLabel":"string"},"type":{"description":"+value=integration/model/aws-claude-platform\n+icon=claude","type":"string","enum":["integration/model/aws-claude-platform"],"default":"integration/model/aws-claude-platform","isRequired":true,"uniqueKey":"manifest.oneOf.60.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"model_types":{"description":"Specify the type of the Anthropic model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.60.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.60.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.60.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.60.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.60.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"AWSClaudePlatformIntegrations","x-fern-type-name":"AWSClaudePlatformIntegrations","uniqueKey":"manifest.oneOf.60.integrations.items.[INDEX]","typeLabel":"AWSClaudePlatformIntegrations · object"},"uniqueKey":"manifest.oneOf.60.integrations","typeLabel":"AWSClaudePlatformIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.60.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.60.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.60.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.60.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.60.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.60.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.60.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.60","typeLabel":"AWSClaudePlatformProviderAccount · object"},{"type":"object","title":"AwsBedrockMantleProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","region","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/aws-bedrock-mantle","type":"string","enum":["provider-account/aws-bedrock-mantle"],"default":"provider-account/aws-bedrock-mantle","isRequired":true,"uniqueKey":"manifest.oneOf.61.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the AWS Bedrock Mantle model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.61.name","typeLabel":"string"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"manifest.oneOf.61.region","typeLabel":"enum\u003cstring>"},"integrations":{"description":"List of integrations that are associated with the AWS Bedrock Mantle model account","type":"array","items":{"description":"Bedrock Mantle Model","type":"object","required":["name","model_id","type","model_types"],"properties":{"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.61.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Bedrock Mantle model identifier (e.g., openai.gpt-oss-20b-1:0). Use the OpenAI-compatible model name exposed by the Bedrock Mantle endpoint.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.61.integrations.items.[INDEX].model_id","typeLabel":"string"},"type":{"description":"+value=integration/model/bedrock-mantle","type":"string","enum":["integration/model/bedrock-mantle"],"default":"integration/model/bedrock-mantle","isRequired":true,"uniqueKey":"manifest.oneOf.61.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"model_types":{"description":"Specify the type of the Bedrock Mantle model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.61.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.61.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","uniqueKey":"manifest.oneOf.61.integrations.items.[INDEX].region","typeLabel":"enum\u003cstring>"},"project":{"description":"The AWS Bedrock project that inference requests for this model will be attributed to (e.g., proj_5d5ykleja6cwpirysbb7). If not specified, the project from the model account will be used, and if that is also unset the AWS account's default project is used.","type":"string","uniqueKey":"manifest.oneOf.61.integrations.items.[INDEX].project","typeLabel":"string"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.61.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.61.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.61.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"AwsBedrockMantleIntegrations","x-fern-type-name":"AwsBedrockMantleIntegrations","uniqueKey":"manifest.oneOf.61.integrations.items.[INDEX]","typeLabel":"AwsBedrockMantleIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.61.integrations","typeLabel":"AwsBedrockMantleIntegrations · object[]"},"project":{"description":"The default AWS Bedrock project that inference requests will be attributed to (e.g., proj_5d5ykleja6cwpirysbb7). Used for all models unless overridden at the model level. If not specified, the AWS account's default project is used.","type":"string","uniqueKey":"manifest.oneOf.61.project","typeLabel":"string"},"base_url":{"description":"Optional custom base URL (e.g. a VPC/PrivateLink endpoint) for AWS Bedrock Mantle. When set, requests are sent here instead of the default bedrock-mantle.{region}.api.aws host.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.61.base_url","typeLabel":"string"},"auth_data":{"type":"any","uniqueKey":"manifest.oneOf.61.auth_data","typeLabel":"any"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.61.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.61.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.61.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.61.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.61.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.61.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.61.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.61","typeLabel":"AwsBedrockMantleProviderAccount · object"},{"type":"object","title":"VirtualModelProviderAccount","description":"Manifest of the resource to be created or updated","required":["name","type","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"name":{"description":"The name of the Virtual Model Provider Group","type":"string","pattern":"^[a-z][a-z0-9\\-_]{1,62}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.62.name","typeLabel":"string"},"type":{"description":"+value=provider-account/virtual-model","type":"string","enum":["provider-account/virtual-model"],"default":"provider-account/virtual-model","isRequired":true,"uniqueKey":"manifest.oneOf.62.type","typeLabel":"enum\u003cstring>"},"integrations":{"description":"List of virtual models in this group","type":"array","items":{"description":"Virtual Model","type":"object","required":["name","type","model_types","routing_config"],"properties":{"name":{"description":"The name of the Virtual Model","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.62.integrations.items.[INDEX].name","typeLabel":"string"},"type":{"description":"+value=integration/model/virtual","type":"string","enum":["integration/model/virtual"],"default":"integration/model/virtual","isRequired":true,"uniqueKey":"manifest.oneOf.62.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"model_types":{"description":"Specify the type of the Virtual Model","type":"array","items":{"type":"string","enum":["chat","completion","embedding","rerank","moderation","audio_transcription","audio_translation","text_to_speech","image","responses","video","decision"],"title":"VirtualModelModelType","x-fern-type-name":"VirtualModelModelType","uniqueKey":"manifest.oneOf.62.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.62.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"routing_config":{"type":"any","isRequired":true,"uniqueKey":"manifest.oneOf.62.integrations.items.[INDEX].routing_config","typeLabel":"any"},"slug":{"description":"It should be a unique identifier for the virtual model. It is used to uniquely identify the virtual model. It can be used in place of virtualGroupName/virtualModelName.","type":"string","uniqueKey":"manifest.oneOf.62.integrations.items.[INDEX].slug","typeLabel":"string"},"alias":{"description":"Alternate identifiers for the virtual model. Can be used in place of virtualGroupName/virtualModelName (same as slug). Slug takes priority if both match.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.62.integrations.items.[INDEX].alias.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.62.integrations.items.[INDEX].alias","typeLabel":"string[]"}},"title":"VirtualModel","x-fern-type-name":"VirtualModel","uniqueKey":"manifest.oneOf.62.integrations.items.[INDEX]","typeLabel":"VirtualModel · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.62.integrations","typeLabel":"VirtualModel · object[]"},"collaborators":{"description":"List of users who have access to this Virtual Model Provider Group","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.62.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.62.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.62.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.62.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.62.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.62.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.62","typeLabel":"VirtualModelProviderAccount · object"},{"type":"object","title":"CustomEndpointProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/custom-endpoint","type":"string","enum":["provider-account/custom-endpoint"],"default":"provider-account/custom-endpoint","isRequired":true,"uniqueKey":"manifest.oneOf.63.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the custom endpoint model account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.63.name","typeLabel":"string"},"integrations":{"description":"List of endpoint integrations associated with this model account.","type":"array","items":{"description":"Custom Endpoint","type":"object","required":["type","name","base_url"],"properties":{"type":{"description":"+value=integration/model/custom-endpoint","type":"string","enum":["integration/model/custom-endpoint"],"default":"integration/model/custom-endpoint","isRequired":true,"uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this endpoint in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].name","typeLabel":"string"},"base_url":{"description":"The target base URL to proxy requests to (e.g., https://my-service.example.com/v1)","type":"string","pattern":"^https?:\\/\\/[^\\s\\/]+(\\/[^\\s\\/]*)*[^\\/\\s]$","isRequired":true,"uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].base_url","typeLabel":"string"},"auth_data":{"description":"Static API key or token authentication via request headers. All users share the same credentials.","type":"object","required":["type","headers"],"properties":{"type":{"description":"+value=header","type":"string","enum":["header"],"default":"header","isRequired":true,"uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].auth_data.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"HTTP headers forwarded to the upstream on every request. Values may contain internal spaces (e.g. `Bearer \u003ctoken>`) but must not be empty or have leading/trailing whitespace.","type":"object","additionalProperties":{"type":"string","pattern":"^\\S(?:.*\\S)?$","uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].auth_data.headers.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].auth_data.headers","typeLabel":"object"}},"title":"CustomHeaderAuth","x-fern-type-name":"CustomHeaderAuth","uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].auth_data","typeLabel":"CustomHeaderAuth · object"},"headers":{"description":"Custom headers forwarded to the upstream endpoint with every request. For example: `{\"X-Custom-Header\": \"value\"}`","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].headers.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].headers","typeLabel":"object"},"tls_settings":{"description":"Configure TLS settings for secure connections with custom CA certificates.","type":"object","required":["reject_unauthorized"],"properties":{"reject_unauthorized":{"description":"When set to true, it will reject any connection which is not authorized with the list of supplied CAs.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].tls_settings.reject_unauthorized","typeLabel":"boolean"},"ca_cert":{"description":"Add custom CA certificates to use for TLS verification.","type":"string","uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].tls_settings.ca_cert","typeLabel":"string"}},"title":"CustomTLSSettings","x-fern-type-name":"CustomTLSSettings","uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].tls_settings","typeLabel":"CustomTLSSettings · object"},"loadbalancing_config":{"description":"Per-endpoint load balancing settings for a load-balanced custom-endpoint provider account. Only effective when the parent account has routing_type set to \"weight\" or \"priority\".","type":"object","properties":{"weight":{"description":"Relative weight for routing decisions (higher values mean more traffic). Weights across all endpoints in the account must sum to 100.","type":"integer","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].loadbalancing_config.weight","typeLabel":"integer"},"priority":{"description":"Priority for the endpoint, Lower the number, higher the priority (0 is the highest priority)","type":"integer","minimum":0,"uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].loadbalancing_config.priority","typeLabel":"integer"},"fallback_status_codes":{"description":"Status Codes for which the request will fall back to other endpoints. If the status code is not present in fallback_status_codes, it fails immediately.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].loadbalancing_config.fallback_status_codes.items.[INDEX]","typeLabel":"string"},"default":["401","403","404","408","429","500","502","503"],"uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].loadbalancing_config.fallback_status_codes","typeLabel":"string[]"},"fallback_candidate":{"description":"Whether this endpoint is a fallback candidate. If set to false, this endpoint will not be considered as a fallback option for the account.","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].loadbalancing_config.fallback_candidate","typeLabel":"boolean"},"metadata_match":{"description":"Optional metadata key-value pairs that must match incoming request metadata headers for this endpoint to be considered for routing.","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].loadbalancing_config.metadata_match.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].loadbalancing_config.metadata_match","typeLabel":"object"}},"title":"CustomEndpointTargetConfig","x-fern-type-name":"CustomEndpointTargetConfig","uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].loadbalancing_config","typeLabel":"CustomEndpointTargetConfig · object"},"authorized_subjects":{"description":"List of subjects that are authorized to access this endpoint. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"CustomEndpointIntegrations","x-fern-type-name":"CustomEndpointIntegrations","uniqueKey":"manifest.oneOf.63.integrations.items.[INDEX]","typeLabel":"CustomEndpointIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.63.integrations","typeLabel":"CustomEndpointIntegrations · object[]"},"endpoint_type":{"description":"The type of service behind this endpoint (used for tracking purposes)","type":"string","enum":["azure-speech-service","other"],"uniqueKey":"manifest.oneOf.63.endpoint_type","typeLabel":"enum\u003cstring>"},"routing_type":{"description":"How requests are routed across the endpoints in this account. When unset, each endpoint is reachable individually at /proxy-api/\u003caccount-name>/\u003cendpoint-name>. Set to \"weight\" or \"priority\" to load balance across the endpoints, reachable at /proxy-api/\u003caccount-name>/\u003cslug>/\u003cupstream-path>.","type":"string","enum":["weight","priority"],"uniqueKey":"manifest.oneOf.63.routing_type","typeLabel":"enum\u003cstring>"},"slug":{"description":"A unique identifier used to address the load-balanced endpoints of this account. When routing_type is \"weight\" or \"priority\", the load balancer is reachable at /proxy-api/\u003caccount-name>/\u003cslug>/\u003cupstream-path>, alongside the per-endpoint URLs.","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,60}[a-zA-Z0-9])$","uniqueKey":"manifest.oneOf.63.slug","typeLabel":"string"},"auth_data":{"description":"Static API key or token authentication via request headers. All users share the same credentials.","type":"object","required":["type","headers"],"properties":{"type":{"description":"+value=header","type":"string","enum":["header"],"default":"header","isRequired":true,"uniqueKey":"manifest.oneOf.63.auth_data.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"HTTP headers forwarded to the upstream on every request. Values may contain internal spaces (e.g. `Bearer \u003ctoken>`) but must not be empty or have leading/trailing whitespace.","type":"object","additionalProperties":{"type":"string","pattern":"^\\S(?:.*\\S)?$","uniqueKey":"manifest.oneOf.63.auth_data.headers.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.63.auth_data.headers","typeLabel":"object"}},"title":"CustomHeaderAuth","x-fern-type-name":"CustomHeaderAuth","uniqueKey":"manifest.oneOf.63.auth_data","typeLabel":"CustomHeaderAuth · object"},"collaborators":{"description":"Collaborators","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.63.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.63.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.63.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.63.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.63.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.63.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.63","typeLabel":"CustomEndpointProviderAccount · object"},{"type":"object","title":"TrueFoundryManagedProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","auth_data","base_url","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/truefoundry-managed","type":"string","enum":["provider-account/truefoundry-managed"],"default":"provider-account/truefoundry-managed","isRequired":true,"uniqueKey":"manifest.oneOf.64.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the TrueFoundry Managed account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.64.name","typeLabel":"string"},"auth_data":{"description":"TrueFoundry Managed API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.64.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The virtual account token used to authenticate with TrueFoundry Managed","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.64.auth_data.api_key","typeLabel":"string"}},"title":"TrueFoundryManagedApiKeyAuth","x-fern-type-name":"TrueFoundryManagedApiKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.64.auth_data","typeLabel":"TrueFoundryManagedApiKeyAuth · object"},"base_url":{"description":"Base URL of the TrueFoundry gateway that serves the models","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.64.base_url","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the TrueFoundry Managed account","type":"array","items":{"description":"TrueFoundry Managed Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/truefoundry-managed","type":"string","enum":["integration/model/truefoundry-managed"],"default":"integration/model/truefoundry-managed","isRequired":true,"uniqueKey":"manifest.oneOf.64.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.64.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The slug of the TrueFoundry virtual model (e.g., grok-4.7).","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.64.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the TrueFoundry Managed model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"manifest.oneOf.64.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"manifest.oneOf.64.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"manifest.oneOf.64.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.64.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.64.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"TrueFoundryManagedIntegrations","x-fern-type-name":"TrueFoundryManagedIntegrations","uniqueKey":"manifest.oneOf.64.integrations.items.[INDEX]","typeLabel":"TrueFoundryManagedIntegrations · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.64.integrations","typeLabel":"TrueFoundryManagedIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.64.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.64.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.64.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.64.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.64.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.64.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.64.discount_percent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.64","typeLabel":"TrueFoundryManagedProviderAccount · object"},{"type":"object","title":"MCPServerProviderAccount","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/mcp-server-group","type":"string","enum":["provider-account/mcp-server-group"],"default":"provider-account/mcp-server-group","isRequired":true,"uniqueKey":"manifest.oneOf.65.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the MCP Server Group.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.65.name","typeLabel":"string"},"integrations":{"description":"List of MCP Servers, which are part of this MCP Server Group.","type":"array","items":{"oneOf":[{"type":"object","title":"MCPServerIntegration","description":"MCP Server","required":["type","name","description","url","transport"],"x-fern-type-name":"MCPServerIntegrations","properties":{"type":{"description":"+value=integration/mcp-server/remote","type":"string","enum":["integration/mcp-server/remote"],"default":"integration/mcp-server/remote","isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.description","typeLabel":"string"},"url":{"description":"The endpoint URL for the MCP Server.","type":"string","pattern":"^https?:\\/\\/[^\\s]+$","isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.url","typeLabel":"string"},"transport":{"description":"The transport protocol to use for communication with the MCP Server.","type":"string","enum":["streamable-http","sse"],"isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.transport","typeLabel":"enum\u003cstring>"},"auth_data":{"oneOf":[{"type":"object","title":"MCPServerHeaderAuth","description":"Authenticate using a static key or token sent as a request header. Choose shared vs individual credentials below.","required":["type","headers","auth_level"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=header","type":"string","enum":["header"],"default":"header","isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.0.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"Map each header name to its value. For shared, enter the actual value. For individual, use a placeholder that will be filled in by each user (e.g. Bearer {{API_KEY}}).","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.0.headers.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.0.headers","typeLabel":"object"},"auth_level":{"description":"Level at which this authentication will be applied. Values: global (default), per_user","type":"string","enum":["global","per_user"],"default":"global","isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.0.auth_level","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.0","typeLabel":"MCPServerHeaderAuth · object"},{"type":"object","title":"MCPServerOAuth2","description":"OAuth2","required":["type","grant_type","provider"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"OAuth2 authentication","type":"string","enum":["oauth2"],"default":"oauth2","isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.type","typeLabel":"enum\u003cstring>"},"grant_type":{"description":"The OAuth2 grant type to use for authentication.","type":"string","enum":["authorization_code","client_credentials","token_exchange","id_jag","jwt_bearer"],"default":"authorization_code","isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.grant_type","typeLabel":"enum\u003cstring>"},"provider":{"description":"Select the OAuth provider. Provider-specific configuration (e.g. Auth0 organization) is unlocked based on this value.","type":"string","enum":["custom","auth0","okta","microsoft-entra"],"default":"custom","isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.provider","typeLabel":"enum\u003cstring>"},"use_organization":{"description":"When enabled, organization will be extracted from the inbound token and it will be included as the organization parameter on token endpoint requests.","type":"boolean","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.use_organization","typeLabel":"boolean"},"default_organization":{"description":"Fallback Auth0 organization when the inbound token does not include organization.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.default_organization","typeLabel":"string"},"audience":{"description":"Okta target audience (RFC 8693 'audience'). Required when the token_exchange grant type is used with the okta provider.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.audience","typeLabel":"string"},"issuer_uri":{"description":"Issuer URI of the authorization server the ID-JAG token is issued for. Sent as the 'audience' parameter on the ID-JAG token exchange.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.issuer_uri","typeLabel":"string"},"authorization_url":{"description":"URL for the authorization request","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.authorization_url","typeLabel":"string"},"token_url":{"description":"The endpoint to exchange auth code for tokens.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.token_url","typeLabel":"string"},"client_id":{"description":"client ID for OAuth2 or the TrueFoundry secret FQN containing the client ID.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.client_id","typeLabel":"string"},"client_authentication":{"description":"How the OAuth client authenticates to the token endpoint. Certificate auth is available for Microsoft Entra client_credentials and jwt_bearer (on-behalf-of).","type":"string","enum":["client_secret","certificate"],"default":"client_secret","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.client_authentication","typeLabel":"enum\u003cstring>"},"client_secret":{"description":"Client secret or the TrueFoundry secret FQN containing the client secret for OAuth2.","type":"string","minLength":1,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.client_secret","typeLabel":"string"},"certificate_thumbprint":{"description":"Hex SHA-1 thumbprint from the Azure portal, or the TrueFoundry secret FQN containing it.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.certificate_thumbprint","typeLabel":"string"},"private_key":{"description":"PEM private key for Microsoft Entra certificate-based client authentication, or the TrueFoundry secret FQN containing it.","type":"string","minLength":1,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.private_key","typeLabel":"string"},"registration_url":{"description":"URL for dynamic client registration (RFC 7591). If provided, client credentials will be obtained automatically using the Dynamic Client Registration (DCR) process.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.registration_url","typeLabel":"string"},"introspection_url":{"description":"URL to fetch token expiry (RFC 7662) when the provider does not return expires_in (e.g. Salesforce). Requires client_id and client_secret.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.introspection_url","typeLabel":"string"},"include_resource":{"description":"When enabled, the MCP server URL is sent as the resource parameter (RFC 8707) on both authorization and token endpoint requests.","type":"boolean","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.include_resource","typeLabel":"boolean"},"code_challenge_methods_supported":{"description":"List of supported PKCE code challenge methods (S256 only)","type":"array","items":{"type":"string","enum":["S256"],"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.code_challenge_methods_supported.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.code_challenge_methods_supported","typeLabel":"enum\u003cstring>[]"},"jwt_source":{"description":"Source of the JWT token to be used for verification.","type":"string","enum":["access_token","id_token"],"default":"access_token","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.jwt_source","typeLabel":"enum\u003cstring>"},"scopes":{"description":"List of scopes to request from the OAuth2 provider.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.scopes.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.scopes","typeLabel":"string[]"},"additional_token_params":{"description":"Extra key/value pairs sent on every token endpoint request (e.g. Auth0 'organization').","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.additional_token_params.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.additional_token_params","typeLabel":"object"}},"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1","typeLabel":"MCPServerOAuth2 · object"},{"type":"object","title":"MCPServerPassthrough","description":"Authenticate using your existing TrueFoundry account (PAT or Virtual Accounts). Your credentials are automatically passed to the MCP server.","required":["type"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=passthrough","type":"string","enum":["passthrough"],"default":"passthrough","isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.2","typeLabel":"MCPServerPassthrough · object"},{"type":"object","title":"MCPServerAwsSigV4Auth","description":"Sign requests to AWS Bedrock AgentCore with AWS credentials (SigV4).","required":["type","region","auth"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=aws-sigv4","type":"string","enum":["aws-sigv4"],"default":"aws-sigv4","isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.3.type","typeLabel":"enum\u003cstring>"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.3.region","typeLabel":"enum\u003cstring>"},"auth":{"type":"any","isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.3.auth","typeLabel":"any"}},"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.3","typeLabel":"MCPServerAwsSigV4Auth · object"}],"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data","typeLabel":"MCPServerHeaderAuth · object | MCPServerOAuth2 · object | MCPServerPassthrough · object | MCPServerAwsSigV4Auth · object"},"authorized_subjects":{"description":"List of teams/users who can use this MCP server.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0.authorized_subjects","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.0","typeLabel":"MCPServerIntegration · object"},{"type":"object","title":"VirtualMCPServerIntegration","description":"Virtual MCP Server","required":["type","name","description","servers"],"x-fern-type-name":"MCPServerIntegrations","properties":{"type":{"description":"+value=integration/mcp-server/virtual","type":"string","enum":["integration/mcp-server/virtual"],"default":"integration/mcp-server/virtual","isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Virtual MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.1.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this Virtual MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.1.description","typeLabel":"string"},"servers":{"description":"List of source MCP servers to include in this virtual server.","type":"array","items":{"description":"Virtual MCP Server Source","type":"object","required":["name"],"properties":{"name":{"description":"Name of the source MCP server within this group (use {provider_account_name}/{integration_name} format).","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]/[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.1.servers.items.[INDEX].name","typeLabel":"string"},"enabled_tools":{"description":"List of tools to enable from this source server.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.1.servers.items.[INDEX].enabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.1.servers.items.[INDEX].enabled_tools","typeLabel":"string[]"}},"title":"VirtualMCPServerSource","x-fern-type-name":"VirtualMCPServerSource","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.1.servers.items.[INDEX]","typeLabel":"VirtualMCPServerSource · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.1.servers","typeLabel":"VirtualMCPServerSource · object[]"},"authorized_subjects":{"description":"List of teams/users who can use this MCP server.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.1.authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.1.authorized_subjects","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX].oneOf.1","typeLabel":"VirtualMCPServerIntegration · object"}],"uniqueKey":"manifest.oneOf.65.integrations.items.[INDEX]","typeLabel":"MCPServerIntegration · object | VirtualMCPServerIntegration · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.65.integrations","typeLabel":"(MCPServerIntegration · object | VirtualMCPServerIntegration · object)[]"},"collaborators":{"description":"List of teams/users who can manage this MCP Server Group. These subjects can add new MCP server integrations, can edit existing ones and can also use the MCP server.","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.65.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.65.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.65.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.65.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.65.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.65.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.65","typeLabel":"MCPServerProviderAccount · object"},{"type":"object","title":"GuardrailConfigGroup","description":"Manifest of the resource to be created or updated","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+uiType=Hidden\n+value=provider-account/guardrail-config-group","type":"string","enum":["provider-account/guardrail-config-group"],"default":"provider-account/guardrail-config-group","isRequired":true,"uniqueKey":"manifest.oneOf.66.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Guardrail Config Group.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.name","typeLabel":"string"},"integrations":{"description":"List of Guardrail Configs, which are part of this Guardrail Config Group.","type":"array","items":{"oneOf":[{"type":"object","title":"OpenAIModerationsGuardrailConfig","description":"OpenAI Moderation","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.0.name","typeLabel":"string"},"type":{"description":"+value=integration/guardrail-config/openai-moderations\n+sort=50\n+uiType=Hidden","type":"string","enum":["integration/guardrail-config/openai-moderations"],"default":"integration/guardrail-config/openai-moderations","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"OpenAI API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.0.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"Your OpenAI API key for authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.0.auth_data.api_key","typeLabel":"string"}},"title":"OpenaiApiKeyAuth","x-fern-type-name":"OpenaiApiKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.0.auth_data","typeLabel":"OpenaiApiKeyAuth · object"},"operation":{"description":"The operation type for this guardrail. OpenAI Moderation guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.0.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.0.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["model"],"properties":{"model":{"description":"The model to use for the OpenAI Moderation API.","type":"string","default":"omni-moderation-latest","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.0.config.model","typeLabel":"string"},"base_url":{"description":"Optional custom base URL for OpenAI API. If not provided, the default base URL will be used.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.0.config.base_url","typeLabel":"string"},"category_thresholds":{"type":"object","additionalProperties":{"type":"number","minimum":0,"maximum":1,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.0.config.category_thresholds.additionalProperties","typeLabel":"number"},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.0.config.category_thresholds","typeLabel":"object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.0.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"OpenAI content moderation for hate, harassment, self-harm, sexual, violence, and illicit content","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.0.description","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.0","typeLabel":"OpenAIModerationsGuardrailConfig · object"},{"type":"object","title":"AWSBedrockGuardrailConfig","description":"AWS Bedrock","required":["name","type","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.1.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/aws-bedrock","type":"string","enum":["integration/guardrail-config/aws-bedrock"],"default":"integration/guardrail-config/aws-bedrock","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests.\nValidate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.1.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.1.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["guardrail_id","guardrail_version","region"],"properties":{"guardrail_id":{"description":"The unique identifier of the Bedrock Guardrail created in AWS console","type":"string","pattern":"^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.1.config.guardrail_id","typeLabel":"string"},"guardrail_version":{"description":"Version number of the guardrail to use (e.g., 2 for version 2)","type":"string","pattern":"^(([1-9][0-9]{0,7})|(DRAFT))$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.1.config.guardrail_version","typeLabel":"string"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.1.config.region","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.1.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"AWS Bedrock Guardrails for content filtering and safety policies","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.1.description","typeLabel":"string"},"auth_data":{"type":"any","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.1.auth_data","typeLabel":"any"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.1.priority","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.1","typeLabel":"AWSBedrockGuardrailConfig · object"},{"type":"object","title":"CustomGuardrailConfig","description":"Custom","required":["name","type","operation","enforcing_strategy","target","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.2.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/custom","type":"string","enum":["integration/guardrail-config/custom"],"default":"integration/guardrail-config/custom","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests.\nValidate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.2.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.2.enforcing_strategy","typeLabel":"enum\u003cstring>"},"target":{"description":"Specify whether the guardrail should be applied to the request or response. Guardrails with target \"Request\" can be only used in input guardrails and guardrails with target \"Response\" can only be used in output guardrails.","type":"string","enum":["request","response"],"default":"request","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.2.target","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["url"],"properties":{"url":{"description":"The URL of the Guardrail to send a post request to.","type":"string","pattern":"^https?:\\/\\/[^\\s\\/]+(\\/[^\\s\\/]*)*[^\\/\\s]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.2.config.url","typeLabel":"string"},"headers":{"description":"Headers for the Guardrail Server. Forwarded to the Guardrail Server as is. For example: `{\"Authorization\": \"APIKey \u003ctoken>\"}`","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.2.config.headers.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.2.config.headers","typeLabel":"object"},"config":{"description":"The config for the Guardrail Server. This is a JSON object that will be sent as a config to Guardrail Server along with the request.","type":"object","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.2.config.config","typeLabel":"object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.2.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Custom guardrail server for validate or mutate via HTTP endpoint","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.2.description","typeLabel":"string"},"auth_data":{"type":"any","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.2.auth_data","typeLabel":"any"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.2.priority","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.2","typeLabel":"CustomGuardrailConfig · object"},{"type":"object","title":"AzurePIIGuardrailConfig","description":"Azure PII","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.3.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/azure-pii","type":"string","enum":["integration/guardrail-config/azure-pii"],"default":"integration/guardrail-config/azure-pii","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.3.auth_data","typeLabel":"any"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests. Validate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["mutate","validate"],"default":"mutate","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.3.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.3.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["resource_name","api_version","domain","pii_categories","model_version","language"],"properties":{"resource_name":{"description":"Name of your Azure AI Language resource where the PII detection service is deployed (e.g., my-language-resource)","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.3.config.resource_name","typeLabel":"string"},"api_version":{"description":"API version for the PII detection API","type":"string","default":"2024-11-01","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.3.config.api_version","typeLabel":"string"},"domain":{"description":"Specialized domain for PII detection. Use phi for PHI (Protected Health Information) or none for general text","type":"string","enum":["none","phi"],"default":"none","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.3.config.domain","typeLabel":"enum\u003cstring>"},"pii_categories":{"description":"Categories of PII to detect.","type":"array","items":{"type":"string","enum":["*","ABARoutingNumber","Address","Age","ARNationalIdentityNumber","AUBankAccountNumber","AUDriversLicenseNumber","AUMedicalAccountNumber","AUPassportNumber","AUTaxFileNumber","AUBusinessNumber","AUCompanyNumber","ATIdentityCard","ATTaxIdentificationNumber","ATValueAddedTaxNumber","AzureDocumentDBAuthKey","AzureIAASDatabaseConnectionAndSQLString","AzureIoTConnectionString","AzurePublishSettingPassword","AzureRedisCacheString","AzureSAS","AzureServiceBusString","AzureStorageAccountKey","AzureStorageAccountGeneric","BankAccountNumber","BENationalNumber","BEValueAddedTaxNumber","BRCPFNumber","BRLegalEntityNumber","BRNationalIDRG","BGUniformCivilNumber","CABankAccountNumber","CADriversLicenseNumber","CAHealthServiceNumber","CAPassportNumber","CAPersonalHealthID","CASocialInsuranceNumber","CLIdentityCardNumber","CNResidentIdentityCardNumber","CreditCardNumber","HRIdentityCardNumber","HRNationalIDCardNumber","HRPersonalIdentificationNumber","CYIdentityCard","CYTaxIdentificationNumber","CZPersonalIdentityNumber","Date","DateTime","DKPersonalIdentificationNumber","DEANumber","Email","EEPersonalIdentificationCode","EUDebitCardNumber","EUDriversLicenseNumber","EUGPSCoordinates","EUNationalIdentificationNumber","EUPassportNumber","EUSocialSecurityNumber","EUTaxIdentificationNumber","FIEuropeanHealthNumber","FINationalID","FIPassportNumber","FRDriversLicenseNumber","FRHealthInsuranceNumber","FRNationalID","FRPassportNumber","FRSocialSecurityNumber","FRTaxIdentificationNumber","FRValueAddedTaxNumber","DEDriversLicenseNumber","DEPassportNumber","DEIdentityCardNumber","DETaxIdentificationNumber","DEValueAddedTaxNumber","GRNationalIDCard","GRTaxIdentificationNumber","HKIdentityCardNumber","HUValueAddedTaxNumber","HUPersonalIdentificationNumber","HUTaxIdentificationNumber","INPermanentAccountNumber","INUniqueIdentificationNumber","IDIdentityCardNumber","InternationalBankingAccountNumber","IPAddress","IEPersonalPublicServiceNumber","ILBankAccountNumber","ILNationalID","ITDriversLicenseNumber","ITFiscalCode","ITValueAddedTaxNumber","JPBankAccountNumber","JPDriversLicenseNumber","JPPassportNumber","JPResidentRegistrationNumber","JPSocialInsuranceNumber","JPMyNumberCorporate","JPMyNumberPersonal","JPResidenceCardNumber","LVPersonalCode","LTPersonalCode","LUNationalIdentificationNumberNatural","LUNationalIdentificationNumberNonNatural","MYIdentityCardNumber","MTIdentityCardNumber","MTTaxIDNumber","NLCitizensServiceNumber","NLTaxIdentificationNumber","NLValueAddedTaxNumber","NZBankAccountNumber","NZDriversLicenseNumber","NZInlandRevenueNumber","NZMinistryOfHealthNumber","NZSocialWelfareNumber","NOIdentityNumber","Organization","Person","PersonType","PHUnifiedMultiPurposeIDNumber","PhoneNumber","PLIdentityCard","PLNationalID","PLPassportNumber","PLTaxIdentificationNumber","PLREGONNumber","PTCitizenCardNumber","PTTaxIdentificationNumber","ROPersonalNumericalCode","RUPassportNumberDomestic","RUPassportNumberInternational","SANationalID","SGNationalRegistrationIdentityCardNumber","SKPersonalNumber","SITaxIdentificationNumber","SIUniqueMasterCitizenNumber","ZAIdentificationNumber","KRResidentRegistrationNumber","ESDNI","ESSocialSecurityNumber","ESTaxIdentificationNumber","AzureSQLConnectionString","SENationalID","SEPassportNumber","SETaxIdentificationNumber","SWIFTCode","CHSocialSecurityNumber","TWNationalID","TWPassportNumber","TWResidentCertificate","THPopulationIdentificationCode","TRNationalIdentificationNumber","UKDriversLicenseNumber","UKElectoralRollNumber","UKNationalHealthNumber","UKNationalInsuranceNumber","UKUniqueTaxpayerNumber","USUKPassportNumber","USBankAccountNumber","USDriversLicenseNumber","USIndividualTaxpayerIdentification","USSocialSecurityNumber","URL"],"title":"AzurePIICategory","x-fern-type-name":"AzurePIICategory","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.3.config.pii_categories.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["*"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.3.config.pii_categories","typeLabel":"enum\u003cstring>[]"},"model_version":{"description":"Version of the PII detection model to use, use latest for the newest model or specify a specific version for consistency","type":"string","default":"latest","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.3.config.model_version","typeLabel":"string"},"language":{"description":"Language code for PII detection (e.g., en for English)","type":"string","default":"en","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.3.config.language","typeLabel":"string"},"custom_host":{"description":"Custom endpoint URL for the PII detection API (optional, uses default Azure endpoint if not specified)","type":"string","pattern":"^(https?://)\\S+$","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.3.config.custom_host","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.3.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Azure AI Language PII detection and redaction for sensitive data","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.3.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.3.priority","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.3","typeLabel":"AzurePIIGuardrailConfig · object"},{"type":"object","title":"AzureContentSafetyGuardrailConfig","description":"Azure Content Safety","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.4.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/azure-content-safety","type":"string","enum":["integration/guardrail-config/azure-content-safety"],"default":"integration/guardrail-config/azure-content-safety","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.4.auth_data","typeLabel":"any"},"operation":{"description":"The operation type for this guardrail. Azure Content Safety guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.4.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.4.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["resource_name","api_version","severity_threshold","categories"],"properties":{"resource_name":{"description":"Name of your Azure Content Safety resource where the service is deployed (e.g., my-content-safety)","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.4.config.resource_name","typeLabel":"string"},"api_version":{"description":"API version for the Content Safety API","type":"string","default":"2024-09-01","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.4.config.api_version","typeLabel":"string"},"severity_threshold":{"description":"Minimum severity level (0-6) to flag content. Lower values are more restrictive (more content is blocked). 0=Safe, 2=Low risk, 4=Medium risk, 6=High risk","type":"number","default":2,"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.4.config.severity_threshold","typeLabel":"number"},"categories":{"description":"Types of harmful content to detect: Hate (hate speech), SelfHarm (self-injury), Sexual (sexual content), Violence (violent content)","type":"array","items":{"type":"string","enum":["Hate","SelfHarm","Sexual","Violence"],"title":"AzureContentSafetyCategory","x-fern-type-name":"AzureContentSafetyCategory","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.4.config.categories.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["Hate","SelfHarm","Sexual","Violence"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.4.config.categories","typeLabel":"enum\u003cstring>[]"},"custom_host":{"description":"Custom endpoint URL for the Content Safety API (optional, uses default Azure endpoint if not specified)","type":"string","pattern":"^(https?://)\\S+$","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.4.config.custom_host","typeLabel":"string"},"blocklist_names":{"description":"Names of custom blocklists created in Azure Content Safety to check text against. Leave empty if not using custom blocklists","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.4.config.blocklist_names.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.4.config.blocklist_names","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.4.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Azure Content Safety for hate, self-harm, sexual, and violence detection","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.4.description","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.4","typeLabel":"AzureContentSafetyGuardrailConfig · object"},{"type":"object","title":"AzurePromptShieldGuardrailConfig","description":"Azure Prompt Shield","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.5.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/azure-prompt-shield","type":"string","enum":["integration/guardrail-config/azure-prompt-shield"],"default":"integration/guardrail-config/azure-prompt-shield","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.5.auth_data","typeLabel":"any"},"operation":{"description":"The operation type for this guardrail. Azure Prompt Shield guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.5.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.5.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["resource_name","api_version"],"properties":{"resource_name":{"description":"Name of your Azure Content Safety resource where the Prompt Shield service is deployed (e.g., my-content-safety)","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.5.config.resource_name","typeLabel":"string"},"api_version":{"description":"API version for the Prompt Shield API","type":"string","default":"2024-09-01","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.5.config.api_version","typeLabel":"string"},"custom_host":{"description":"Custom endpoint URL for the Prompt Shield API (optional, uses default Azure endpoint if not specified)","type":"string","pattern":"^(https?://)\\S+$","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.5.config.custom_host","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.5.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Azure Prompt Shield for jailbreak and prompt injection detection","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.5.description","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.5","typeLabel":"AzurePromptShieldGuardrailConfig · object"},{"type":"object","title":"EnkryptAIGuardrailConfig","description":"Enkrypt AI","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.6.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/enkrypt-ai","type":"string","enum":["integration/guardrail-config/enkrypt-ai"],"default":"integration/guardrail-config/enkrypt-ai","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.6.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"Authentication method using Enkrypt AI API key","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.6.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Enkrypt AI authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.6.auth_data.api_key","typeLabel":"string"}},"title":"EnkryptAIKeyAuth","x-fern-type-name":"EnkryptAIKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.6.auth_data","typeLabel":"EnkryptAIKeyAuth · object"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests.\nValidate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.6.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.6.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["guardrail_name"],"properties":{"guardrail_name":{"description":"The name of the guardrail to use for the Enkrypt AI Guardrail.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.6.config.guardrail_name","typeLabel":"string"},"base_url":{"description":"Optional override for the Enkrypt AI Guardrails base URL. Defaults to https://api.enkryptai.com if not provided. Set this for region-specific deployments (e.g. https://api.au.enkryptai.com).","type":"string","pattern":"^https:\\/\\/\\S+$","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.6.config.base_url","typeLabel":"string"},"user_metadata":{"description":"Optional static key-value pairs sent as user_metadata in the Enkrypt AI detect request body. Request metadata from the X-TFY-METADATA header is also forwarded and overrides matching keys.","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.6.config.user_metadata.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.6.config.user_metadata","typeLabel":"object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.6.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Enkrypt AI guardrails for content safety and policy enforcement","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.6.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.6.priority","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.6","typeLabel":"EnkryptAIGuardrailConfig · object"},{"type":"object","title":"PaloAltoPrismaAIRSGuardrailConfig","description":"Palo Alto Prisma AIRS","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.7.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/palo-alto-prisma-airs","type":"string","enum":["integration/guardrail-config/palo-alto-prisma-airs"],"default":"integration/guardrail-config/palo-alto-prisma-airs","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.7.type","typeLabel":"enum\u003cstring>"},"auth_data":{"type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.7.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"API key for the Palo Alto Prisma AIRS account","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.7.auth_data.api_key","typeLabel":"string"}},"title":"PaloAltoPrismaAIRSKeyAuth","x-fern-type-name":"PaloAltoPrismaAIRSKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.7.auth_data","typeLabel":"PaloAltoPrismaAIRSKeyAuth · object"},"operation":{"description":"The operation type for this guardrail. Palo Alto Prisma AIRS guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.7.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.7.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["profile_name"],"properties":{"profile_name":{"description":"The profile name associated with this Guardrail Config.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.7.config.profile_name","typeLabel":"string"},"base_url":{"description":"Optional override for the base URL for Palo Alto Prisma AIRS. Defaults to https://service.api.aisecurity.paloaltonetworks.com/v1/ if not provided.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.7.config.base_url","typeLabel":"string"},"mode":{"description":"Execution mode for the guardrail. Sync waits for the guardrail check to complete before proceeding. Async triggers the check without waiting. Defaults to sync.","type":"string","enum":["sync","async"],"default":"sync","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.7.config.mode","typeLabel":"enum\u003cstring>"},"metadata_key_mapping":{"description":"Map Palo Alto AIRS metadata fields to TrueFoundry request metadata keys. Key is the Palo Alto AIRS metadata field name, value is the corresponding key from X-TFY-METADATA header on the TrueFoundry side. Example: {\"app_user\": \"user_email\", \"ai_model\": \"model_name\"}. Reserved AIRS keys: ai_model, app_user, app_name. [Docs](https://www.truefoundry.com/docs/ai-gateway/palo-alto-airs)","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.7.config.metadata_key_mapping.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.7.config.metadata_key_mapping","typeLabel":"object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.7.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Palo Alto Prisma AIRS for AI security and content validation","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.7.description","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.7","typeLabel":"PaloAltoPrismaAIRSGuardrailConfig · object"},{"type":"object","title":"FiddlerGuardrailConfig","description":"Fiddler","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.8.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/fiddler","type":"string","enum":["integration/guardrail-config/fiddler"],"default":"integration/guardrail-config/fiddler","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.8.type","typeLabel":"enum\u003cstring>"},"auth_data":{"type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.8.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"API key for the Fiddler account","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.8.auth_data.api_key","typeLabel":"string"}},"title":"FiddlerKeyAuth","x-fern-type-name":"FiddlerKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.8.auth_data","typeLabel":"FiddlerKeyAuth · object"},"operation":{"description":"The operation type for this guardrail. Fiddler guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.8.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.8.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["guard_type"],"properties":{"guard_type":{"type":"string","enum":["fiddler-safety","fiddler-response-faithfulness"],"title":"FiddlerGuardType","x-fern-type-name":"FiddlerGuardType","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.8.config.guard_type","typeLabel":"enum\u003cstring>"},"base_url":{"description":"Optional override for the Fiddler guardrails base URL. Defaults to https://guardrails.cloud.fiddler.ai if not provided. Set this if your tenant is provisioned on a different host.","type":"string","pattern":"^https?:\\/\\/\\S+$","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.8.config.base_url","typeLabel":"string"},"threshold":{"description":"Confidence threshold (0.0-1.0) for flagging content. Content scoring above the threshold will be flagged","type":"number","minimum":0,"maximum":1,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.8.config.threshold","typeLabel":"number"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.8.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Fiddler for harmful content detection or response faithfulness checks","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.8.description","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.8","typeLabel":"FiddlerGuardrailConfig · object"},{"type":"object","title":"CiscoAIDefenseGuardrailConfig","description":"Cisco AI Defense","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.9.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/cisco-ai-defense","type":"string","enum":["integration/guardrail-config/cisco-ai-defense"],"default":"integration/guardrail-config/cisco-ai-defense","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.9.type","typeLabel":"enum\u003cstring>"},"auth_data":{"type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.9.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"API key generated from the Cisco AI Defense UI","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.9.auth_data.api_key","typeLabel":"string"}},"title":"CiscoAIDefenseKeyAuth","x-fern-type-name":"CiscoAIDefenseKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.9.auth_data","typeLabel":"CiscoAIDefenseKeyAuth · object"},"operation":{"description":"Cisco AI Defense inspects and validates content without modifying it.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.9.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.9.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["region"],"properties":{"region":{"description":"Cisco AI Defense regional API endpoint.","type":"string","enum":["us","eu","ap"],"default":"us","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.9.config.region","typeLabel":"enum\u003cstring>"},"metadata":{"description":"Additional metadata forwarded to Cisco AI Defense. The authenticated TrueFoundry user is added automatically.","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.9.config.metadata.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.9.config.metadata","typeLabel":"object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.9.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Cisco AI Defense for security, safety, privacy, and relevance inspection","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.9.description","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.9","typeLabel":"CiscoAIDefenseGuardrailConfig · object"},{"type":"object","title":"CrowdStrikeAIDRGuardrailConfig","description":"CrowdStrike AIDR","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.10.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/crowdstrike-aidr","type":"string","enum":["integration/guardrail-config/crowdstrike-aidr"],"default":"integration/guardrail-config/crowdstrike-aidr","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.10.type","typeLabel":"enum\u003cstring>"},"auth_data":{"type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.10.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"Bearer token for the CrowdStrike AIDR account","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.10.auth_data.api_key","typeLabel":"string"}},"title":"CrowdStrikeAIDRKeyAuth","x-fern-type-name":"CrowdStrikeAIDRKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.10.auth_data","typeLabel":"CrowdStrikeAIDRKeyAuth · object"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails check for blocked content. Mutate guardrails additionally redact sensitive content (PII) and support unredaction on output.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.10.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.10.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","properties":{"base_url":{"description":"The CrowdStrike API base URL for AIDR. Varies by region: US-1 (https://api.crowdstrike.com/aidr/aiguard), US-2 (https://api.us-2.crowdstrike.com/aidr/aiguard), EU-1 (https://api.eu-1.crowdstrike.com/aidr/aiguard).","type":"string","pattern":"^https?:\\/\\/\\S+$","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.10.config.base_url","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.10.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"CrowdStrike AIDR AI Guard for content security and PII protection","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.10.description","typeLabel":"string"},"enforce_on_detection":{"description":"When enabled, the gateway treats any detector firing as a violation even when AIDR returns blocked=false. Set to false to follow AIDR's policy verdict.","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.10.enforce_on_detection","typeLabel":"boolean"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.10.priority","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.10","typeLabel":"CrowdStrikeAIDRGuardrailConfig · object"},{"type":"object","title":"PatronusGuardrailConfig","description":"Patronus","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.11.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/patronus","type":"string","enum":["integration/guardrail-config/patronus"],"default":"integration/guardrail-config/patronus","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.11.type","typeLabel":"enum\u003cstring>"},"auth_data":{"type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.11.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"API key for the Patronus account","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.11.auth_data.api_key","typeLabel":"string"}},"title":"PatronusKeyAuth","x-fern-type-name":"PatronusKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.11.auth_data","typeLabel":"PatronusKeyAuth · object"},"operation":{"description":"The operation type for this guardrail. Patronus guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.11.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.11.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["target","evaluators"],"properties":{"target":{"description":"Where to apply evaluation: request (evaluate user input) or response (evaluate model response)","type":"string","enum":["response","request"],"default":"response","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.11.config.target","typeLabel":"enum\u003cstring>"},"evaluators":{"description":"Patronus evaluators guard against GenAI failures by checking for evaluation criteria, refer to [docs](https://docs.patronus.ai/docs/evaluators/reference_guide)","type":"array","items":{"type":"any","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.11.config.evaluators.items.[INDEX]","typeLabel":"any"},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.11.config.evaluators","typeLabel":"any[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.11.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Patronus evaluators for relevance, safety, PII, PHI, toxicity, and more","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.11.description","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.11","typeLabel":"PatronusGuardrailConfig · object"},{"type":"object","title":"SecretDetectionGuardrailConfig","description":"Secrets Detection","required":["name","type","operation","enforcing_strategy"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.12.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/secret-detection","type":"string","enum":["integration/guardrail-config/secret-detection"],"default":"integration/guardrail-config/secret-detection","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.12.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests. Validate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.12.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.12.enforcing_strategy","typeLabel":"enum\u003cstring>"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Detects likely credentials/secrets (AWS keys, API keys, JWT tokens, private keys)","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.12.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.12.priority","typeLabel":"integer"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","properties":{"redaction_text":{"description":"Text to use when redacting detected secrets in logs and error messages. Defaults to '[REDACTED]'.Only applicable in mutate mode.","type":"string","default":"[REDACTED]","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.12.config.redaction_text","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.12.config","typeLabel":"object"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.12","typeLabel":"SecretDetectionGuardrailConfig · object"},{"type":"object","title":"CodeSafetyLinterGuardrailConfig","description":"Code Safety Linter","required":["name","type","operation","enforcing_strategy"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.13.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/code-safety-linter","type":"string","enum":["integration/guardrail-config/code-safety-linter"],"default":"integration/guardrail-config/code-safety-linter","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.13.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type for this guardrail. Code Safety Linter guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.13.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.13.enforcing_strategy","typeLabel":"enum\u003cstring>"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Detects unsafe code patterns in tool outputs (eval, exec, os.system, subprocess, rm -rf)","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.13.description","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.13","typeLabel":"CodeSafetyLinterGuardrailConfig · object"},{"type":"object","title":"SQLSanitizerGuardrailConfig","description":"SQL Sanitizer","required":["name","type","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.14.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/sql-sanitizer","type":"string","enum":["integration/guardrail-config/sql-sanitizer"],"default":"integration/guardrail-config/sql-sanitizer","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.14.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"Validate (detect and block) or Mutate (detect, sanitize comments, and continue).","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.14.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.14.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"type":"object","properties":{"block_drop":{"description":"Block SQL DROP statements as dangerous operations.","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config.block_drop","typeLabel":"boolean"},"block_truncate":{"description":"Block SQL TRUNCATE statements as dangerous operations.","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config.block_truncate","typeLabel":"boolean"},"block_alter":{"description":"Block SQL ALTER statements as dangerous operations.","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config.block_alter","typeLabel":"boolean"},"block_grant":{"description":"Block SQL GRANT statements as dangerous operations.","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config.block_grant","typeLabel":"boolean"},"block_revoke":{"description":"Block SQL REVOKE statements as dangerous operations.","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config.block_revoke","typeLabel":"boolean"},"strip_comments":{"description":"Remove SQL comments (-- and block comments) from queries. In mutate mode, comments are stripped from the output.","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config.strip_comments","typeLabel":"boolean"},"block_delete_without_where":{"description":"Flag DELETE FROM statements that lack a WHERE clause as potentially dangerous.","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config.block_delete_without_where","typeLabel":"boolean"},"block_update_without_where":{"description":"Flag UPDATE statements that lack a WHERE clause as potentially dangerous.","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config.block_update_without_where","typeLabel":"boolean"},"require_parameterization":{"description":"Detect naive string interpolation patterns (+, %., {}) that may indicate SQL injection vulnerabilities.","type":"boolean","default":false,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config.require_parameterization","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Detects and sanitizes risky SQL patterns (DROP, TRUNCATE, DELETE/UPDATE without WHERE, string interpolation)","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.14.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.14.priority","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.14","typeLabel":"SQLSanitizerGuardrailConfig · object"},{"type":"object","title":"RegexGuardrailConfig","description":"Regex Pattern Match","required":["name","type","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.15.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/regex","type":"string","enum":["integration/guardrail-config/regex"],"default":"integration/guardrail-config/regex","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.15.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"Validate blocks when pattern matches. Mutate replaces matched text and continues.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.15.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.15.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","properties":{"preset_patterns":{"description":"Select one or more common regex patterns from the predefined list.","type":"object","required":["presets"],"properties":{"presets":{"description":"Select one or more common regex patterns from the predefined list.","type":"array","items":{"type":"string","enum":["us_ssn","us_ssn_no_dash","email","us_phone","india_aadhaar","india_pan","visa","mastercard","amex","discover","credit_card","aws_access_key","aws_secret_key","github_token","slack_token","generic_api_key","ipv4","ipv6","url","passport_us","passport_uk","passport_germany","passport_france","passport_netherlands","passport_canada","passport_india","passport_australia","passport_china","passport_japan","gender_sexual_orientation","race_ethnicity_national_origin","religion","age_discrimination","disability","marital_family_status","military_status","public_assistance","weapons_firearms","weapons_other","explosives","violence_threats","terrorism","self_harm_suicide","illegal_activities","harassment_hate"],"title":"PresetRegexPatternEnum","x-fern-type-name":"PresetRegexPatternEnum","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.15.config.preset_patterns.presets.items.[INDEX]","typeLabel":"enum\u003cstring>"},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.15.config.preset_patterns.presets","typeLabel":"enum\u003cstring>[]"}},"title":"PresetRegexPattern","x-fern-type-name":"PresetRegexPattern","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.15.config.preset_patterns","typeLabel":"PresetRegexPattern · object"},"custom_patterns":{"description":"Enter your own regex patterns to match against content, each with its own redaction text (used in mutate mode).","type":"array","items":{"description":"Custom Regex Pattern","type":"object","required":["pattern"],"properties":{"pattern":{"description":"A custom regex pattern to match against content (e.g., \"\\\\b\\\\d{3}-\\\\d{2}-\\\\d{4}\\\\b\" for SSN)","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.15.config.custom_patterns.items.[INDEX].pattern","typeLabel":"string"},"redaction_text":{"description":"Text to use when redacting matched content (only applicable in mutate mode). Defaults to '[REDACTED]'.","type":"string","default":"[REDACTED]","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.15.config.custom_patterns.items.[INDEX].redaction_text","typeLabel":"string"}},"title":"CustomRegexPattern","x-fern-type-name":"CustomRegexPattern","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.15.config.custom_patterns.items.[INDEX]","typeLabel":"CustomRegexPattern · object"},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.15.config.custom_patterns","typeLabel":"CustomRegexPattern · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.15.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Regex pattern matching for content filtering or redaction","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.15.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.15.priority","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.15","typeLabel":"RegexGuardrailConfig · object"},{"type":"object","title":"TfyContentModerationGuardrailConfig","description":"Content Moderation","required":["name","type","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.16.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/tfy-content-moderation","type":"string","enum":["integration/guardrail-config/tfy-content-moderation"],"default":"integration/guardrail-config/tfy-content-moderation","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.16.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type for this guardrail. TrueFoundry Content Moderation guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.16.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.16.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["severity_threshold","categories"],"properties":{"severity_threshold":{"description":"Minimum severity level (0-6) to flag content. Lower values are more restrictive (more content is blocked). 0=Safe, 2=Low risk, 4=Medium risk, 6=High risk","type":"number","default":2,"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.16.config.severity_threshold","typeLabel":"number"},"categories":{"description":"Types of harmful content to detect: Hate (hate speech), SelfHarm (self-injury), Sexual (sexual content), Violence (violent content)","type":"array","items":{"type":"string","enum":["Hate","SelfHarm","Sexual","Violence"],"title":"AzureContentSafetyCategory","x-fern-type-name":"AzureContentSafetyCategory","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.16.config.categories.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["Hate","SelfHarm","Sexual","Violence"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.16.config.categories","typeLabel":"enum\u003cstring>[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.16.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Content moderation guardrail, managed by TrueFoundry","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.16.description","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.16","typeLabel":"TfyContentModerationGuardrailConfig · object"},{"type":"object","title":"TfyPIIGuardrailConfig","description":"PII/PHI","required":["name","type","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.17.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/tfy-pii","type":"string","enum":["integration/guardrail-config/tfy-pii"],"default":"integration/guardrail-config/tfy-pii","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.17.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests. Validate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["mutate","validate"],"default":"mutate","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.17.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.17.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["pii_categories"],"properties":{"pii_categories":{"description":"Categories of PII to detect.","type":"array","items":{"type":"string","enum":["*","ABARoutingNumber","Address","Age","ARNationalIdentityNumber","AUBankAccountNumber","AUDriversLicenseNumber","AUMedicalAccountNumber","AUPassportNumber","AUTaxFileNumber","AUBusinessNumber","AUCompanyNumber","ATIdentityCard","ATTaxIdentificationNumber","ATValueAddedTaxNumber","AzureDocumentDBAuthKey","AzureIAASDatabaseConnectionAndSQLString","AzureIoTConnectionString","AzurePublishSettingPassword","AzureRedisCacheString","AzureSAS","AzureServiceBusString","AzureStorageAccountKey","AzureStorageAccountGeneric","BankAccountNumber","BENationalNumber","BEValueAddedTaxNumber","BRCPFNumber","BRLegalEntityNumber","BRNationalIDRG","BGUniformCivilNumber","CABankAccountNumber","CADriversLicenseNumber","CAHealthServiceNumber","CAPassportNumber","CAPersonalHealthID","CASocialInsuranceNumber","CLIdentityCardNumber","CNResidentIdentityCardNumber","CreditCardNumber","HRIdentityCardNumber","HRNationalIDCardNumber","HRPersonalIdentificationNumber","CYIdentityCard","CYTaxIdentificationNumber","CZPersonalIdentityNumber","Date","DateTime","DKPersonalIdentificationNumber","DEANumber","Email","EEPersonalIdentificationCode","EUDebitCardNumber","EUDriversLicenseNumber","EUGPSCoordinates","EUNationalIdentificationNumber","EUPassportNumber","EUSocialSecurityNumber","EUTaxIdentificationNumber","FIEuropeanHealthNumber","FINationalID","FIPassportNumber","FRDriversLicenseNumber","FRHealthInsuranceNumber","FRNationalID","FRPassportNumber","FRSocialSecurityNumber","FRTaxIdentificationNumber","FRValueAddedTaxNumber","DEDriversLicenseNumber","DEPassportNumber","DEIdentityCardNumber","DETaxIdentificationNumber","DEValueAddedTaxNumber","GRNationalIDCard","GRTaxIdentificationNumber","HKIdentityCardNumber","HUValueAddedTaxNumber","HUPersonalIdentificationNumber","HUTaxIdentificationNumber","INPermanentAccountNumber","INUniqueIdentificationNumber","IDIdentityCardNumber","InternationalBankingAccountNumber","IPAddress","IEPersonalPublicServiceNumber","ILBankAccountNumber","ILNationalID","ITDriversLicenseNumber","ITFiscalCode","ITValueAddedTaxNumber","JPBankAccountNumber","JPDriversLicenseNumber","JPPassportNumber","JPResidentRegistrationNumber","JPSocialInsuranceNumber","JPMyNumberCorporate","JPMyNumberPersonal","JPResidenceCardNumber","LVPersonalCode","LTPersonalCode","LUNationalIdentificationNumberNatural","LUNationalIdentificationNumberNonNatural","MYIdentityCardNumber","MTIdentityCardNumber","MTTaxIDNumber","NLCitizensServiceNumber","NLTaxIdentificationNumber","NLValueAddedTaxNumber","NZBankAccountNumber","NZDriversLicenseNumber","NZInlandRevenueNumber","NZMinistryOfHealthNumber","NZSocialWelfareNumber","NOIdentityNumber","Organization","Person","PersonType","PHUnifiedMultiPurposeIDNumber","PhoneNumber","PLIdentityCard","PLNationalID","PLPassportNumber","PLTaxIdentificationNumber","PLREGONNumber","PTCitizenCardNumber","PTTaxIdentificationNumber","ROPersonalNumericalCode","RUPassportNumberDomestic","RUPassportNumberInternational","SANationalID","SGNationalRegistrationIdentityCardNumber","SKPersonalNumber","SITaxIdentificationNumber","SIUniqueMasterCitizenNumber","ZAIdentificationNumber","KRResidentRegistrationNumber","ESDNI","ESSocialSecurityNumber","ESTaxIdentificationNumber","AzureSQLConnectionString","SENationalID","SEPassportNumber","SETaxIdentificationNumber","SWIFTCode","CHSocialSecurityNumber","TWNationalID","TWPassportNumber","TWResidentCertificate","THPopulationIdentificationCode","TRNationalIdentificationNumber","UKDriversLicenseNumber","UKElectoralRollNumber","UKNationalHealthNumber","UKNationalInsuranceNumber","UKUniqueTaxpayerNumber","USUKPassportNumber","USBankAccountNumber","USDriversLicenseNumber","USIndividualTaxpayerIdentification","USSocialSecurityNumber","URL"],"title":"AzurePIICategory","x-fern-type-name":"AzurePIICategory","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.17.config.pii_categories.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["*"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.17.config.pii_categories","typeLabel":"enum\u003cstring>[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.17.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"PII detection and redaction guardrail, managed by TrueFoundry","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.17.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.17.priority","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.17","typeLabel":"TfyPIIGuardrailConfig · object"},{"type":"object","title":"TfyPromptInjectionGuardrailConfig","description":"Prompt Injection","required":["name","type","operation","enforcing_strategy"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.18.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/tfy-prompt-injection","type":"string","enum":["integration/guardrail-config/tfy-prompt-injection"],"default":"integration/guardrail-config/tfy-prompt-injection","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.18.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type for this guardrail. TrueFoundry Prompt Shield guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.18.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.18.enforcing_strategy","typeLabel":"enum\u003cstring>"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Prompt injection guardrail, managed by TrueFoundry","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.18.description","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.18","typeLabel":"TfyPromptInjectionGuardrailConfig · object"},{"type":"object","title":"TfyMetadataGuardrailConfig","description":"Request Metadata validation","required":["name","type","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"Lowercase letters, digits, and hyphens. 3 to 36 characters.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.19.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/tfy-metadata","type":"string","enum":["integration/guardrail-config/tfy-metadata"],"default":"integration/guardrail-config/tfy-metadata","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.19.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type for this guardrail. Metadata Validation guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.19.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.19.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["allow_unknown_keys","keys"],"properties":{"allow_unknown_keys":{"description":"Allow keys not mentioned in the spec","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.19.config.allow_unknown_keys","typeLabel":"boolean"},"keys":{"description":"Conditions on keys present in the `x-tfy-metadata` header.","type":"object","additionalProperties":{"type":"any","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.19.config.keys.additionalProperties","typeLabel":"any"},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.19.config.keys","typeLabel":"object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.19.config","typeLabel":"object"},"description":{"description":"What does this guardrail enforce?","type":"string","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.19.description","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.19","typeLabel":"TfyMetadataGuardrailConfig · object"},{"type":"object","title":"CedarGuardrailConfig","description":"Cedar","required":["name","type","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.20.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/cedar","type":"string","enum":["integration/guardrail-config/cedar"],"default":"integration/guardrail-config/cedar","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.20.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type for this guardrail. Cedar guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.20.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.20.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["policy"],"properties":{"policy":{"description":"Enter a Cedar policy string to define access control rules. Supports principal types (user, team, virtualaccount), MCPTool actions, MCPServer resources, and when/unless clauses, refer to [Docs](https://www.truefoundry.com/docs/ai-gateway/cedar-guardrails)","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.20.config.policy","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.20.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Enforces access control policies using Cedar policy language","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.20.description","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.20","typeLabel":"CedarGuardrailConfig · object"},{"type":"object","title":"OPAGuardrailConfig","description":"OPA","required":["name","type","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.21.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/opa","type":"string","enum":["integration/guardrail-config/opa"],"default":"integration/guardrail-config/opa","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.21.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type for this guardrail. OPA guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.21.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.21.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["opa_url","policy_path"],"properties":{"opa_url":{"description":"The base URL of the OPA server (e.g., https://opa.example.com:8181). The policy will be queried at {opa_url}/v1/data/{policy_path}.","type":"string","pattern":"^https?:\\/\\/[^\\s\\/]+(\\/[^\\s\\/]*)*[^\\/\\s]?$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.21.config.opa_url","typeLabel":"string"},"policy_path":{"description":"The policy path to evaluate in OPA (e.g., \"authz/allow\", \"guardrails/validate\"). This corresponds to the package and rule name in your Rego policy. The full query URL will be {opa_url}/v1/data/{policy_path}.","type":"string","pattern":"^[a-zA-Z_][a-zA-Z0-9_]*(\\/[a-zA-Z_][a-zA-Z0-9_]*)*$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.21.config.policy_path","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.21.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Open Policy Agent (OPA) for policy-based access control and validation","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.21.description","typeLabel":"string"},"auth_data":{"type":"any","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.21.auth_data","typeLabel":"any"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.21","typeLabel":"OPAGuardrailConfig · object"},{"type":"object","title":"GoogleModelArmorGuardrailConfig","description":"Google Model Armor","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.22.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/google-model-armor","type":"string","enum":["integration/guardrail-config/google-model-armor"],"default":"integration/guardrail-config/google-model-armor","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.22.type","typeLabel":"enum\u003cstring>"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.22.auth_data","typeLabel":"any"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.22.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.22.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["project_id","location","template_id"],"properties":{"project_id":{"description":"The Google Cloud project ID where Model Armor is enabled","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.22.config.project_id","typeLabel":"string"},"location":{"type":"string","enum":["global","africa-south1","asia-east1","asia-east2","asia-northeast1","asia-northeast2","asia-northeast3","asia-south1","asia-south2","asia-southeast1","asia-southeast2","asia-southeast3","australia-southeast1","australia-southeast2","europe-central2","europe-north1","europe-north2","europe-southwest1","europe-west1","europe-west2","europe-west3","europe-west4","europe-west6","europe-west8","europe-west9","europe-west10","europe-west12","me-central1","me-central2","me-west1","northamerica-northeast1","northamerica-northeast2","northamerica-south1","southamerica-east1","southamerica-west1","us-central1","us-east1","us-east4","us-east5","us-south1","us-west1","us-west2","us-west3","us-west4"],"title":"GCPRegion","x-fern-type-name":"GCPRegion","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.22.config.location","typeLabel":"enum\u003cstring>"},"template_id":{"description":"The Model Armor template name that defines which filters and confidence thresholds to apply (e.g. my-template)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.22.config.template_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.22.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Google Cloud Model Armor for prompt injection, harmful content, PII, and malicious URI detection","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.22.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.22.priority","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.22","typeLabel":"GoogleModelArmorGuardrailConfig · object"},{"type":"object","title":"GraySwanCygnalGuardrailConfig","description":"GraySwan Cygnal","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.23.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/grayswan-cygnal","type":"string","enum":["integration/guardrail-config/grayswan-cygnal"],"default":"integration/guardrail-config/grayswan-cygnal","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.23.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"GraySwan Cygnal API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.23.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"GraySwan API key for Cygnal access","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.23.auth_data.api_key","typeLabel":"string"}},"title":"GraySwanCygnalApiKeyAuth","x-fern-type-name":"GraySwanCygnalApiKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.23.auth_data","typeLabel":"GraySwanCygnalApiKeyAuth · object"},"operation":{"description":"The operation type for this guardrail. GraySwan Cygnal guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.23.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.23.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["reasoning_mode"],"properties":{"reasoning_mode":{"description":"Controls whether Cygnal uses internal reasoning steps before determining if content violates policy. \"off\" is fastest, \"hybrid\" adds moderate reasoning, \"thinking\" performs guided reasoning for highest quality.","type":"string","enum":["off","hybrid","thinking"],"default":"off","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.23.config.reasoning_mode","typeLabel":"enum\u003cstring>"},"base_url":{"description":"Optional override for the Cygnal monitor endpoint. Defaults to https://api.grayswan.ai/cygnal/monitor if not provided.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.23.config.base_url","typeLabel":"string"},"policy_ids":{"description":"Custom policy IDs to use for monitoring. Rules from all policies are merged in order, with earlier policies taking precedence. If not provided, the default Basic Content Safety policy is applied, refer to [Docs](https://docs.grayswan.ai/cygnal/monitor-requests)","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.23.config.policy_ids.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.23.config.policy_ids","typeLabel":"string[]"},"rules":{"description":"Custom rule definitions for monitoring. Each key is a rule name and its value is the rule description, refer to [Docs](https://docs.grayswan.ai/cygnal/monitor-requests)","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.23.config.rules.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.23.config.rules","typeLabel":"object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.23.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"GraySwan Cygnal for policy violation and content safety monitoring","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.23.description","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.23","typeLabel":"GraySwanCygnalGuardrailConfig · object"},{"type":"object","title":"CatoNetworksGuardrailConfig","description":"Cato Networks","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.24.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/cato-networks","type":"string","enum":["integration/guardrail-config/cato-networks"],"default":"integration/guardrail-config/cato-networks","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.24.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"Cato Networks API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.24.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"API key issued by Cato for this AI Security guard. Sent as a Bearer token. The key secret is never forwarded to Cato as the gateway key alias.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.24.auth_data.api_key","typeLabel":"string"}},"title":"CatoNetworksApiKeyAuth","x-fern-type-name":"CatoNetworksApiKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.24.auth_data","typeLabel":"CatoNetworksApiKeyAuth · object"},"operation":{"description":"Validate treats a Cato block or anonymize action as a violation and leaves the payload unchanged. Mutate also replaces the messages with Cato's anonymized versions and continues.\nValidate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["mutate","validate"],"default":"mutate","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.24.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.24.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["base_url"],"properties":{"base_url":{"description":"Cato API base URL. Use the regional Cato endpoint or the URL of a Cato Outpost in your environment. Trailing slashes are ignored.","type":"string","pattern":"^https?:\\/\\/\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.24.config.base_url","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.24.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Cato AI Security runtime protection for prompts and model responses","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.24.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.24.priority","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.24","typeLabel":"CatoNetworksGuardrailConfig · object"},{"type":"object","title":"NomaSecurityGuardrailConfig","description":"Noma Security","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.25.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/noma-security","type":"string","enum":["integration/guardrail-config/noma-security"],"default":"integration/guardrail-config/noma-security","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.25.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"Noma Security API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.25.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"Noma scoped access token with truefoundry_guardrail scope (sent as Bearer)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.25.auth_data.api_key","typeLabel":"string"}},"title":"NomaSecurityApiKeyAuth","x-fern-type-name":"NomaSecurityApiKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.25.auth_data","typeLabel":"NomaSecurityApiKeyAuth · object"},"operation":{"description":"Validate blocks policy denials. Mutate also applies complete masked request or response payloads returned by Noma.\nValidate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.25.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.25.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","properties":{"base_url":{"description":"Optional override for the Noma API base URL. Defaults to https://api.noma.security if not provided.","type":"string","pattern":"^https?:\\/\\/\\S+$","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.25.config.base_url","typeLabel":"string"},"application_id":{"description":"Literal applicationId sent in the x-noma-context header and used to select the Noma Runtime Protection profile. Defaults to truefoundry.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.25.config.application_id","typeLabel":"string"},"session_id":{"description":"Literal sessionId sent in the x-noma-context header for session attribution in Noma. Optional.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.25.config.session_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.25.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Noma TrueFoundry Guardrail for prompt, response, and tool content safety","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.25.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.25.priority","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.25","typeLabel":"NomaSecurityGuardrailConfig · object"},{"type":"object","title":"CalypsoAIGuardrailConfig","description":"CalypsoAI (F5 AI Security)","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.26.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/calypsoai","type":"string","enum":["integration/guardrail-config/calypsoai"],"default":"integration/guardrail-config/calypsoai","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.26.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"CalypsoAI API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.26.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"CalypsoAI API token from Configuration → API tokens","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.26.auth_data.api_key","typeLabel":"string"}},"title":"CalypsoAIApiKeyAuth","x-fern-type-name":"CalypsoAIApiKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.26.auth_data","typeLabel":"CalypsoAIApiKeyAuth · object"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests (forward redactedInput).\nValidate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.26.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.26.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","properties":{"base_url":{"description":"Optional override for the CalypsoAI base URL. Defaults to https://www.us1.calypsoai.app if not provided. Set this if your tenant is provisioned in another region (e.g. https://www.eu1.calypsoai.app).","type":"string","pattern":"^https?:\\/\\/\\S+$","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.26.config.base_url","typeLabel":"string"},"project":{"description":"Optional CalypsoAI project ID or friendly ID. Omit to use the tenant's global default scanner configuration.","type":"string","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.26.config.project","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.26.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"F5 AI Security (CalypsoAI) for prompt injection, jailbreak, PII, and policy-violation scanning","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.26.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.26.priority","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.26","typeLabel":"CalypsoAIGuardrailConfig · object"},{"type":"object","title":"AktoGuardrailConfig","description":"Akto","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.27.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/akto","type":"string","enum":["integration/guardrail-config/akto"],"default":"integration/guardrail-config/akto","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.27.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"Authentication method using an Akto JWT token","type":"object","required":["type","token"],"properties":{"type":{"description":"+value=token","type":"string","enum":["token"],"default":"token","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.27.auth_data.type","typeLabel":"enum\u003cstring>"},"token":{"description":"JWT token for authenticating with the Akto guardrails service","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.27.auth_data.token","typeLabel":"string"}},"title":"AktoTokenAuth","x-fern-type-name":"AktoTokenAuth","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.27.auth_data","typeLabel":"AktoTokenAuth · object"},"operation":{"description":"The operation type for this guardrail. Akto guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.27.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.27.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["base_url"],"properties":{"base_url":{"description":"The base URL of the Akto guardrails service (e.g. https://your-akto-host:port)","type":"string","pattern":"^https?:\\/\\/\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.27.config.base_url","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.27.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Akto guardrail for LLM security, prompt injection detection, and policy violation monitoring","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.27.description","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.27","typeLabel":"AktoGuardrailConfig · object"},{"type":"object","title":"TrojAIGuardrailConfig","description":"TrojAI","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.28.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/trojai","type":"string","enum":["integration/guardrail-config/trojai"],"default":"integration/guardrail-config/trojai","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.28.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"Authentication using a TrojAI firewall client ID (x-eag-clientid)","type":"object","required":["type","client_id"],"properties":{"type":{"description":"+value=client-id","type":"string","enum":["client-id"],"default":"client-id","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.28.auth_data.type","typeLabel":"enum\u003cstring>"},"client_id":{"description":"The client ID that identifies your TrojAI firewall policy (sent as x-eag-clientid header)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.28.auth_data.client_id","typeLabel":"string"}},"title":"TrojAIClientIdAuth","x-fern-type-name":"TrojAIClientIdAuth","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.28.auth_data","typeLabel":"TrojAIClientIdAuth · object"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests.\nValidate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.28.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.28.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["base_url"],"properties":{"base_url":{"description":"The base URL of the TrojAI firewall (e.g. https://your-trojai-firewall-host)","type":"string","pattern":"^https?:\\/\\/\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.28.config.base_url","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.28.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"TrojAI DEFEND firewall for real-time AI security","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.28.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.28.priority","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.28","typeLabel":"TrojAIGuardrailConfig · object"},{"type":"object","title":"HiddenLayerGuardrailConfig","description":"HiddenLayer","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.29.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/hiddenlayer","type":"string","enum":["integration/guardrail-config/hiddenlayer"],"default":"integration/guardrail-config/hiddenlayer","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.29.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"Authentication using HiddenLayer OAuth2 client credentials (API key from the AISec Platform Console)","type":"object","required":["type","client_id","client_secret"],"properties":{"type":{"description":"+value=oauth2-client-credentials","type":"string","enum":["oauth2-client-credentials"],"default":"oauth2-client-credentials","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.29.auth_data.type","typeLabel":"enum\u003cstring>"},"client_id":{"description":"OAuth2 client ID from the HiddenLayer AISec Platform Console (API Keys tab)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.29.auth_data.client_id","typeLabel":"string"},"client_secret":{"description":"OAuth2 client secret from the HiddenLayer AISec Platform Console (API Keys tab)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.29.auth_data.client_secret","typeLabel":"string"}},"title":"HiddenLayerOAuth2ClientCredentialsAuth","x-fern-type-name":"HiddenLayerOAuth2ClientCredentialsAuth","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.29.auth_data","typeLabel":"HiddenLayerOAuth2ClientCredentialsAuth · object"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests (apply HiddenLayer redactions).\nValidate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.29.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.29.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["project_id","region"],"properties":{"project_id":{"description":"HiddenLayer project ID or alias. Selects the AISec policy that controls detection, redaction, and blocking.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.29.config.project_id","typeLabel":"string"},"region":{"description":"HiddenLayer regional API endpoint (us: api.us.hiddenlayer.ai, eu: api.eu.hiddenlayer.ai).","type":"string","enum":["us","eu"],"default":"us","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.29.config.region","typeLabel":"enum\u003cstring>"},"requester_id":{"description":"Optional fixed value sent to HiddenLayer as the requester of every call. Overrides the authenticated caller. Leave empty to attribute calls to the caller.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.29.config.requester_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.29.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"HiddenLayer AIDR for prompt injection, PII, and policy-violation detection with policy-driven redaction","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.29.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.29.priority","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.29","typeLabel":"HiddenLayerGuardrailConfig · object"},{"type":"object","title":"FireworksGuardrailConfig","description":"Fireworks","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.30.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/fireworks","type":"string","enum":["integration/guardrail-config/fireworks"],"default":"integration/guardrail-config/fireworks","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.30.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"Authentication using a Fireworks API key","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.30.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"Fireworks API key (sent as a Bearer token). Create one in the Fireworks console.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.30.auth_data.api_key","typeLabel":"string"}},"title":"FireworksApiKeyAuth","x-fern-type-name":"FireworksApiKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.30.auth_data","typeLabel":"FireworksApiKeyAuth · object"},"operation":{"description":"Fireworks safety models classify content without modifying it.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.30.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.30.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["model","model_type"],"properties":{"model":{"description":"Deployment name from your Fireworks account (accounts/\u003caccount>/deployments/\u003cdeployment>). Safety models run on dedicated (on-demand) deployments only.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.30.config.model","typeLabel":"string"},"model_type":{"description":"gpt-oss-safeguard classifies content against the policy below. llama-guard classifies against Meta's fixed hazard categories (S1 to S14 for Llama Guard 3 8B) and ignores the policy.","type":"string","enum":["gpt-oss-safeguard","llama-guard"],"default":"gpt-oss-safeguard","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.30.config.model_type","typeLabel":"enum\u003cstring>"},"policy":{"description":"Safety policy the model applies (required for gpt-oss-safeguard, ignored for llama-guard). Describe what violates and what is safe, with examples. Do not put secrets in the policy.","type":"string","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.30.config.policy","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.30.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Fireworks-hosted safety model (gpt-oss-safeguard or Llama Guard) for policy-based content classification","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.30.description","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.30","typeLabel":"FireworksGuardrailConfig · object"},{"type":"object","title":"ZscalerAIGuardGuardrailConfig","description":"Zscaler AI Guard","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.31.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/zscaler-ai-guard","type":"string","enum":["integration/guardrail-config/zscaler-ai-guard"],"default":"integration/guardrail-config/zscaler-ai-guard","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.31.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"Zscaler AI Guard API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.31.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"Zscaler AI Guard API key. Sent as a Bearer token against the AI Guard detection API.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.31.auth_data.api_key","typeLabel":"string"}},"title":"ZscalerAIGuardApiKeyAuth","x-fern-type-name":"ZscalerAIGuardApiKeyAuth","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.31.auth_data","typeLabel":"ZscalerAIGuardApiKeyAuth · object"},"operation":{"description":"Validate treats a Zscaler BLOCK action as a violation and leaves the payload unchanged. Mutate also replaces content with Zscaler maskedContent when returned.\nValidate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.31.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.31.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","properties":{"base_url":{"description":"The AI Guard API base URL.","type":"string","pattern":"^https?:\\/\\/\\S+$","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.31.config.base_url","typeLabel":"string"},"policy_id":{"description":"Optional AI Guard policy ID. When set, calls /v1/detection/execute-policy. When omitted, calls /v1/detection/resolve-and-execute-policy for automatic policy resolution.","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.31.config.policy_id","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.31.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Zscaler AI Guard runtime protection for prompts and model responses","uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.31.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.31.priority","typeLabel":"integer"}},"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX].oneOf.31","typeLabel":"ZscalerAIGuardGuardrailConfig · object"}],"uniqueKey":"manifest.oneOf.66.integrations.items.[INDEX]","typeLabel":"OpenAIModerationsGuardrailConfig · object | AWSBedrockGuardrailConfig · object | CustomGuardrailConfig · object | AzurePIIGuardrailConfig · object | AzureContentSafetyGuardrailConfig · object | AzurePromptShieldGuardrailConfig · object | EnkryptAIGuardrailConfig · object | PaloAltoPrismaAIRSGuardrailConfig · object | FiddlerGuardrailConfig · object | CiscoAIDefenseGuardrailConfig · object | CrowdStrikeAIDRGuardrailConfig · object | PatronusGuardrailConfig · object | SecretDetectionGuardrailConfig · object | CodeSafetyLinterGuardrailConfig · object | SQLSanitizerGuardrailConfig · object | RegexGuardrailConfig · object | TfyContentModerationGuardrailConfig · object | TfyPIIGuardrailConfig · object | TfyPromptInjectionGuardrailConfig · object | TfyMetadataGuardrailConfig · object | CedarGuardrailConfig · object | OPAGuardrailConfig · object | GoogleModelArmorGuardrailConfig · object | GraySwanCygnalGuardrailConfig · object | CatoNetworksGuardrailConfig · object | NomaSecurityGuardrailConfig · object | CalypsoAIGuardrailConfig · object | AktoGuardrailConfig · object | TrojAIGuardrailConfig · object | HiddenLayerGuardrailConfig · object | FireworksGuardrailConfig · object | ZscalerAIGuardGuardrailConfig · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.66.integrations","typeLabel":"(OpenAIModerationsGuardrailConfig · object | AWSBedrockGuardrailConfig · object | CustomGuardrailConfig · object | AzurePIIGuardrailConfig · object | AzureContentSafetyGuardrailConfig · object | AzurePromptShieldGuardrailConfig · object | EnkryptAIGuardrailConfig · object | PaloAltoPrismaAIRSGuardrailConfig · object | FiddlerGuardrailConfig · object | CiscoAIDefenseGuardrailConfig · object | CrowdStrikeAIDRGuardrailConfig · object | PatronusGuardrailConfig · object | SecretDetectionGuardrailConfig · object | CodeSafetyLinterGuardrailConfig · object | SQLSanitizerGuardrailConfig · object | RegexGuardrailConfig · object | TfyContentModerationGuardrailConfig · object | TfyPIIGuardrailConfig · object | TfyPromptInjectionGuardrailConfig · object | TfyMetadataGuardrailConfig · object | CedarGuardrailConfig · object | OPAGuardrailConfig · object | GoogleModelArmorGuardrailConfig · object | GraySwanCygnalGuardrailConfig · object | CatoNetworksGuardrailConfig · object | NomaSecurityGuardrailConfig · object | CalypsoAIGuardrailConfig · object | AktoGuardrailConfig · object | TrojAIGuardrailConfig · object | HiddenLayerGuardrailConfig · object | FireworksGuardrailConfig · object | ZscalerAIGuardGuardrailConfig · object)[]"},"collaborators":{"description":"List of users who have access to this Guardrail Config Group.","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.66.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.66.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.66.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.66.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.66.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.66.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.66","typeLabel":"GuardrailConfigGroup · object"},{"type":"object","title":"ClusterManifest","description":"Manifest of the resource to be created or updated","required":["type","name","cluster_type","environment_names"],"x-fern-type-name":"ClusterManifest","properties":{"type":{"description":"+value=cluster","type":"string","enum":["cluster"],"default":"cluster","isRequired":true,"uniqueKey":"manifest.oneOf.67.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name - 3 to 35 lower case characters long alphanumeric word, may contain - in between, cannot start with a number","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,33}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.67.name","typeLabel":"string"},"cluster_type":{"description":"The cluster type of this cluster","type":"string","enum":["aws-eks","gcp-gke-standard","azure-aks","generic","civo-talos"],"isRequired":true,"uniqueKey":"manifest.oneOf.67.cluster_type","typeLabel":"enum\u003cstring>"},"environment_names":{"description":"Tag the environment like dev, staging or production. You will need to [create environments](https://docs.truefoundry.com/docs/key-concepts#creating-environments) if you don't have already.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.67.environment_names.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.67.environment_names","typeLabel":"string[]"},"base_domains":{"description":"One or more base URLs, which can be either a wildcard domain (resulting in app URLs like `\u003capp-name>-\u003cworkspace-name>.\u003cbase-domain-URL>`) or a non-wildcard domain (resulting in app URLs like `\u003cbase-domain-URL>/\u003capp-name>-\u003cworkspace-name>`)\n> Read more about routing [here](https://docs.truefoundry.com/docs/routing) and about 'A' record and domain mapping [here](https://docs.truefoundry.com/docs/setting-up-domain)","type":"array","items":{"type":"string","pattern":"^((((\\*|[a-zA-Z0-9\\-]{1,63})\\.)([a-zA-Z0-9\\-]{1,63}\\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$","uniqueKey":"manifest.oneOf.67.base_domains.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.67.base_domains","typeLabel":"string[]"},"monitoring":{"description":"Monitoring","type":"object","properties":{"loki_url":{"description":"Cluster Loki URL","type":"string","uniqueKey":"manifest.oneOf.67.monitoring.loki_url","typeLabel":"string"},"victoria_logs_url":{"description":"Cluster VictoriaLogs URL","type":"string","uniqueKey":"manifest.oneOf.67.monitoring.victoria_logs_url","typeLabel":"string"},"prometheus_url":{"description":"Cluster Prometheus URL","type":"string","uniqueKey":"manifest.oneOf.67.monitoring.prometheus_url","typeLabel":"string"},"kubecost_url":{"description":"Cluster Kubecost URL","type":"string","uniqueKey":"manifest.oneOf.67.monitoring.kubecost_url","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.67.monitoring","typeLabel":"object"},"default_registry_fqn":{"description":"Cluster Default Registry","type":"string","uniqueKey":"manifest.oneOf.67.default_registry_fqn","typeLabel":"string"},"workbench_config":{"description":"Workbench Config","type":"object","properties":{"notebook_config":{"type":"object","required":["base_domain"],"properties":{"base_domain":{"description":"The base domain for the cluster with which you can access your Notebooks","type":"string","pattern":"^[^\\s]*$","isRequired":true,"uniqueKey":"manifest.oneOf.67.workbench_config.notebook_config.base_domain","typeLabel":"string"}},"title":"NotebookConfig","x-fern-type-name":"NotebookConfig","uniqueKey":"manifest.oneOf.67.workbench_config.notebook_config","typeLabel":"NotebookConfig · object"},"ssh_server_config":{"type":"object","required":["base_domain","port"],"properties":{"base_domain":{"description":"The base domain for the cluster with which you can access your SSH containers","type":"string","pattern":"^[^\\s]*$","isRequired":true,"uniqueKey":"manifest.oneOf.67.workbench_config.ssh_server_config.base_domain","typeLabel":"string"},"port":{"description":"The port for the cluster with which you can access your SSH containers","type":"number","isRequired":true,"uniqueKey":"manifest.oneOf.67.workbench_config.ssh_server_config.port","typeLabel":"number"}},"title":"SSHServerConfig","x-fern-type-name":"SSHServerConfig","uniqueKey":"manifest.oneOf.67.workbench_config.ssh_server_config","typeLabel":"SSHServerConfig · object"},"default_storage_class":{"description":"The default storage class for the home directory of workbench","type":"string","pattern":"^[^\\s]*$","uniqueKey":"manifest.oneOf.67.workbench_config.default_storage_class","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.67.workbench_config","typeLabel":"object"},"spark_config":{"type":"object","required":["ui_base_domain"],"properties":{"ui_base_domain":{"description":"The base domain for the cluster with which you can access your Spark UI","type":"string","pattern":"^[^\\s]*$","isRequired":true,"uniqueKey":"manifest.oneOf.67.spark_config.ui_base_domain","typeLabel":"string"}},"title":"SparkConfig","x-fern-type-name":"SparkConfig","uniqueKey":"manifest.oneOf.67.spark_config","typeLabel":"SparkConfig · object"},"ingress_controller_config":{"type":"object","required":["ingress_class_name"],"properties":{"ingress_class_name":{"description":"Ingress Class Name","type":"string","default":"nginx","isRequired":true,"uniqueKey":"manifest.oneOf.67.ingress_controller_config.ingress_class_name","typeLabel":"string"},"tls_enabled":{"description":"Whether TLS is managed by the ingress controller. If enabled, the ingress object will have TLS configuration.","type":"boolean","default":false,"uniqueKey":"manifest.oneOf.67.ingress_controller_config.tls_enabled","typeLabel":"boolean"}},"title":"IngressControllerConfig","x-fern-type-name":"IngressControllerConfig","uniqueKey":"manifest.oneOf.67.ingress_controller_config","typeLabel":"IngressControllerConfig · object"},"cluster_integration_fqn":{"description":"Cluster Integration FQN","type":"string","uniqueKey":"manifest.oneOf.67.cluster_integration_fqn","typeLabel":"string"},"workflow_storage_integration_fqn":{"description":"Workflow Storage Integration","type":"string","uniqueKey":"manifest.oneOf.67.workflow_storage_integration_fqn","typeLabel":"string"},"supported_nodepools":{"description":"Add nodepools that are already created in your cluster.\nWhen deploying, applications can choose to schedule from these nodepools.","type":"array","items":{"description":"The nodepools that are already created in your cluster. This will be used to schedule your workloads on particular nodepools.","type":"object","required":["name"],"properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.67.supported_nodepools.items.[INDEX].name","typeLabel":"string"},"description":{"type":"string","uniqueKey":"manifest.oneOf.67.supported_nodepools.items.[INDEX].description","typeLabel":"string"}},"title":"Nodepool","x-fern-type-name":"Nodepool","uniqueKey":"manifest.oneOf.67.supported_nodepools.items.[INDEX]","typeLabel":"Nodepool · object"},"uniqueKey":"manifest.oneOf.67.supported_nodepools","typeLabel":"Nodepool · object[]"},"node_label_keys":{"description":"The node label keys that this cluster supports.\nNote: You will additionally need to add `truefoundry.com/gpu_type` label for GPU-supported node pools.\nFor more information, check out [this documentation](https://docs.truefoundry.com/docs/generic-control-plane#configuring-node-pools-for-truefoundry).","type":"object","required":["nodepool_selector_label"],"properties":{"nodepool_selector_label":{"description":"The nodepool selector label that this cluster supports","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.67.node_label_keys.nodepool_selector_label","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.67.node_label_keys","typeLabel":"object"},"collaborators":{"description":"Collaborators who can access this cluster","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.67.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.67.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.67.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.67.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.67.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.67.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.67","typeLabel":"ClusterManifest · object"},{"type":"object","title":"WorkspaceManifest","description":"Manifest of the resource to be created or updated","required":["type","cluster_fqn","name"],"x-fern-type-name":"WorkspaceManifest","properties":{"type":{"description":"+value=workspace","type":"string","enum":["workspace"],"default":"workspace","isRequired":true,"uniqueKey":"manifest.oneOf.68.type","typeLabel":"enum\u003cstring>"},"cluster_fqn":{"description":"Cluster FQN","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.68.cluster_fqn","typeLabel":"string"},"name":{"description":"Name - 3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.68.name","typeLabel":"string"},"environment_name":{"description":"Tag the environment like dev, staging or production. You will need to [create environments](https://docs.truefoundry.com/docs/key-concepts#creating-environments) if you don't have already.","type":"string","uniqueKey":"manifest.oneOf.68.environment_name","typeLabel":"string"},"labels":{"description":"+sort=700","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.68.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.68.labels","typeLabel":"object"},"annotations":{"description":"+sort=750","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.68.annotations.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.68.annotations","typeLabel":"object"},"collaborators":{"description":"Collaborators","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.68.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.68.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.68.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.68.collaborators","typeLabel":"Collaborator · object[]"},"permissions":{"description":"Permissions","type":"array","items":{"type":"object","required":["resource_fqn","resource_type","role_id"],"properties":{"resource_fqn":{"description":"The fully qualified name of the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.68.permissions.items.[INDEX].resource_fqn","typeLabel":"string"},"resource_type":{"description":"The type of the resource (cluster, workspace, etc.)","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.68.permissions.items.[INDEX].resource_type","typeLabel":"string"},"role_id":{"description":"The role id of the role to be assigned to the service account for that resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.68.permissions.items.[INDEX].role_id","typeLabel":"string"}},"title":"Permissions","x-fern-type-name":"Permissions","uniqueKey":"manifest.oneOf.68.permissions.items.[INDEX]","typeLabel":"Permissions · object"},"uniqueKey":"manifest.oneOf.68.permissions","typeLabel":"Permissions · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.68.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.68.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.68","typeLabel":"WorkspaceManifest · object"},{"type":"object","title":"Job","description":"Manifest of the resource to be created or updated","required":["type","name","image","trigger"],"x-fern-type-name":"Job","properties":{"type":{"description":"+value=job","type":"string","enum":["job"],"default":"job","isRequired":true,"uniqueKey":"manifest.oneOf.69.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the job","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.69.name","typeLabel":"string"},"image":{"oneOf":[{"type":"object","title":"Build","description":"Describes how we build our code into a Docker image.","required":["type","build_source","build_spec"],"x-fern-type-name":"Build","properties":{"type":{"description":"+value=build","type":"string","enum":["build"],"default":"build","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.type","typeLabel":"enum\u003cstring>"},"build_source":{"oneOf":[{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_source.oneOf.0.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_source.oneOf.0","typeLabel":"RemoteSource · object"},{"type":"object","title":"GitSource","description":"Describes that we are using code stored in a git repository to build our image","required":["type","repo_url","ref"],"x-fern-type-name":"GitSource","properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"The repository URL.","type":"string","pattern":"^(https?://)\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_source.oneOf.1.repo_url","typeLabel":"string"},"ref":{"description":"The commit SHA.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_source.oneOf.1.ref","typeLabel":"string"},"branch_name":{"description":"Selecting branch will select latest commit SHA of the branch.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_source.oneOf.1.branch_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_source.oneOf.1","typeLabel":"GitSource · object"},{"type":"object","title":"LocalSource","description":"Describes that we are using code stored in a local developement environment to build our image","required":["type","project_root_path","local_build"],"x-fern-type-name":"LocalSource","properties":{"type":{"description":"+value=local","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"project_root_path":{"description":"Local project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_source.oneOf.2.project_root_path","typeLabel":"string"},"local_build":{"description":"run docker build locally","type":"boolean","default":false,"isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_source.oneOf.2.local_build","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_source.oneOf.2","typeLabel":"LocalSource · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_source","typeLabel":"RemoteSource · object | GitSource · object | LocalSource · object"},"build_spec":{"oneOf":[{"type":"object","title":"DockerFileBuild","description":"Describes that we are using a dockerfile to build our image","required":["type","dockerfile_path","build_context_path"],"x-fern-type-name":"DockerFileBuild","properties":{"type":{"description":"+value=dockerfile","type":"string","enum":["dockerfile"],"default":"dockerfile","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.type","typeLabel":"enum\u003cstring>"},"dockerfile_path":{"description":"The file path of the Dockerfile relative to project root path.","type":"string","default":"./Dockerfile","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.dockerfile_path","typeLabel":"string"},"build_context_path":{"description":"Build context path for the Dockerfile relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.command","typeLabel":"string | string[]"},"build_args":{"description":"Build arguments to pass to docker build","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.build_args.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.build_args","typeLabel":"object"},"build_secrets":{"description":"Build secrets you can use in run statements inside dockerfile like RUN --mount=type=secret,id=pip_index_url ... you can learn more about build secrets here https://www.truefoundry.com/docs/docker-build-secrets","type":"array","items":{"type":"object","required":["id","value"],"properties":{"id":{"description":"The ID of the build secret.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].id","typeLabel":"string"},"value":{"description":"The value of the build secret.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].value","typeLabel":"string"},"env":{"description":"The name of the environment variable to inject the secret into.","type":"string","pattern":"^[_a-zA-Z0-9][_a-zA-Z0-9]{1,31}$","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].env","typeLabel":"string"}},"title":"BuildSecret","x-fern-type-name":"BuildSecret","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX]","typeLabel":"BuildSecret · object"},"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.build_secrets","typeLabel":"BuildSecret · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0","typeLabel":"DockerFileBuild · object"},{"type":"object","title":"PythonBuild","description":"Describes that we are using python to build a container image with a specific python version and pip packages installed.","required":["type","build_context_path","command"],"x-fern-type-name":"PythonBuild","properties":{"type":{"description":"+value=tfy-python-buildpack","type":"string","enum":["tfy-python-buildpack"],"default":"tfy-python-buildpack","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.type","typeLabel":"enum\u003cstring>"},"build_context_path":{"description":"Build path relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.command","typeLabel":"string | string[]"},"python_version":{"description":"Python version to run your application. Should be one of the tags listed on [Official Python Docker Page](https://hub.docker.com/_/python)","type":"string","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_version","typeLabel":"string"},"requirements_path":{"description":"Path to `requirements.txt` relative to\n`Path to build context`","type":"string","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.pip_packages","typeLabel":"string[]"},"python_dependencies":{"oneOf":[{"type":"object","title":"Pip","description":"Use pip to install requirements files and packages","required":["type"],"x-fern-type-name":"Pip","properties":{"type":{"description":"+value=pip","type":"string","enum":["pip"],"default":"pip","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.type","typeLabel":"enum\u003cstring>"},"requirements_path":{"description":"Path to `requirements.txt` relative to `Path to build context`","type":"string","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0","typeLabel":"Pip · object"},{"type":"object","title":"UV","description":"Use `uv` to setup env.\nYour build context root must contain `pyproject.toml` and `uv.lock`","required":["type"],"x-fern-type-name":"UV","properties":{"type":{"description":"+value=uv","type":"string","enum":["uv"],"default":"uv","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uv_version":{"description":"UV version to use","type":"string","default":"latest","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.uv_version","typeLabel":"string"},"sync_options":{"description":"Sync options to pass to uv command","type":"string","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.sync_options","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1","typeLabel":"UV · object"},{"type":"object","title":"Poetry","description":"Use `poetry` to setup env.\nYour build context root must contain `pyproject.toml` and `poetry.lock`","required":["type"],"x-fern-type-name":"Poetry","properties":{"type":{"description":"+value=poetry","type":"string","enum":["poetry"],"default":"poetry","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.type","typeLabel":"enum\u003cstring>"},"poetry_version":{"oneOf":[{"type":"string","description":"Poetry version to use","default":"latest","enum":["latest"],"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","description":"Poetry version to use","default":"latest","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version.oneOf.1","typeLabel":"string"}],"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version","typeLabel":"enum\u003cstring> | string"},"install_options":{"description":"install options to pass to poetry command","type":"string","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.install_options","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2","typeLabel":"Poetry · object"}],"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies","typeLabel":"Pip · object | UV · object | Poetry · object"},"apt_packages":{"description":"Debian packages to install via `apt get`.\nIn Python/YAML E.g. [\"git\", \"ffmpeg\", \"htop\"]","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.apt_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.apt_packages","typeLabel":"string[]"},"cuda_version":{"description":"Version of CUDA Toolkit and CUDNN to install in the image\nThese combinations are based off of publically available docker images on docker hub\nYou can also specify a valid tag of the form {cuda_version_number}-cudnn{cudnn_version_number}-{runtime|devel}-ubuntu{ubuntu_version}\nRefer https://hub.docker.com/r/nvidia/cuda/tags for valid set of values\nNote: We use deadsnakes ubuntu ppa to add Python that currently supports only Ubuntu 18.04, 20.04 and 22.04","type":"string","pattern":"^((\\d+\\.\\d+(\\.\\d+)?-cudnn(\\d+)?-(runtime|devel)-ubuntu\\d+\\.\\d+)|11\\.0-cudnn8|11\\.1-cudnn8|11\\.2-cudnn8|11\\.3-cudnn8|11\\.4-cudnn8|11\\.5-cudnn8|11\\.6-cudnn8|11\\.7-cudnn8|11\\.8-cudnn8|12\\.0-cudnn8|12\\.1-cudnn8|12\\.2-cudnn8|12\\.3-cudnn9|12\\.4-cudnn9|12\\.5-cudnn9|12\\.6-cudnn9|12\\.8-cudnn9|12\\.9-cudnn9)$","uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.cuda_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1","typeLabel":"PythonBuild · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0.build_spec","typeLabel":"DockerFileBuild · object | PythonBuild · object"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.69.image.oneOf.0.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.0","typeLabel":"Build · object"},{"type":"object","title":"Image","description":"Describes that we are using a pre-built image stored in a Docker Image registry","required":["type","image_uri"],"x-fern-type-name":"Image","properties":{"type":{"description":"+value=image","type":"string","enum":["image"],"default":"image","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.1.type","typeLabel":"enum\u003cstring>"},"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.1.image_uri","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.69.image.oneOf.1.docker_registry","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.69.image.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.69.image.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.69.image.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"manifest.oneOf.69.image.oneOf.1.command","typeLabel":"string | string[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.69.image.oneOf.1","typeLabel":"Image · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.69.image","typeLabel":"Build · object | Image · object"},"trigger":{"oneOf":[{"type":"object","title":"Manual","description":"Trigger the job manually. [Docs](https://docs.truefoundry.com/docs/deploy-a-cron-job)","default":{"type":"manual"},"required":["type"],"x-fern-type-name":"Manual","properties":{"type":{"description":"+value=manual","type":"string","enum":["manual"],"default":"manual","isRequired":true,"uniqueKey":"manifest.oneOf.69.trigger.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"manifest.oneOf.69.trigger.oneOf.0","typeLabel":"Manual · object"},{"type":"object","title":"Schedule","description":"Run the job on a schedule. [Docs](https://docs.truefoundry.com/docs/deploy-a-cron-job)","default":{"type":"manual"},"required":["type","schedule","concurrency_policy"],"x-fern-type-name":"Schedule","properties":{"type":{"description":"+value=scheduled","type":"string","enum":["scheduled"],"default":"scheduled","isRequired":true,"uniqueKey":"manifest.oneOf.69.trigger.oneOf.1.type","typeLabel":"enum\u003cstring>"},"schedule":{"description":"Specify the schedule for this job to be run periodically in cron format.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.69.trigger.oneOf.1.schedule","typeLabel":"string"},"concurrency_policy":{"description":"Choose whether to allow this job to run while another instance of the job is running, or to replace the currently running instance. Allow\nwill enable multiple instances of this job to run. Forbid will keep the current instance of the job running and stop a new instance from being run.\nReplace will terminate any currently running instance of the job and start a new one.","type":"string","enum":["Forbid","Allow","Replace"],"default":"Forbid","isRequired":true,"uniqueKey":"manifest.oneOf.69.trigger.oneOf.1.concurrency_policy","typeLabel":"enum\u003cstring>"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","uniqueKey":"manifest.oneOf.69.trigger.oneOf.1.timezone","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.69.trigger.oneOf.1","typeLabel":"Schedule · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.69.trigger","typeLabel":"Manual · object | Schedule · object"},"trigger_on_deploy":{"description":"Trigger the job after deploy immediately","type":"boolean","uniqueKey":"manifest.oneOf.69.trigger_on_deploy","typeLabel":"boolean"},"params":{"description":"Configure params and pass it to create different job runs","type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"description":"Name of the param","type":"string","pattern":"^[a-z][a-z0-9\\-_]{0,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.69.params.items.[INDEX].name","typeLabel":"string"},"description":{"description":"Description of param","type":"string","pattern":"^.{1,127}$","uniqueKey":"manifest.oneOf.69.params.items.[INDEX].description","typeLabel":"string"},"default":{"description":"Default value or placeholder","type":"string","pattern":"^.{0,127}$","uniqueKey":"manifest.oneOf.69.params.items.[INDEX].default","typeLabel":"string"},"param_type":{"type":"string","enum":["string","ml_repo"],"default":"string","uniqueKey":"manifest.oneOf.69.params.items.[INDEX].param_type","typeLabel":"enum\u003cstring>"}},"title":"Param","x-fern-type-name":"Param","uniqueKey":"manifest.oneOf.69.params.items.[INDEX]","typeLabel":"Param · object"},"uniqueKey":"manifest.oneOf.69.params","typeLabel":"Param · object[]"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.69.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.69.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.69.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.69.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.69.env","typeLabel":"object | null"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"manifest.oneOf.69.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.69.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.69.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"manifest.oneOf.69.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.69.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.69.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.69.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.69.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"manifest.oneOf.69.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"manifest.oneOf.69.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"manifest.oneOf.69.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"manifest.oneOf.69.resources","typeLabel":"Resources · object"},"alerts":{"description":"Configure alerts to be sent when the job starts/fails/completes","type":"array","items":{"description":"Describes the configuration for the job alerts","type":"object","properties":{"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].to_emails.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].to_emails","typeLabel":"string[]"},"notification_target":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBot","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.2.channels","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.2","typeLabel":"SlackBot · object"},{"type":"object","title":"PagerDuty","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.3","typeLabel":"PagerDuty · object"}],"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].notification_target","typeLabel":"Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object"},"on_start":{"description":"Send an alert when the job starts","type":"boolean","default":false,"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].on_start","typeLabel":"boolean"},"on_completion":{"type":"boolean","default":false,"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].on_completion","typeLabel":"boolean"},"on_failure":{"description":"Send an alert when the job fails","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX].on_failure","typeLabel":"boolean"}},"title":"JobAlert","x-fern-type-name":"JobAlert","uniqueKey":"manifest.oneOf.69.alerts.items.[INDEX]","typeLabel":"JobAlert · object"},"uniqueKey":"manifest.oneOf.69.alerts","typeLabel":"JobAlert · object[]"},"retries":{"description":"Specify the maximum number of attempts to retry a job before it is marked as failed.","type":"integer","minimum":0,"maximum":10,"default":0,"uniqueKey":"manifest.oneOf.69.retries","typeLabel":"integer"},"timeout":{"description":"Job timeout in seconds.","type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":432000,"uniqueKey":"manifest.oneOf.69.timeout","typeLabel":"integer"},"concurrency_limit":{"description":"Number of runs that can run concurrently","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.69.concurrency_limit","typeLabel":"integer"},"service_account":{"description":"+sort=1000","type":"string","uniqueKey":"manifest.oneOf.69.service_account","typeLabel":"string"},"mounts":{"description":"Configure data to be mounted to job pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"manifest.oneOf.69.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.69.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"manifest.oneOf.69.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.69.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"manifest.oneOf.69.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.69.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.69.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.69.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"manifest.oneOf.69.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.69.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"manifest.oneOf.69.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"manifest.oneOf.69.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.69.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"manifest.oneOf.69.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"manifest.oneOf.69.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"labels":{"description":"Labels","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.69.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.69.labels","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"manifest.oneOf.69.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"manifest.oneOf.69.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"manifest.oneOf.69.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"manifest.oneOf.69.kustomize","typeLabel":"Kustomize · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"manifest.oneOf.69.workspace_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.69","typeLabel":"Job · object"},{"type":"object","title":"Helm","description":"Manifest of the resource to be created or updated","required":["type","name","source"],"x-fern-type-name":"Helm","properties":{"type":{"description":"+value=helm","type":"string","enum":["helm"],"default":"helm","isRequired":true,"uniqueKey":"manifest.oneOf.70.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Helm deployment. This will be set as the release name of the chart you are deploying.","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.70.name","typeLabel":"string"},"source":{"oneOf":[{"type":"object","title":"HelmRepo","description":"Source helm repository","required":["type","repo_url","chart","version"],"x-fern-type-name":"HelmRepo","properties":{"type":{"description":"+value=helm-repo","type":"string","enum":["helm-repo"],"default":"helm-repo","isRequired":true,"uniqueKey":"manifest.oneOf.70.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"Helm repository URL - Needs to be a valid URL.","type":"string","pattern":"^(((https?|wss):\\/\\/)?(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\\+.~#?\u0026\\/=]*))$","isRequired":true,"uniqueKey":"manifest.oneOf.70.source.oneOf.0.repo_url","typeLabel":"string"},"chart":{"description":"The helm chart name","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._/-]*$","isRequired":true,"uniqueKey":"manifest.oneOf.70.source.oneOf.0.chart","typeLabel":"string"},"version":{"description":"Helm chart version","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._+-]*$","isRequired":true,"uniqueKey":"manifest.oneOf.70.source.oneOf.0.version","typeLabel":"string"},"integration_fqn":{"description":"FQN of the helm repo integration. If you can't find your integration here,\nadd it through the [Integrations](/integrations) page","type":"string","uniqueKey":"manifest.oneOf.70.source.oneOf.0.integration_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.70.source.oneOf.0","typeLabel":"HelmRepo · object"},{"type":"object","title":"OCIRepo","description":"OCIRepo","required":["type","oci_chart_url","version"],"x-fern-type-name":"OCIRepo","properties":{"type":{"description":"+value=oci-repo","type":"string","enum":["oci-repo"],"default":"oci-repo","isRequired":true,"uniqueKey":"manifest.oneOf.70.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"oci_chart_url":{"description":"OCI chart URL - Need to be a valid URL.","type":"string","pattern":"^(((oci):\\/\\/)?(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\\+.~#?\u0026\\/=]*))$","isRequired":true,"uniqueKey":"manifest.oneOf.70.source.oneOf.1.oci_chart_url","typeLabel":"string"},"version":{"description":"Helm chart version","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._+-]*$","isRequired":true,"uniqueKey":"manifest.oneOf.70.source.oneOf.1.version","typeLabel":"string"},"integration_fqn":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations) page","type":"string","uniqueKey":"manifest.oneOf.70.source.oneOf.1.integration_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.70.source.oneOf.1","typeLabel":"OCIRepo · object"},{"type":"object","title":"GitHelmRepo","description":"Source helm repository","required":["type","repo_url","revision","path"],"x-fern-type-name":"GitHelmRepo","properties":{"type":{"description":"+value=git-helm-repo","type":"string","enum":["git-helm-repo"],"default":"git-helm-repo","isRequired":true,"uniqueKey":"manifest.oneOf.70.source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"Git repository URL - Needs to be a valid URL.","type":"string","pattern":"^(((https?|wss):\\/\\/)?(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\\+.~#?\u0026\\/=]*))$","isRequired":true,"uniqueKey":"manifest.oneOf.70.source.oneOf.2.repo_url","typeLabel":"string"},"revision":{"description":"Branch/Commit SHA/Tag of the git repo.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.70.source.oneOf.2.revision","typeLabel":"string"},"path":{"description":"Path to the chart.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.70.source.oneOf.2.path","typeLabel":"string"},"value_files":{"description":"Helm values files for overriding values in the helm chart.\nThe path is relative to the Path directory defined above","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.70.source.oneOf.2.value_files.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.70.source.oneOf.2.value_files","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.70.source.oneOf.2","typeLabel":"GitHelmRepo · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.70.source","typeLabel":"HelmRepo · object | OCIRepo · object | GitHelmRepo · object"},"labels":{"description":"Add labels to base argo app","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.70.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.70.labels","typeLabel":"object"},"values":{"description":"Values file as block file","type":"object","uniqueKey":"manifest.oneOf.70.values","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"manifest.oneOf.70.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"manifest.oneOf.70.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"manifest.oneOf.70.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"manifest.oneOf.70.kustomize","typeLabel":"Kustomize · object"},"ignoreDifferences":{"type":"array","items":{"type":"object","uniqueKey":"manifest.oneOf.70.ignoreDifferences.items.[INDEX]","typeLabel":"object"},"uniqueKey":"manifest.oneOf.70.ignoreDifferences","typeLabel":"object[]"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"manifest.oneOf.70.workspace_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.70","typeLabel":"Helm · object"},{"type":"object","title":"Volume","description":"Manifest of the resource to be created or updated","required":["type","name","config"],"x-fern-type-name":"Volume","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"manifest.oneOf.71.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Volume. This will be set as the volume name.","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.71.name","typeLabel":"string"},"config":{"oneOf":[{"type":"object","title":"DynamicVolumeConfig","description":"Create new volume","required":["type","storage_class","size"],"x-fern-type-name":"DynamicVolumeConfig","properties":{"type":{"description":"Volume Type for the volume.","type":"string","enum":["dynamic"],"default":"dynamic","isRequired":true,"uniqueKey":"manifest.oneOf.71.config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"storage_class":{"description":"Name of the storage class to be used for the volume.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.71.config.oneOf.0.storage_class","typeLabel":"string"},"size":{"description":"Size of volume in Gi","type":"integer","minimum":1,"maximum":64000,"isRequired":true,"uniqueKey":"manifest.oneOf.71.config.oneOf.0.size","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.71.config.oneOf.0","typeLabel":"DynamicVolumeConfig · object"},{"type":"object","title":"StaticVolumeConfig","description":"Use existing volume","required":["type","persistent_volume_name"],"x-fern-type-name":"StaticVolumeConfig","properties":{"type":{"description":"Volume Type for the volume.","type":"string","enum":["static"],"default":"static","isRequired":true,"uniqueKey":"manifest.oneOf.71.config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"persistent_volume_name":{"description":"Persistent Volume Name of the volume to be used.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.71.config.oneOf.1.persistent_volume_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.71.config.oneOf.1","typeLabel":"StaticVolumeConfig · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.71.config","typeLabel":"DynamicVolumeConfig · object | StaticVolumeConfig · object"},"volume_browser":{"description":"Volume Browser","type":"object","required":["endpoint"],"properties":{"endpoint":{"type":"object","required":["host"],"properties":{"host":{"description":"Host e.g. ai.example.com, app.truefoundry.com","type":"string","pattern":"^((([a-zA-Z0-9\\-]{1,63}\\.)([a-zA-Z0-9\\-]{1,63}\\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$","isRequired":true,"uniqueKey":"manifest.oneOf.71.volume_browser.endpoint.host","typeLabel":"string"},"path":{"description":"Path e.g. /v1/api/ml/, /v2/docs/","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"manifest.oneOf.71.volume_browser.endpoint.path","typeLabel":"string"}},"title":"Endpoint","x-fern-type-name":"Endpoint","isRequired":true,"uniqueKey":"manifest.oneOf.71.volume_browser.endpoint","typeLabel":"Endpoint · object"},"username":{"description":"Username for logging in the volume browser.","type":"string","pattern":"^[a-z][a-z0-9]{1,8}[a-z0-9]$","uniqueKey":"manifest.oneOf.71.volume_browser.username","typeLabel":"string"},"password_secret_fqn":{"description":"TFY Secret containing the password for logging in the volume browser.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","uniqueKey":"manifest.oneOf.71.volume_browser.password_secret_fqn","typeLabel":"string"},"service_account":{"description":"Kubernetes Service account name for the volume browser.","type":"string","uniqueKey":"manifest.oneOf.71.volume_browser.service_account","typeLabel":"string"}},"title":"VolumeBrowser","x-fern-type-name":"VolumeBrowser","uniqueKey":"manifest.oneOf.71.volume_browser","typeLabel":"VolumeBrowser · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"manifest.oneOf.71.workspace_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.71","typeLabel":"Volume · object"},{"type":"object","title":"Notebook","description":"Manifest of the resource to be created or updated","required":["type","image","name","home_directory_size"],"x-fern-type-name":"Notebook","properties":{"name":{"description":"Name of the workbench. This uniquely identifies this workbench in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.72.name","typeLabel":"string"},"home_directory_size":{"description":"Size of the home directory for the workbench (Persistent Storage)","type":"integer","minimum":5,"maximum":64000,"default":20,"isRequired":true,"uniqueKey":"manifest.oneOf.72.home_directory_size","typeLabel":"integer"},"type":{"description":"+value=notebook","type":"string","enum":["notebook"],"default":"notebook","isRequired":true,"uniqueKey":"manifest.oneOf.72.type","typeLabel":"enum\u003cstring>"},"image":{"description":"Workbench Image with persistent environment (Python 3.11.6)","type":"object","required":["image_uri"],"properties":{"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.72.image.image_uri","typeLabel":"string"},"build_script":{"description":"The build script to run when building the image.\nThis will be executed as the last step in the docker build process as the root user (RUN DEBIAN_FRONTEND=noninteractive bash -ex build_script.sh)","type":"string","minLength":1,"maxLength":5120,"uniqueKey":"manifest.oneOf.72.image.build_script","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","uniqueKey":"manifest.oneOf.72.image.docker_registry","typeLabel":"string"}},"title":"WorkbenchImage","x-fern-type-name":"WorkbenchImage","isRequired":true,"uniqueKey":"manifest.oneOf.72.image","typeLabel":"WorkbenchImage · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"manifest.oneOf.72.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.72.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.72.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"manifest.oneOf.72.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.72.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.72.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.72.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.72.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"manifest.oneOf.72.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"manifest.oneOf.72.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"manifest.oneOf.72.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"manifest.oneOf.72.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.72.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.72.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.72.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.72.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.72.env","typeLabel":"object | null"},"mounts":{"description":"Configure data to be mounted to workbench pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"manifest.oneOf.72.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.72.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"manifest.oneOf.72.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.72.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"manifest.oneOf.72.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.72.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.72.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.72.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"manifest.oneOf.72.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.72.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"manifest.oneOf.72.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"manifest.oneOf.72.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.72.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"manifest.oneOf.72.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"manifest.oneOf.72.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"service_account":{"description":"+sort=10113","type":"string","uniqueKey":"manifest.oneOf.72.service_account","typeLabel":"string"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"manifest.oneOf.72.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"manifest.oneOf.72.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"manifest.oneOf.72.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"manifest.oneOf.72.kustomize","typeLabel":"Kustomize · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"manifest.oneOf.72.workspace_fqn","typeLabel":"string"},"cull_timeout":{"description":"Stop the notebook instance after this much time in minutes of inactivity.\nThe notebook instance will be stopped even if the notebook is open in your browser, but nothing is running on the notebook.","type":"integer","minimum":5,"default":30,"uniqueKey":"manifest.oneOf.72.cull_timeout","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.72","typeLabel":"Notebook · object"},{"type":"object","title":"RStudio","description":"Manifest of the resource to be created or updated","required":["type","image","name","home_directory_size"],"x-fern-type-name":"RStudio","properties":{"name":{"description":"Name of the workbench. This uniquely identifies this workbench in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.73.name","typeLabel":"string"},"home_directory_size":{"description":"Size of the home directory for the workbench (Persistent Storage)","type":"integer","minimum":5,"maximum":64000,"default":20,"isRequired":true,"uniqueKey":"manifest.oneOf.73.home_directory_size","typeLabel":"integer"},"type":{"description":"+value=rstudio","type":"string","enum":["rstudio"],"default":"rstudio","isRequired":true,"uniqueKey":"manifest.oneOf.73.type","typeLabel":"enum\u003cstring>"},"image":{"description":"Workbench Image with persistent environment (Python 3.11.6)","type":"object","required":["image_uri"],"properties":{"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.73.image.image_uri","typeLabel":"string"},"build_script":{"description":"The build script to run when building the image.\nThis will be executed as the last step in the docker build process as the root user (RUN DEBIAN_FRONTEND=noninteractive bash -ex build_script.sh)","type":"string","minLength":1,"maxLength":5120,"uniqueKey":"manifest.oneOf.73.image.build_script","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","uniqueKey":"manifest.oneOf.73.image.docker_registry","typeLabel":"string"}},"title":"WorkbenchImage","x-fern-type-name":"WorkbenchImage","isRequired":true,"uniqueKey":"manifest.oneOf.73.image","typeLabel":"WorkbenchImage · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"manifest.oneOf.73.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.73.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.73.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"manifest.oneOf.73.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.73.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.73.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.73.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.73.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"manifest.oneOf.73.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"manifest.oneOf.73.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"manifest.oneOf.73.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"manifest.oneOf.73.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.73.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.73.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.73.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.73.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.73.env","typeLabel":"object | null"},"mounts":{"description":"Configure data to be mounted to workbench pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"manifest.oneOf.73.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.73.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"manifest.oneOf.73.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.73.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"manifest.oneOf.73.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.73.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.73.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.73.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"manifest.oneOf.73.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.73.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"manifest.oneOf.73.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"manifest.oneOf.73.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.73.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"manifest.oneOf.73.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"manifest.oneOf.73.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"service_account":{"description":"+sort=10113","type":"string","uniqueKey":"manifest.oneOf.73.service_account","typeLabel":"string"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"manifest.oneOf.73.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"manifest.oneOf.73.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"manifest.oneOf.73.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"manifest.oneOf.73.kustomize","typeLabel":"Kustomize · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"manifest.oneOf.73.workspace_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.73","typeLabel":"RStudio · object"},{"type":"object","title":"Workflow","description":"Manifest of the resource to be created or updated","required":["type","name","source","workflow_file_path"],"x-fern-type-name":"Workflow","properties":{"type":{"description":"+value=workflow","type":"string","enum":["workflow"],"default":"workflow","isRequired":true,"uniqueKey":"manifest.oneOf.74.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the workflow","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.74.name","typeLabel":"string"},"source":{"oneOf":[{"type":"object","title":"LocalSource","description":"Describes that we are using code stored in a local developement environment to build our image","required":["type","project_root_path","local_build"],"x-fern-type-name":"LocalSource","properties":{"type":{"description":"+value=local","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"manifest.oneOf.74.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"project_root_path":{"description":"Local project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.74.source.oneOf.0.project_root_path","typeLabel":"string"},"local_build":{"description":"run docker build locally","type":"boolean","default":false,"isRequired":true,"uniqueKey":"manifest.oneOf.74.source.oneOf.0.local_build","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"manifest.oneOf.74.source.oneOf.0","typeLabel":"LocalSource · object"},{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"manifest.oneOf.74.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.source.oneOf.1.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.74.source.oneOf.1","typeLabel":"RemoteSource · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.74.source","typeLabel":"LocalSource · object | RemoteSource · object"},"workflow_file_path":{"description":"Path to the workflow file relative to the project root path","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.workflow_file_path","typeLabel":"string"},"flyte_entities":{"description":"Flyte Entities","type":"array","items":{"oneOf":[{"type":"object","title":"FlyteTask","required":["template"],"x-fern-type-name":"FlyteTask","properties":{"template":{"oneOf":[{"type":"object","title":"TruefoundryFlyteTaskTemplate","required":["id","custom"],"x-fern-type-name":"FlyteTaskTemplate","properties":{"id":{"type":"object","required":["resourceType","name"],"properties":{"resourceType":{"type":"string","enum":["TASK"],"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.id.resourceType","typeLabel":"enum\u003cstring>"},"name":{"type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.id.name","typeLabel":"string"}},"title":"FlyteTaskID","x-fern-type-name":"FlyteTaskID","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.id","typeLabel":"FlyteTaskID · object"},"custom":{"type":"object","required":["truefoundry"],"properties":{"truefoundry":{"oneOf":[{"type":"object","title":"PythonTaskConfig","description":"Describes the configuration for the python function task","required":["type","image"],"x-fern-type-name":"PythonTaskConfig","properties":{"type":{"description":"+value=python-task-config","type":"string","enum":["python-task-config"],"default":"python-task-config","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.type","typeLabel":"enum\u003cstring>"},"image":{"type":"any","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.image","typeLabel":"any"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the task either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the task either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.env","typeLabel":"object | null"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.shared_memory_size","typeLabel":"integer"},"node":{"type":"any","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.node","typeLabel":"any"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"type":"any","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.devices.items.[INDEX]","typeLabel":"any"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.devices","typeLabel":"any[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources","typeLabel":"Resources · object"},"mounts":{"description":"Configure data to be mounted to Workflow pod(s) as a volume.","type":"array","items":{"type":"any","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.mounts.items.[INDEX]","typeLabel":"any"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.mounts","typeLabel":"any[]"},"service_account":{"description":"Service Account","type":"string","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.service_account","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0","typeLabel":"PythonTaskConfig · object"},{"type":"object","title":"ContainerTaskConfig","description":"+discriminator=type","required":["type","image"],"x-fern-type-name":"ContainerTaskConfig","properties":{"type":{"description":"+value=container-task-config","type":"string","enum":["container-task-config"],"default":"container-task-config","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.type","typeLabel":"enum\u003cstring>"},"image":{"type":"any","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.image","typeLabel":"any"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the task either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the task either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.env","typeLabel":"object | null"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.shared_memory_size","typeLabel":"integer"},"node":{"type":"any","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.node","typeLabel":"any"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"type":"any","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.devices.items.[INDEX]","typeLabel":"any"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.devices","typeLabel":"any[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources","typeLabel":"Resources · object"},"mounts":{"description":"Configure data to be mounted to Workflow pod(s) as a volume.","type":"array","items":{"type":"any","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.mounts.items.[INDEX]","typeLabel":"any"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.mounts","typeLabel":"any[]"},"service_account":{"description":"Service Account","type":"string","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.service_account","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1","typeLabel":"ContainerTaskConfig · object"},{"type":"object","title":"PySparkTaskConfig","description":"+discriminator=type","required":["type","image","driver_config","executor_config"],"x-fern-type-name":"PySparkTaskConfig","properties":{"type":{"description":"+value=pyspark-task-config","type":"string","enum":["pyspark-task-config"],"default":"pyspark-task-config","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.type","typeLabel":"enum\u003cstring>"},"image":{"type":"any","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.image","typeLabel":"any"},"driver_config":{"description":"Driver Config","type":"object","properties":{"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.shared_memory_size","typeLabel":"integer"},"node":{"type":"any","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.node","typeLabel":"any"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"type":"any","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.devices.items.[INDEX]","typeLabel":"any"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.devices","typeLabel":"any[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources","typeLabel":"Resources · object"}},"title":"SparkDriverConfig","x-fern-type-name":"SparkDriverConfig","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config","typeLabel":"SparkDriverConfig · object"},"executor_config":{"description":"Executor Config","type":"object","required":["instances"],"properties":{"instances":{"type":"any","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.instances","typeLabel":"any"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.shared_memory_size","typeLabel":"integer"},"node":{"type":"any","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.node","typeLabel":"any"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"type":"any","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.devices.items.[INDEX]","typeLabel":"any"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.devices","typeLabel":"any[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources","typeLabel":"Resources · object"}},"title":"SparkExecutorConfig","x-fern-type-name":"SparkExecutorConfig","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config","typeLabel":"SparkExecutorConfig · object"},"spark_conf":{"oneOf":[{"description":"Extra configuration properties to be passed to the spark job. [Docs](https://spark.apache.org/docs/latest/configuration.html)","type":"object","default":null,"additionalProperties":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.spark_conf.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.spark_conf.oneOf.0","typeLabel":"object"},{"description":"Extra configuration properties to be passed to the spark job. [Docs](https://spark.apache.org/docs/latest/configuration.html)","type":"null","default":null,"additionalProperties":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.spark_conf.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.spark_conf.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.spark_conf","typeLabel":"object | null"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the task either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the task either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.env","typeLabel":"object | null"},"mounts":{"description":"Configure data to be mounted to Workflow pod(s) as a volume.","type":"array","items":{"type":"object","required":["type","mount_path","volume_fqn"],"properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.mounts.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.mounts.items.[INDEX].mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.mounts.items.[INDEX].volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.mounts.items.[INDEX].sub_path","typeLabel":"string"}},"title":"VolumeMount","x-fern-type-name":"VolumeMount","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.mounts.items.[INDEX]","typeLabel":"VolumeMount · object"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.mounts","typeLabel":"VolumeMount · object[]"},"service_account":{"description":"Service Account","type":"string","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.service_account","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2","typeLabel":"PySparkTaskConfig · object"},{"type":"object","title":"DatabricksJobTaskConfig","description":"Task that triggers a Databricks job via API and polls until completion. Uses image and optional resources; no env or mounts. Execution is handled by the CLI (trigger + poll).","required":["type","image","workspace_host","job_id"],"x-fern-type-name":"DatabricksJobTaskConfig","properties":{"type":{"description":"+value=databricks-job-task-config","type":"string","enum":["databricks-job-task-config"],"default":"databricks-job-task-config","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.type","typeLabel":"enum\u003cstring>"},"image":{"type":"any","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.image","typeLabel":"any"},"workspace_host":{"description":"Databricks workspace URL, e.g. https://\u003cworkspace>.cloud.databricks.com","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.workspace_host","typeLabel":"string"},"job_id":{"description":"The Databricks job ID to run (from Databricks workspace Jobs).","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.job_id","typeLabel":"string"},"service_account":{"description":"Service Account","type":"string","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.service_account","typeLabel":"string"},"job_parameters":{"oneOf":[{"description":"Optional parameters to pass to the job run (e.g. notebook params, jar params).","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.job_parameters.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.job_parameters.oneOf.0","typeLabel":"object"},{"description":"Optional parameters to pass to the job run (e.g. notebook params, jar params).","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.job_parameters.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.job_parameters.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.job_parameters","typeLabel":"object | null"},"timeout_seconds":{"oneOf":[{"description":"Maximum seconds to wait for the job run to complete. Used by CLI when polling.","type":"number","default":null,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.timeout_seconds.oneOf.0","typeLabel":"number"},{"description":"Maximum seconds to wait for the job run to complete. Used by CLI when polling.","type":"null","default":null,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.timeout_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.timeout_seconds","typeLabel":"number | null"},"skip_wait_for_completion":{"description":"If false, the task waits for the Databricks job run to complete (trigger and poll). If true, only triggers the job and returns. Default false.","type":"boolean","default":false,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.skip_wait_for_completion","typeLabel":"boolean"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the task either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the task either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.env","typeLabel":"object | null"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.shared_memory_size","typeLabel":"integer"},"node":{"type":"any","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.node","typeLabel":"any"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"type":"any","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.devices.items.[INDEX]","typeLabel":"any"},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.devices","typeLabel":"any[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources","typeLabel":"Resources · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3","typeLabel":"DatabricksJobTaskConfig · object"},{"type":"object","title":"SnowflakeTaskConfig","description":"+discriminator=type","required":["type","user","account","database","schema_name","warehouse"],"x-fern-type-name":"SnowflakeTaskConfig","properties":{"type":{"description":"+value=snowflake-task-config","type":"string","enum":["snowflake-task-config"],"default":"snowflake-task-config","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.4.type","typeLabel":"enum\u003cstring>"},"user":{"description":"Configuration required to connect and execute tasks in Snowflake.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.4.user","typeLabel":"string"},"account":{"description":"Snowflake account identifier (e.g., \u003corg>-\u003caccount>).","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.4.account","typeLabel":"string"},"database":{"description":"Target Snowflake database where the task will run.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.4.database","typeLabel":"string"},"schema_name":{"description":"Target schema within the Snowflake database.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.4.schema_name","typeLabel":"string"},"warehouse":{"description":"Compute warehouse to be used for executing the task.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.4.warehouse","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.4","typeLabel":"SnowflakeTaskConfig · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry","typeLabel":"PythonTaskConfig · object | ContainerTaskConfig · object | PySparkTaskConfig · object | DatabricksJobTaskConfig · object | SnowflakeTaskConfig · object"}},"title":"FlyteTaskCustom","x-fern-type-name":"FlyteTaskCustom","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom","typeLabel":"FlyteTaskCustom · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0","typeLabel":"TruefoundryFlyteTaskTemplate · object"},{"type":"object","title":"NativeSnowflakeFlyteTaskTemplate","required":["id","type","config","sql"],"x-fern-type-name":"FlyteTaskTemplate","properties":{"id":{"type":"object","required":["resourceType","name"],"properties":{"resourceType":{"type":"string","enum":["TASK"],"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.id.resourceType","typeLabel":"enum\u003cstring>"},"name":{"type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.id.name","typeLabel":"string"}},"title":"FlyteTaskID","x-fern-type-name":"FlyteTaskID","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.id","typeLabel":"FlyteTaskID · object"},"type":{"type":"string","enum":["snowflake"],"default":"snowflake","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.type","typeLabel":"enum\u003cstring>"},"config":{"type":"object","required":["account","schema","user","warehouse","database"],"properties":{"account":{"type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.config.account","typeLabel":"string"},"schema":{"type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.config.schema","typeLabel":"string"},"user":{"type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.config.user","typeLabel":"string"},"warehouse":{"type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.config.warehouse","typeLabel":"string"},"database":{"type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.config.database","typeLabel":"string"}},"title":"SnowflakeConfig","x-fern-type-name":"SnowflakeConfig","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.config","typeLabel":"SnowflakeConfig · object"},"sql":{"type":"object","required":["statement"],"properties":{"statement":{"type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.sql.statement","typeLabel":"string"}},"title":"SnowflakeSql","x-fern-type-name":"SnowflakeSql","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.sql","typeLabel":"SnowflakeSql · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1","typeLabel":"NativeSnowflakeFlyteTaskTemplate · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template","typeLabel":"TruefoundryFlyteTaskTemplate · object | NativeSnowflakeFlyteTaskTemplate · object"},"description":{"oneOf":[{}],"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.description","typeLabel":"any"}},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0","typeLabel":"FlyteTask · object"},{"type":"object","title":"FlyteWorkflow","required":["template"],"x-fern-type-name":"FlyteWorkflow","properties":{"template":{"type":"object","required":["id"],"properties":{"id":{"type":"object","required":["resourceType","name"],"properties":{"resourceType":{"type":"string","enum":["WORKFLOW"],"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.1.template.id.resourceType","typeLabel":"enum\u003cstring>"},"name":{"type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.1.template.id.name","typeLabel":"string"}},"title":"FlyteWorkflowID","x-fern-type-name":"FlyteWorkflowID","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.1.template.id","typeLabel":"FlyteWorkflowID · object"}},"title":"FlyteWorkflowTemplate","x-fern-type-name":"FlyteWorkflowTemplate","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.1.template","typeLabel":"FlyteWorkflowTemplate · object"},"description":{"oneOf":[{}],"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.1.description","typeLabel":"any"}},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.1","typeLabel":"FlyteWorkflow · object"},{"type":"object","title":"FlyteLaunchPlan","required":["id","spec","closure"],"x-fern-type-name":"FlyteLaunchPlan","properties":{"id":{"type":"object","required":["resourceType","name"],"properties":{"resourceType":{"type":"string","enum":["LAUNCH_PLAN"],"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.2.id.resourceType","typeLabel":"enum\u003cstring>"},"name":{"type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.2.id.name","typeLabel":"string"}},"title":"FlyteLaunchPlanID","x-fern-type-name":"FlyteLaunchPlanID","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.2.id","typeLabel":"FlyteLaunchPlanID · object"},"spec":{"type":"object","required":["workflowId"],"properties":{"workflowId":{"type":"object","required":["resourceType","name"],"properties":{"resourceType":{"type":"string","enum":["WORKFLOW"],"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.2.spec.workflowId.resourceType","typeLabel":"enum\u003cstring>"},"name":{"type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.2.spec.workflowId.name","typeLabel":"string"}},"title":"FlyteWorkflowID","x-fern-type-name":"FlyteWorkflowID","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.2.spec.workflowId","typeLabel":"FlyteWorkflowID · object"}},"title":"FlyteLaunchPlanSpec","x-fern-type-name":"FlyteLaunchPlanSpec","isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.2.spec","typeLabel":"FlyteLaunchPlanSpec · object"},"closure":{"oneOf":[{"isRequired":true}],"isRequired":true,"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.2.closure","typeLabel":"any"}},"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.2","typeLabel":"FlyteLaunchPlan · object"}],"uniqueKey":"manifest.oneOf.74.flyte_entities.items.[INDEX]","typeLabel":"FlyteTask · object | FlyteWorkflow · object | FlyteLaunchPlan · object"},"uniqueKey":"manifest.oneOf.74.flyte_entities","typeLabel":"(FlyteTask · object | FlyteWorkflow · object | FlyteLaunchPlan · object)[]"},"alerts":{"description":"Alerts","type":"array","items":{"description":"Describes the configuration for the workflow alerts","type":"object","properties":{"notification_target":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBot","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.2.channels","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.2","typeLabel":"SlackBot · object"},{"type":"object","title":"PagerDuty","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.3","typeLabel":"PagerDuty · object"}],"uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].notification_target","typeLabel":"Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object"},"on_completion":{"description":"Send an alert when the job completes","type":"boolean","default":false,"uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].on_completion","typeLabel":"boolean"},"on_failure":{"description":"Send an alert when the job fails","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX].on_failure","typeLabel":"boolean"}},"title":"WorkflowAlert","x-fern-type-name":"WorkflowAlert","uniqueKey":"manifest.oneOf.74.alerts.items.[INDEX]","typeLabel":"WorkflowAlert · object"},"uniqueKey":"manifest.oneOf.74.alerts","typeLabel":"WorkflowAlert · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.74","typeLabel":"Workflow · object"},{"type":"object","title":"AsyncService","description":"Manifest of the resource to be created or updated","required":["type","replicas","worker_config","name","image","ports"],"x-fern-type-name":"AsyncService","properties":{"name":{"description":"Name of the service. This uniquely identifies this service in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.75.name","typeLabel":"string"},"image":{"oneOf":[{"type":"object","title":"Build","description":"Describes how we build our code into a Docker image.","required":["type","build_source","build_spec"],"x-fern-type-name":"Build","properties":{"type":{"description":"+value=build","type":"string","enum":["build"],"default":"build","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.type","typeLabel":"enum\u003cstring>"},"build_source":{"oneOf":[{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_source.oneOf.0.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_source.oneOf.0","typeLabel":"RemoteSource · object"},{"type":"object","title":"GitSource","description":"Describes that we are using code stored in a git repository to build our image","required":["type","repo_url","ref"],"x-fern-type-name":"GitSource","properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"The repository URL.","type":"string","pattern":"^(https?://)\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_source.oneOf.1.repo_url","typeLabel":"string"},"ref":{"description":"The commit SHA.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_source.oneOf.1.ref","typeLabel":"string"},"branch_name":{"description":"Selecting branch will select latest commit SHA of the branch.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_source.oneOf.1.branch_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_source.oneOf.1","typeLabel":"GitSource · object"},{"type":"object","title":"LocalSource","description":"Describes that we are using code stored in a local developement environment to build our image","required":["type","project_root_path","local_build"],"x-fern-type-name":"LocalSource","properties":{"type":{"description":"+value=local","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"project_root_path":{"description":"Local project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_source.oneOf.2.project_root_path","typeLabel":"string"},"local_build":{"description":"run docker build locally","type":"boolean","default":false,"isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_source.oneOf.2.local_build","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_source.oneOf.2","typeLabel":"LocalSource · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_source","typeLabel":"RemoteSource · object | GitSource · object | LocalSource · object"},"build_spec":{"oneOf":[{"type":"object","title":"DockerFileBuild","description":"Describes that we are using a dockerfile to build our image","required":["type","dockerfile_path","build_context_path"],"x-fern-type-name":"DockerFileBuild","properties":{"type":{"description":"+value=dockerfile","type":"string","enum":["dockerfile"],"default":"dockerfile","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.type","typeLabel":"enum\u003cstring>"},"dockerfile_path":{"description":"The file path of the Dockerfile relative to project root path.","type":"string","default":"./Dockerfile","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.dockerfile_path","typeLabel":"string"},"build_context_path":{"description":"Build context path for the Dockerfile relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.command","typeLabel":"string | string[]"},"build_args":{"description":"Build arguments to pass to docker build","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.build_args.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.build_args","typeLabel":"object"},"build_secrets":{"description":"Build secrets you can use in run statements inside dockerfile like RUN --mount=type=secret,id=pip_index_url ... you can learn more about build secrets here https://www.truefoundry.com/docs/docker-build-secrets","type":"array","items":{"type":"object","required":["id","value"],"properties":{"id":{"description":"The ID of the build secret.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].id","typeLabel":"string"},"value":{"description":"The value of the build secret.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].value","typeLabel":"string"},"env":{"description":"The name of the environment variable to inject the secret into.","type":"string","pattern":"^[_a-zA-Z0-9][_a-zA-Z0-9]{1,31}$","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].env","typeLabel":"string"}},"title":"BuildSecret","x-fern-type-name":"BuildSecret","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX]","typeLabel":"BuildSecret · object"},"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.build_secrets","typeLabel":"BuildSecret · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0","typeLabel":"DockerFileBuild · object"},{"type":"object","title":"PythonBuild","description":"Describes that we are using python to build a container image with a specific python version and pip packages installed.","required":["type","build_context_path","command"],"x-fern-type-name":"PythonBuild","properties":{"type":{"description":"+value=tfy-python-buildpack","type":"string","enum":["tfy-python-buildpack"],"default":"tfy-python-buildpack","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.type","typeLabel":"enum\u003cstring>"},"build_context_path":{"description":"Build path relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.command","typeLabel":"string | string[]"},"python_version":{"description":"Python version to run your application. Should be one of the tags listed on [Official Python Docker Page](https://hub.docker.com/_/python)","type":"string","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_version","typeLabel":"string"},"requirements_path":{"description":"Path to `requirements.txt` relative to\n`Path to build context`","type":"string","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.pip_packages","typeLabel":"string[]"},"python_dependencies":{"oneOf":[{"type":"object","title":"Pip","description":"Use pip to install requirements files and packages","required":["type"],"x-fern-type-name":"Pip","properties":{"type":{"description":"+value=pip","type":"string","enum":["pip"],"default":"pip","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.type","typeLabel":"enum\u003cstring>"},"requirements_path":{"description":"Path to `requirements.txt` relative to `Path to build context`","type":"string","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0","typeLabel":"Pip · object"},{"type":"object","title":"UV","description":"Use `uv` to setup env.\nYour build context root must contain `pyproject.toml` and `uv.lock`","required":["type"],"x-fern-type-name":"UV","properties":{"type":{"description":"+value=uv","type":"string","enum":["uv"],"default":"uv","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uv_version":{"description":"UV version to use","type":"string","default":"latest","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.uv_version","typeLabel":"string"},"sync_options":{"description":"Sync options to pass to uv command","type":"string","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.sync_options","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1","typeLabel":"UV · object"},{"type":"object","title":"Poetry","description":"Use `poetry` to setup env.\nYour build context root must contain `pyproject.toml` and `poetry.lock`","required":["type"],"x-fern-type-name":"Poetry","properties":{"type":{"description":"+value=poetry","type":"string","enum":["poetry"],"default":"poetry","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.type","typeLabel":"enum\u003cstring>"},"poetry_version":{"oneOf":[{"type":"string","description":"Poetry version to use","default":"latest","enum":["latest"],"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","description":"Poetry version to use","default":"latest","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version.oneOf.1","typeLabel":"string"}],"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version","typeLabel":"enum\u003cstring> | string"},"install_options":{"description":"install options to pass to poetry command","type":"string","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.install_options","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2","typeLabel":"Poetry · object"}],"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies","typeLabel":"Pip · object | UV · object | Poetry · object"},"apt_packages":{"description":"Debian packages to install via `apt get`.\nIn Python/YAML E.g. [\"git\", \"ffmpeg\", \"htop\"]","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.apt_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.apt_packages","typeLabel":"string[]"},"cuda_version":{"description":"Version of CUDA Toolkit and CUDNN to install in the image\nThese combinations are based off of publically available docker images on docker hub\nYou can also specify a valid tag of the form {cuda_version_number}-cudnn{cudnn_version_number}-{runtime|devel}-ubuntu{ubuntu_version}\nRefer https://hub.docker.com/r/nvidia/cuda/tags for valid set of values\nNote: We use deadsnakes ubuntu ppa to add Python that currently supports only Ubuntu 18.04, 20.04 and 22.04","type":"string","pattern":"^((\\d+\\.\\d+(\\.\\d+)?-cudnn(\\d+)?-(runtime|devel)-ubuntu\\d+\\.\\d+)|11\\.0-cudnn8|11\\.1-cudnn8|11\\.2-cudnn8|11\\.3-cudnn8|11\\.4-cudnn8|11\\.5-cudnn8|11\\.6-cudnn8|11\\.7-cudnn8|11\\.8-cudnn8|12\\.0-cudnn8|12\\.1-cudnn8|12\\.2-cudnn8|12\\.3-cudnn9|12\\.4-cudnn9|12\\.5-cudnn9|12\\.6-cudnn9|12\\.8-cudnn9|12\\.9-cudnn9)$","uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.cuda_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1","typeLabel":"PythonBuild · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0.build_spec","typeLabel":"DockerFileBuild · object | PythonBuild · object"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.75.image.oneOf.0.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.0","typeLabel":"Build · object"},{"type":"object","title":"Image","description":"Describes that we are using a pre-built image stored in a Docker Image registry","required":["type","image_uri"],"x-fern-type-name":"Image","properties":{"type":{"description":"+value=image","type":"string","enum":["image"],"default":"image","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.1.type","typeLabel":"enum\u003cstring>"},"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.1.image_uri","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.75.image.oneOf.1.docker_registry","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.75.image.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.75.image.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"manifest.oneOf.75.image.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"manifest.oneOf.75.image.oneOf.1.command","typeLabel":"string | string[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.75.image.oneOf.1","typeLabel":"Image · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.75.image","typeLabel":"Build · object | Image · object"},"ports":{"description":"Expose the deployment to make it accessible over the internet or keep it private. Implement authentication to restrict access. [Docs](https://docs.truefoundry.com/docs/define-ports-and-domains)","type":"array","items":{"description":"Describes the ports the service should be exposed to.","type":"object","required":["port","protocol","expose"],"properties":{"port":{"description":"Port number to expose.","type":"integer","minimum":1,"maximum":65535,"default":80,"isRequired":true,"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].port","typeLabel":"integer"},"protocol":{"description":"Protocol for the port.","type":"string","enum":["TCP","UDP"],"default":"TCP","isRequired":true,"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].protocol","typeLabel":"enum\u003cstring>"},"expose":{"description":"Expose the port","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].expose","typeLabel":"boolean"},"app_protocol":{"description":"Application Protocol for the port.\nSelect the application protocol used by your service. For most use cases, this should be `http`(HTTP/1.1).\nIf you are running a gRPC server, select the `grpc` option.\nThis is only applicable if `expose=true`.","type":"string","enum":["http","grpc","tcp"],"default":"http","uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].app_protocol","typeLabel":"enum\u003cstring>"},"host":{"description":"Host e.g. ai.example.com, app.truefoundry.com","type":"string","pattern":"^((([a-zA-Z0-9\\-]{1,63}\\.)([a-zA-Z0-9\\-]{1,63}\\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$","uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].host","typeLabel":"string"},"path":{"description":"Path e.g. /v1/api/ml/, /v2/docs/","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].path","typeLabel":"string"},"rewrite_path_to":{"description":"Rewrite the path prefix to a different path.\nIf `path` is `/v1/api` and `rewrite_path_to` is `/api`. The URI in the HTTP request `http://0.0.0.0:8080/v1/api/houses` will be rewritten to `http://0.0.0.0:8080/api/houses` before the request is forwarded your service.\nDefaults to `/`.\nThis is only applicable if `path` is given.","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].rewrite_path_to","typeLabel":"string"},"auth":{"oneOf":[{"type":"object","title":"BasicAuthCreds","description":"Username and password","required":["type","username","password"],"x-fern-type-name":"BasicAuthCreds","properties":{"type":{"description":"+value=basic_auth","type":"string","enum":["basic_auth"],"default":"basic_auth","isRequired":true,"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"username":{"description":"Username for service auth - Username for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.0.username","typeLabel":"string"},"password":{"description":"Password for service auth - Password for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.0.password","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.0","typeLabel":"BasicAuthCreds · object"},{"type":"object","title":"JwtAuthConfig","description":"Configure JWT-based authentication using JWKS","required":["type","integration_fqn"],"x-fern-type-name":"JwtAuthConfig","properties":{"type":{"description":"+value=jwt_auth","type":"string","enum":["jwt_auth"],"default":"jwt_auth","isRequired":true,"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"integration_fqn":{"description":"FQN of the JWT Auth integration. If you can't find your integration here,\nadd it through the [Integrations](/integrations) page","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.integration_fqn","typeLabel":"string"},"enable_login":{"description":"Enable login for the service","type":"boolean","uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.enable_login","typeLabel":"boolean"},"claims":{"description":"List of key-value pairs of claims to verify in the JWT token","type":"array","items":{"type":"object","required":["key","values"],"properties":{"key":{"type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].key","typeLabel":"string"},"values":{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX]","typeLabel":"object"},"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.claims","typeLabel":"object[]"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1","typeLabel":"JwtAuthConfig · object"},{"type":"object","title":"TrueFoundryInteractiveLogin","description":"Login with truefoundry","required":["type"],"x-fern-type-name":"TrueFoundryInteractiveLogin","properties":{"type":{"description":"+value=truefoundry_oauth","type":"string","enum":["truefoundry_oauth"],"default":"truefoundry_oauth","isRequired":true,"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.2.type","typeLabel":"enum\u003cstring>"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth.oneOf.2","typeLabel":"TrueFoundryInteractiveLogin · object"}],"uniqueKey":"manifest.oneOf.75.ports.items.[INDEX].auth","typeLabel":"BasicAuthCreds · object | JwtAuthConfig · object | TrueFoundryInteractiveLogin · object"}},"title":"Port","x-fern-type-name":"Port","uniqueKey":"manifest.oneOf.75.ports.items.[INDEX]","typeLabel":"Port · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.75.ports","typeLabel":"Port · object[]"},"type":{"description":"+value=async-service","type":"string","enum":["async-service"],"default":"async-service","isRequired":true,"uniqueKey":"manifest.oneOf.75.type","typeLabel":"enum\u003cstring>"},"replicas":{"oneOf":[{"type":"number","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"maximum":500,"minimum":0,"isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.0","typeLabel":"number"},{"type":"object","title":"AsyncServiceAutoscaling","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"required":["metrics","min_replicas","max_replicas"],"x-fern-type-name":"AsyncServiceAutoscaling","properties":{"min_replicas":{"description":"Minimum number of replicas to keep available","type":"integer","minimum":0,"default":1,"isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.min_replicas","typeLabel":"integer"},"max_replicas":{"description":"Maximum number of replicas allowed for the component.","type":"integer","minimum":1,"maximum":500,"isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.max_replicas","typeLabel":"integer"},"metrics":{"oneOf":[{"type":"object","title":"SQSQueueMetricConfig","description":"Metrics to use for the autoscaler","required":["type","queue_length"],"x-fern-type-name":"SQSQueueMetricConfig","properties":{"type":{"description":"+value=sqs","type":"string","enum":["sqs"],"default":"sqs","isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.type","typeLabel":"enum\u003cstring>"},"queue_length":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the queue and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.queue_length","typeLabel":"integer"},"auth":{"oneOf":[{"type":"object","title":"AwsSqsAccessKeyBasedAuth","description":"AWS Access Key Based Auth","required":["type","access_key_id","secret_access_key"],"x-fern-type-name":"AwsSqsAccessKeyBasedAuth","properties":{"type":{"description":"+value=access-key-based","type":"string","enum":["access-key-based"],"default":"access-key-based","isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"access_key_id":{"description":"AWS access key ID that you want to use for authentication.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.auth.oneOf.0.access_key_id","typeLabel":"string"},"secret_access_key":{"description":"AWS access key secret that you want to use for authentication.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.auth.oneOf.0.secret_access_key","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.auth.oneOf.0","typeLabel":"AwsSqsAccessKeyBasedAuth · object"},{"type":"object","title":"AwsSqsAssumedRoleBasedAuth","description":"AWS Assumed Role Based Auth","required":["type","assumed_role_arn"],"x-fern-type-name":"AwsSqsAssumedRoleBasedAuth","properties":{"type":{"description":"+value=assumed-role-based","type":"string","enum":["assumed-role-based"],"default":"assumed-role-based","isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"assumed_role_arn":{"description":"ARN of the role you want to assume.","type":"string","pattern":"^arn:(aws|aws-us-gov|aws-cn):iam::[0-9]{12}:role(/[\\w+=,.@-]+)+$","isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.auth.oneOf.1.assumed_role_arn","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.auth.oneOf.1","typeLabel":"AwsSqsAssumedRoleBasedAuth · object"}],"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.auth","typeLabel":"AwsSqsAccessKeyBasedAuth · object | AwsSqsAssumedRoleBasedAuth · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0","typeLabel":"SQSQueueMetricConfig · object"},{"type":"object","title":"NATSMetricConfig","description":"Metrics to use for the autoscaler","required":["type","lag_threshold"],"x-fern-type-name":"NATSMetricConfig","properties":{"type":{"description":"+value=nats","type":"string","enum":["nats"],"default":"nats","isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.1.type","typeLabel":"enum\u003cstring>"},"lag_threshold":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the stream and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.1.lag_threshold","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.1","typeLabel":"NATSMetricConfig · object"},{"type":"object","title":"KafkaMetricConfig","description":"Metrics to use for the autoscaler","required":["type","lag_threshold"],"x-fern-type-name":"KafkaMetricConfig","properties":{"type":{"description":"+value=kafka","type":"string","enum":["kafka"],"default":"kafka","isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.2.type","typeLabel":"enum\u003cstring>"},"lag_threshold":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the stream and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.2.lag_threshold","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.2","typeLabel":"KafkaMetricConfig · object"},{"type":"object","title":"CronMetric","description":"Metrics to use for the autoscaler","required":["type","start","end","timezone"],"x-fern-type-name":"CronMetric","properties":{"type":{"description":"+value=cron","type":"string","enum":["cron"],"default":"cron","isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.3.type","typeLabel":"enum\u003cstring>"},"start":{"description":"Cron expression indicating the start of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.3.start","typeLabel":"string"},"end":{"description":"Cron expression indicating the end of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.3.end","typeLabel":"string"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","default":"UTC","isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.3.timezone","typeLabel":"string"},"desired_replicas":{"description":"Desired number of replicas during the given interval. Default value is max_replicas.","type":"integer","minimum":1,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.3.desired_replicas","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.3","typeLabel":"CronMetric · object"},{"type":"object","title":"AMQPMetricConfig","description":"Metrics to use for the autoscaler","required":["type","queue_length"],"x-fern-type-name":"AMQPMetricConfig","properties":{"type":{"description":"+value=amqp","type":"string","enum":["amqp"],"default":"amqp","isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.4.type","typeLabel":"enum\u003cstring>"},"queue_length":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the stream and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.4.queue_length","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.4","typeLabel":"AMQPMetricConfig · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.metrics","typeLabel":"SQSQueueMetricConfig · object | NATSMetricConfig · object | KafkaMetricConfig · object | CronMetric · object | AMQPMetricConfig · object"},"polling_interval":{"description":"This is the interval to check each trigger on.","type":"integer","minimum":0,"default":30,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1.polling_interval","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas.oneOf.1","typeLabel":"AsyncServiceAutoscaling · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.75.replicas","typeLabel":"number | AsyncServiceAutoscaling · object"},"worker_config":{"type":"object","required":["input_config","num_concurrent_workers"],"properties":{"input_config":{"oneOf":[{"type":"object","title":"SQSInputConfig","description":"Describes the configuration for the input SQS worker","required":["type","queue_url","region_name","visibility_timeout","wait_time_seconds"],"x-fern-type-name":"SQSInputConfig","properties":{"type":{"description":"+value=sqs","type":"string","enum":["sqs"],"default":"sqs","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"queue_url":{"description":"AWS SQS Queue URL of Subscriber","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.0.queue_url","typeLabel":"string"},"region_name":{"description":"AWS Region Name","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.0.region_name","typeLabel":"string"},"visibility_timeout":{"description":"A period during which Amazon SQS prevents all consumers from receiving and processing the message. If one message takes 5 seconds to process, you can set this number to 7 or any number higher than 5. This will ensure that while the message is being processed, it will not be available to other replicas. For more information, see [here](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html)","type":"integer","minimum":1,"maximum":43200,"isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.0.visibility_timeout","typeLabel":"integer"},"wait_time_seconds":{"description":"Wait timeout for long polling. For more information, see [here](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html)","type":"integer","minimum":1,"maximum":20,"default":19,"isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.0.wait_time_seconds","typeLabel":"integer"},"auth":{"type":"object","required":["aws_access_key_id","aws_secret_access_key"],"properties":{"aws_access_key_id":{"description":"AWS Access Key ID","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.0.auth.aws_access_key_id","typeLabel":"string"},"aws_secret_access_key":{"description":"AWS Secret Access Key for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.0.auth.aws_secret_access_key","typeLabel":"string"},"aws_session_token":{"description":"AWS Session Token, only required when using temporary credentials","type":"string","uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.0.auth.aws_session_token","typeLabel":"string"}},"title":"AWSAccessKeyAuth","x-fern-type-name":"AWSAccessKeyAuth","uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.0.auth","typeLabel":"AWSAccessKeyAuth · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.0","typeLabel":"SQSInputConfig · object"},{"type":"object","title":"NATSInputConfig","description":"Describes the configuration for the input NATS worker","required":["type","nats_url","stream_name","root_subject","consumer_name","wait_time_seconds"],"x-fern-type-name":"NATSInputConfig","properties":{"type":{"description":"+value=nats","type":"string","enum":["nats"],"default":"nats","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nats_url":{"description":"Input NATS URL","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.1.nats_url","typeLabel":"string"},"stream_name":{"description":"Name of the NATS stream","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.1.stream_name","typeLabel":"string"},"root_subject":{"description":"Root subject of input NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-.]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.1.root_subject","typeLabel":"string"},"consumer_name":{"description":"Consumer name of input NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-_]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.1.consumer_name","typeLabel":"string"},"wait_time_seconds":{"description":"Wait timeout for long polling.","type":"integer","minimum":1,"maximum":20,"default":19,"isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.1.wait_time_seconds","typeLabel":"integer"},"nats_metrics_url":{"description":"URL for the NATS metrics endpoint. It is compulsory if you want to use NATS autoscaling.","type":"string","pattern":"^(http(s?)://).*$","uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.1.nats_metrics_url","typeLabel":"string"},"auth":{"description":"NATS User Password Authentication","type":"object","required":["account_name","user","password"],"properties":{"account_name":{"description":"Name of the NATS account","type":"string","default":"$G","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.1.auth.account_name","typeLabel":"string"},"user":{"description":"User for NATS authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.1.auth.user","typeLabel":"string"},"password":{"description":"Password for NATS authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.1.auth.password","typeLabel":"string"}},"title":"NATSUserPasswordAuth","x-fern-type-name":"NATSUserPasswordAuth","uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.1.auth","typeLabel":"NATSUserPasswordAuth · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.1","typeLabel":"NATSInputConfig · object"},{"type":"object","title":"KafkaInputConfig","description":"Describes the configuration for the input Kafka worker","required":["type","bootstrap_servers","topic_name","consumer_group","tls"],"x-fern-type-name":"KafkaInputConfig","properties":{"type":{"description":"+value=kafka","type":"string","enum":["kafka"],"default":"kafka","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.2.type","typeLabel":"enum\u003cstring>"},"bootstrap_servers":{"description":"'Kafka Bootstrap servers - Comma separated list of Kafka brokers \"hostname:port\" to connect to for bootstrap'","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.2.bootstrap_servers","typeLabel":"string"},"topic_name":{"description":"Kafka topic to subscribe to","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.2.topic_name","typeLabel":"string"},"consumer_group":{"description":"The name of the consumer group to join for dynamic partition assignment","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.2.consumer_group","typeLabel":"string"},"tls":{"description":"TLS configuration for SASL authentication","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.2.tls","typeLabel":"boolean"},"wait_time_seconds":{"description":"Wait timeout for long polling.","type":"integer","minimum":1,"maximum":300,"default":10,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.2.wait_time_seconds","typeLabel":"integer"},"auth":{"type":"object","required":["username","password"],"properties":{"username":{"description":"Username for SASL authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.2.auth.username","typeLabel":"string"},"password":{"description":"Password for SASL authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.2.auth.password","typeLabel":"string"}},"title":"KafkaSASLAuth","x-fern-type-name":"KafkaSASLAuth","uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.2.auth","typeLabel":"KafkaSASLAuth · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.2","typeLabel":"KafkaInputConfig · object"},{"type":"object","title":"AMQPInputConfig","description":"Describes the configuration for the input AMQP worker","required":["type","url","queue_name","wait_time_seconds"],"x-fern-type-name":"AMQPInputConfig","properties":{"type":{"description":"+value=amqp","type":"string","enum":["amqp"],"default":"amqp","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.3.type","typeLabel":"enum\u003cstring>"},"url":{"description":"AMQP Queue URL of Subscriber","type":"string","pattern":"^(amqp|amqps?)://(?:[^:@]+(?::[^:@]+)?@)?([^/?]+)(?:/([^?]+))?/?([^?]+)?(?:\\?(.*))?$","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.3.url","typeLabel":"string"},"queue_name":{"description":"AMQP Queue Name","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.3.queue_name","typeLabel":"string"},"wait_time_seconds":{"description":"Wait timeout for long polling.","type":"integer","minimum":1,"default":5,"isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.3.wait_time_seconds","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config.oneOf.3","typeLabel":"AMQPInputConfig · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.input_config","typeLabel":"SQSInputConfig · object | NATSInputConfig · object | KafkaInputConfig · object | AMQPInputConfig · object"},"num_concurrent_workers":{"description":"Number of concurrent workers to spawn for the processor","type":"integer","minimum":1,"maximum":10,"default":1,"isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.num_concurrent_workers","typeLabel":"integer"},"output_config":{"oneOf":[{"type":"object","title":"SQSOutputConfig","description":"Describes the configuration for the output SQS worker","required":["type","queue_url","region_name"],"x-fern-type-name":"SQSOutputConfig","properties":{"type":{"description":"+value=sqs","type":"string","enum":["sqs"],"default":"sqs","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"queue_url":{"description":"AWS SQS Queue URL of Publisher","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.0.queue_url","typeLabel":"string"},"region_name":{"description":"AWS Region Name","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.0.region_name","typeLabel":"string"},"auth":{"type":"object","required":["aws_access_key_id","aws_secret_access_key"],"properties":{"aws_access_key_id":{"description":"AWS Access Key ID","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.0.auth.aws_access_key_id","typeLabel":"string"},"aws_secret_access_key":{"description":"AWS Secret Access Key for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.0.auth.aws_secret_access_key","typeLabel":"string"},"aws_session_token":{"description":"AWS Session Token, only required when using temporary credentials","type":"string","uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.0.auth.aws_session_token","typeLabel":"string"}},"title":"AWSAccessKeyAuth","x-fern-type-name":"AWSAccessKeyAuth","uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.0.auth","typeLabel":"AWSAccessKeyAuth · object"}},"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.0","typeLabel":"SQSOutputConfig · object"},{"type":"object","title":"NATSOutputConfig","description":"Describes the configuration for the output NATS worker","required":["type","nats_url","root_subject"],"x-fern-type-name":"NATSOutputConfig","properties":{"type":{"description":"+value=nats","type":"string","enum":["nats"],"default":"nats","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nats_url":{"description":"Output NATS URL","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.1.nats_url","typeLabel":"string"},"root_subject":{"description":"Root subject of output NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-.]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.1.root_subject","typeLabel":"string"},"auth":{"description":"NATS User Password Authentication","type":"object","required":["account_name","user","password"],"properties":{"account_name":{"description":"Name of the NATS account","type":"string","default":"$G","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.1.auth.account_name","typeLabel":"string"},"user":{"description":"User for NATS authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.1.auth.user","typeLabel":"string"},"password":{"description":"Password for NATS authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.1.auth.password","typeLabel":"string"}},"title":"NATSUserPasswordAuth","x-fern-type-name":"NATSUserPasswordAuth","uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.1.auth","typeLabel":"NATSUserPasswordAuth · object"}},"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.1","typeLabel":"NATSOutputConfig · object"},{"type":"object","title":"CoreNATSOutputConfig","description":"Describes the configuration for the output Core NATS worker","required":["type","nats_url","root_subject"],"x-fern-type-name":"CoreNATSOutputConfig","properties":{"type":{"description":"+value=core-nats","type":"string","enum":["core-nats"],"default":"core-nats","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.2.type","typeLabel":"enum\u003cstring>"},"nats_url":{"description":"Output NATS URL","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.2.nats_url","typeLabel":"string"},"root_subject":{"description":"Root subject of output NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-.]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.2.root_subject","typeLabel":"string"},"auth":{"description":"NATS User Password Authentication","type":"object","required":["account_name","user","password"],"properties":{"account_name":{"description":"Name of the NATS account","type":"string","default":"$G","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.2.auth.account_name","typeLabel":"string"},"user":{"description":"User for NATS authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.2.auth.user","typeLabel":"string"},"password":{"description":"Password for NATS authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.2.auth.password","typeLabel":"string"}},"title":"NATSUserPasswordAuth","x-fern-type-name":"NATSUserPasswordAuth","uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.2.auth","typeLabel":"NATSUserPasswordAuth · object"}},"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.2","typeLabel":"CoreNATSOutputConfig · object"},{"type":"object","title":"KafkaOutputConfig","description":"Describes the configuration for the output Kafka worker","required":["type","bootstrap_servers","topic_name","tls"],"x-fern-type-name":"KafkaOutputConfig","properties":{"type":{"description":"+value=kafka","type":"string","enum":["kafka"],"default":"kafka","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.3.type","typeLabel":"enum\u003cstring>"},"bootstrap_servers":{"description":"'Kafka Bootstrap servers - Comma separated list of Kafka brokers \"hostname:port\" to connect to for bootstrap'","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.3.bootstrap_servers","typeLabel":"string"},"topic_name":{"description":"Kafka topic to publish to","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.3.topic_name","typeLabel":"string"},"tls":{"description":"TLS configuration for SASL authentication","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.3.tls","typeLabel":"boolean"},"auth":{"type":"object","required":["username","password"],"properties":{"username":{"description":"Username for SASL authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.3.auth.username","typeLabel":"string"},"password":{"description":"Password for SASL authentication","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.3.auth.password","typeLabel":"string"}},"title":"KafkaSASLAuth","x-fern-type-name":"KafkaSASLAuth","uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.3.auth","typeLabel":"KafkaSASLAuth · object"}},"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.3","typeLabel":"KafkaOutputConfig · object"},{"type":"object","title":"AMQPOutputConfig","description":"Describes the configuration for the output AMQP worker","required":["type","url","routing_key"],"x-fern-type-name":"AMQPOutputConfig","properties":{"type":{"description":"+value=amqp","type":"string","enum":["amqp"],"default":"amqp","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.4.type","typeLabel":"enum\u003cstring>"},"url":{"description":"AMQP Queue URL of Publisher","type":"string","pattern":"^(amqp|amqps?)://(?:[^:@]+(?::[^:@]+)?@)?([^/?]+)(?:/([^?]+))?/?([^?]+)?(?:\\?(.*))?$","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.4.url","typeLabel":"string"},"routing_key":{"description":"AMQP Routing Key to publish to.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.4.routing_key","typeLabel":"string"},"exchange_name":{"description":"AMQP Exchange Name","type":"string","uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.4.exchange_name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.75.worker_config.output_config.oneOf.4","typeLabel":"AMQPOutputConfig · object"}],"uniqueKey":"manifest.oneOf.75.worker_config.output_config","typeLabel":"SQSOutputConfig · object | NATSOutputConfig · object | CoreNATSOutputConfig · object | KafkaOutputConfig · object | AMQPOutputConfig · object"}},"title":"WorkerConfig","x-fern-type-name":"WorkerConfig","isRequired":true,"uniqueKey":"manifest.oneOf.75.worker_config","typeLabel":"WorkerConfig · object"},"artifacts_download":{"description":"Download and cache models in a volume to enhance loading speeds and reduce costs by avoiding repeated downloads. [Docs](https://docs.truefoundry.com/docs/download-and-cache-models)","type":"object","required":["artifacts"],"properties":{"artifacts":{"description":"List of artifacts to be cached","type":"array","items":{"oneOf":[{"type":"object","title":"TrueFoundryArtifactSource","description":"Input for Artifact from TrueFoundry Artifact Registry","required":["type","artifact_version_fqn","download_path_env_variable"],"x-fern-type-name":"TrueFoundryArtifactSource","properties":{"type":{"description":"+value=truefoundry-artifact","type":"string","enum":["truefoundry-artifact"],"default":"truefoundry-artifact","isRequired":true,"uniqueKey":"manifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"artifact_version_fqn":{"description":"Artifact or Model Version FQN of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.0.artifact_version_fqn","typeLabel":"string"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.0.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.0","typeLabel":"TrueFoundryArtifactSource · object"},{"type":"object","title":"HuggingfaceArtifactSource","description":"Input for Artifact from Huggingface Model Hub","required":["type","model_id","revision","ignore_patterns","download_path_env_variable"],"x-fern-type-name":"HuggingfaceArtifactSource","properties":{"type":{"description":"+value=huggingface-hub","type":"string","enum":["huggingface-hub"],"default":"huggingface-hub","isRequired":true,"uniqueKey":"manifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"model_id":{"description":"Model ID of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.1.model_id","typeLabel":"string"},"revision":{"description":"Revision of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.1.revision","typeLabel":"string"},"ignore_patterns":{"description":"List of patterns to ignore while downloading the artifact","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns.items.[INDEX]","typeLabel":"string"},"default":["*.h5","*.ot","*.tflite","*.msgpack"],"isRequired":true,"uniqueKey":"manifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns","typeLabel":"string[]"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.1.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.1","typeLabel":"HuggingfaceArtifactSource · object"}],"uniqueKey":"manifest.oneOf.75.artifacts_download.artifacts.items.[INDEX]","typeLabel":"TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.75.artifacts_download.artifacts","typeLabel":"(TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object)[]"},"cache_volume":{"description":"Describes the volume that will be used to cache the models","type":"object","required":["storage_class","cache_size"],"properties":{"storage_class":{"description":"Storage class of the Volume where artifacts will be cached","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.artifacts_download.cache_volume.storage_class","typeLabel":"string"},"cache_size":{"description":"Size of the Volume (in GB) where artifacts will be cached. Should be greater than twice the size of artifacts getting cached","type":"integer","minimum":1,"maximum":10000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.75.artifacts_download.cache_volume.cache_size","typeLabel":"integer"}},"title":"ArtifactsCacheVolume","x-fern-type-name":"ArtifactsCacheVolume","uniqueKey":"manifest.oneOf.75.artifacts_download.cache_volume","typeLabel":"ArtifactsCacheVolume · object"}},"title":"ArtifactsDownload","x-fern-type-name":"ArtifactsDownload","uniqueKey":"manifest.oneOf.75.artifacts_download","typeLabel":"ArtifactsDownload · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"manifest.oneOf.75.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.75.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.75.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"manifest.oneOf.75.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.75.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.75.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.75.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.75.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"manifest.oneOf.75.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"manifest.oneOf.75.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"manifest.oneOf.75.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"manifest.oneOf.75.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.75.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.75.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.75.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.75.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.75.env","typeLabel":"object | null"},"service_account":{"type":"string","uniqueKey":"manifest.oneOf.75.service_account","typeLabel":"string"},"mounts":{"description":"Configure data to be mounted to service pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-service)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"manifest.oneOf.75.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.75.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"manifest.oneOf.75.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.75.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.75.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.75.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"manifest.oneOf.75.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.75.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"manifest.oneOf.75.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"manifest.oneOf.75.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.75.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"manifest.oneOf.75.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"manifest.oneOf.75.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"labels":{"description":"Labels","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.75.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.75.labels","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"manifest.oneOf.75.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"manifest.oneOf.75.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"manifest.oneOf.75.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"manifest.oneOf.75.kustomize","typeLabel":"Kustomize · object"},"liveness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"manifest.oneOf.75.liveness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.liveness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"manifest.oneOf.75.liveness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"manifest.oneOf.75.liveness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"manifest.oneOf.75.liveness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"manifest.oneOf.75.liveness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"manifest.oneOf.75.liveness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"manifest.oneOf.75.liveness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"manifest.oneOf.75.liveness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"manifest.oneOf.75.liveness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"manifest.oneOf.75.liveness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"manifest.oneOf.75.liveness_probe","typeLabel":"HealthProbe · object"},"readiness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"manifest.oneOf.75.readiness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.readiness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"manifest.oneOf.75.readiness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"manifest.oneOf.75.readiness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"manifest.oneOf.75.readiness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"manifest.oneOf.75.readiness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"manifest.oneOf.75.readiness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"manifest.oneOf.75.readiness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"manifest.oneOf.75.readiness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"manifest.oneOf.75.readiness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"manifest.oneOf.75.readiness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"manifest.oneOf.75.readiness_probe","typeLabel":"HealthProbe · object"},"startup_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"manifest.oneOf.75.startup_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.startup_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"manifest.oneOf.75.startup_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"manifest.oneOf.75.startup_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"manifest.oneOf.75.startup_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"manifest.oneOf.75.startup_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"manifest.oneOf.75.startup_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"manifest.oneOf.75.startup_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"manifest.oneOf.75.startup_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"manifest.oneOf.75.startup_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"manifest.oneOf.75.startup_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"manifest.oneOf.75.startup_probe","typeLabel":"HealthProbe · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"manifest.oneOf.75.workspace_fqn","typeLabel":"string"},"rollout_strategy":{"description":"This strategy updates the pods in a rolling fashion such that a subset of the\ntotal pods are replaced with new version at one time.\nA commonly used strategy can be to have maxUnavailablePercentage close to 0 so that there\nis no downtime and keep the maxSurgePercentage to around 25%. If you are anyways running\na large number of pods, the service can often tolerate a few pods going down - so you\nmax maxUnavailablePercentage = 10 and maxSurgePercentage=0. You can read about it more\n[here](https://spot.io/resources/kubernetes-autoscaling/5-kubernetes-deployment-strategies-roll-out-like-the-pros/)","type":"object","required":["type","max_unavailable_percentage","max_surge_percentage"],"properties":{"type":{"description":"+value=rolling_update","type":"string","enum":["rolling_update"],"default":"rolling_update","isRequired":true,"uniqueKey":"manifest.oneOf.75.rollout_strategy.type","typeLabel":"enum\u003cstring>"},"max_unavailable_percentage":{"description":"Percentage of total replicas that can be brought down at one time.\nFor a value of 25 when replicas are set to 12 this would mean minimum (25% of 12) = 3 pods might be unavailable during the deployment.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"manifest.oneOf.75.rollout_strategy.max_unavailable_percentage","typeLabel":"integer"},"max_surge_percentage":{"description":"Percentage of total replicas of updated image that can be brought up over the total replicas count.\nFor a value of 25 when replicas are set to 12 this would mean (12+(25% of 12) = 15) pods might be running at one time.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"manifest.oneOf.75.rollout_strategy.max_surge_percentage","typeLabel":"integer"}},"title":"Rolling","x-fern-type-name":"Rolling","uniqueKey":"manifest.oneOf.75.rollout_strategy","typeLabel":"Rolling · object"},"sidecar":{"type":"object","required":["destination_url"],"properties":{"destination_url":{"description":"URL for the processor to invoke","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.75.sidecar.destination_url","typeLabel":"string"},"request_timeout":{"description":"Timeout for the invoke request in seconds","type":"integer","minimum":1,"default":10,"uniqueKey":"manifest.oneOf.75.sidecar.request_timeout","typeLabel":"integer"},"sidecar_image":{"description":"Image for the processor sidecar (This field will be deprecated in the future)","type":"string","uniqueKey":"manifest.oneOf.75.sidecar.sidecar_image","typeLabel":"string"}},"title":"AsyncProcessorSidecar","x-fern-type-name":"AsyncProcessorSidecar","uniqueKey":"manifest.oneOf.75.sidecar","typeLabel":"AsyncProcessorSidecar · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.75","typeLabel":"AsyncService · object"},{"type":"object","title":"SSHServer","description":"Manifest of the resource to be created or updated","required":["type","image","ssh_public_key","name","home_directory_size"],"x-fern-type-name":"SSHServer","properties":{"name":{"description":"Name of the workbench. This uniquely identifies this workbench in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.76.name","typeLabel":"string"},"home_directory_size":{"description":"Size of the home directory for the workbench (Persistent Storage)","type":"integer","minimum":5,"maximum":64000,"default":20,"isRequired":true,"uniqueKey":"manifest.oneOf.76.home_directory_size","typeLabel":"integer"},"type":{"description":"+value=ssh-server","type":"string","enum":["ssh-server"],"default":"ssh-server","isRequired":true,"uniqueKey":"manifest.oneOf.76.type","typeLabel":"enum\u003cstring>"},"image":{"description":"Workbench Image with persistent environment (Python 3.11.6)","type":"object","required":["image_uri"],"properties":{"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.76.image.image_uri","typeLabel":"string"},"build_script":{"description":"The build script to run when building the image.\nThis will be executed as the last step in the docker build process as the root user (RUN DEBIAN_FRONTEND=noninteractive bash -ex build_script.sh)","type":"string","minLength":1,"maxLength":5120,"uniqueKey":"manifest.oneOf.76.image.build_script","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","uniqueKey":"manifest.oneOf.76.image.docker_registry","typeLabel":"string"}},"title":"WorkbenchImage","x-fern-type-name":"WorkbenchImage","isRequired":true,"uniqueKey":"manifest.oneOf.76.image","typeLabel":"WorkbenchImage · object"},"ssh_public_key":{"description":"Add Your SSH Public Key, this will be used to authenticate you to the SSH Server. \\\nYou can find it using `cat ~/.ssh/id_rsa.pub` in Mac/Linux or `type $home\\.ssh\\id_rsa.pub` in Windows Powershell. \\\nYou can also generate a new SSH key pair using `ssh-keygen -t rsa` in your local terminal. (same for both Mac/Linux and Windows Powershell)","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.76.ssh_public_key","typeLabel":"string"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"manifest.oneOf.76.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.76.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.76.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"manifest.oneOf.76.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.76.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.76.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.76.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.76.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"manifest.oneOf.76.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"manifest.oneOf.76.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"manifest.oneOf.76.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"manifest.oneOf.76.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.76.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.76.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.76.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.76.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.76.env","typeLabel":"object | null"},"mounts":{"description":"Configure data to be mounted to workbench pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"manifest.oneOf.76.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.76.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"manifest.oneOf.76.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.76.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"manifest.oneOf.76.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.76.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.76.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.76.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"manifest.oneOf.76.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.76.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"manifest.oneOf.76.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"manifest.oneOf.76.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.76.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"manifest.oneOf.76.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"manifest.oneOf.76.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"service_account":{"description":"+sort=10113","type":"string","uniqueKey":"manifest.oneOf.76.service_account","typeLabel":"string"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"manifest.oneOf.76.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"manifest.oneOf.76.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"manifest.oneOf.76.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"manifest.oneOf.76.kustomize","typeLabel":"Kustomize · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"manifest.oneOf.76.workspace_fqn","typeLabel":"string"},"cull_timeout":{"description":"Stop the SSH Server instance after this much time in minutes of inactivity. The instance is considered active if there is at least one active SSH connection (a client connected to the SSH server), or if a background job is running using tmux or screen, or if the pod has restarted.","type":"integer","minimum":5,"uniqueKey":"manifest.oneOf.76.cull_timeout","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.76","typeLabel":"SSHServer · object"},{"type":"object","title":"SparkJob","description":"Manifest of the resource to be created or updated","required":["type","name","image","entrypoint","driver_config","executor_config"],"x-fern-type-name":"SparkJob","properties":{"type":{"description":"+value=spark-job\n+sort=1","type":"string","enum":["spark-job"],"default":"spark-job","isRequired":true,"uniqueKey":"manifest.oneOf.77.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the job","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.77.name","typeLabel":"string"},"image":{"oneOf":[{"type":"object","title":"SparkImage","description":"Describes that we are using a pre-built image stored in a Docker Image registry","required":["type","spark_version","image_uri"],"x-fern-type-name":"SparkImage","properties":{"type":{"description":"+value=spark-image","type":"string","enum":["spark-image"],"default":"spark-image","isRequired":true,"uniqueKey":"manifest.oneOf.77.image.oneOf.0.type","typeLabel":"enum\u003cstring>"},"spark_version":{"description":"Spark version should match the spark version installed in the image.","type":"string","default":"3.5.2","isRequired":true,"uniqueKey":"manifest.oneOf.77.image.oneOf.0.spark_version","typeLabel":"string"},"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.77.image.oneOf.0.image_uri","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.77.image.oneOf.0.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.77.image.oneOf.0","typeLabel":"SparkImage · object"},{"type":"object","title":"SparkImageBuild","description":"Describes that we are building a new image based on the spec","required":["type","build_source","build_spec"],"x-fern-type-name":"SparkImageBuild","properties":{"type":{"description":"+value=spark-image-build","type":"string","enum":["spark-image-build"],"default":"spark-image-build","isRequired":true,"uniqueKey":"manifest.oneOf.77.image.oneOf.1.type","typeLabel":"enum\u003cstring>"},"build_source":{"oneOf":[{"type":"object","title":"GitSource","description":"Describes that we are using code stored in a git repository to build our image","required":["type","repo_url","ref"],"x-fern-type-name":"GitSource","properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"manifest.oneOf.77.image.oneOf.1.build_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"The repository URL.","type":"string","pattern":"^(https?://)\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.77.image.oneOf.1.build_source.oneOf.0.repo_url","typeLabel":"string"},"ref":{"description":"The commit SHA.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.77.image.oneOf.1.build_source.oneOf.0.ref","typeLabel":"string"},"branch_name":{"description":"Selecting branch will select latest commit SHA of the branch.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.77.image.oneOf.1.build_source.oneOf.0.branch_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.77.image.oneOf.1.build_source.oneOf.0","typeLabel":"GitSource · object"},{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"manifest.oneOf.77.image.oneOf.1.build_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.77.image.oneOf.1.build_source.oneOf.1.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.77.image.oneOf.1.build_source.oneOf.1","typeLabel":"RemoteSource · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.77.image.oneOf.1.build_source","typeLabel":"GitSource · object | RemoteSource · object"},"build_spec":{"description":"Describes that we are using python to build a container image with a specific python version and pip packages installed.","type":"object","required":["type","spark_version","build_context_path"],"properties":{"type":{"description":"+value=tfy-spark-buildpack","type":"string","enum":["tfy-spark-buildpack"],"default":"tfy-spark-buildpack","isRequired":true,"uniqueKey":"manifest.oneOf.77.image.oneOf.1.build_spec.type","typeLabel":"enum\u003cstring>"},"spark_version":{"description":"Spark version should match the spark version installed in the image.","type":"string","default":"3.5.2","isRequired":true,"uniqueKey":"manifest.oneOf.77.image.oneOf.1.build_spec.spark_version","typeLabel":"string"},"build_context_path":{"description":"Build path relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"manifest.oneOf.77.image.oneOf.1.build_spec.build_context_path","typeLabel":"string"},"requirements_path":{"description":"Path to `requirements.txt` relative to\n`Path to build context`","type":"string","uniqueKey":"manifest.oneOf.77.image.oneOf.1.build_spec.requirements_path","typeLabel":"string"}},"title":"SparkBuild","x-fern-type-name":"SparkBuild","isRequired":true,"uniqueKey":"manifest.oneOf.77.image.oneOf.1.build_spec","typeLabel":"SparkBuild · object"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.77.image.oneOf.1.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.77.image.oneOf.1","typeLabel":"SparkImageBuild · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.77.image","typeLabel":"SparkImage · object | SparkImageBuild · object"},"entrypoint":{"oneOf":[{"type":"object","title":"SparkJobPythonEntrypoint","description":"python","required":["type","main_application_file"],"x-fern-type-name":"SparkJobPythonEntrypoint","properties":{"type":{"description":"+value=python","type":"string","enum":["python"],"default":"python","isRequired":true,"uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.0.type","typeLabel":"enum\u003cstring>"},"main_application_file":{"description":"The main application file to be executed by the spark job. Relative path in case of git repository.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.0.main_application_file","typeLabel":"string"},"arguments":{"description":"Arguments to be passed to the main application file.","type":"string","uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.0.arguments","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.0","typeLabel":"SparkJobPythonEntrypoint · object"},{"type":"object","title":"SparkJobScalaEntrypoint","description":"scala","required":["type","main_application_file","main_class"],"x-fern-type-name":"SparkJobScalaEntrypoint","properties":{"type":{"description":"+value=scala","type":"string","enum":["scala"],"default":"scala","isRequired":true,"uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.1.type","typeLabel":"enum\u003cstring>"},"main_application_file":{"description":"The main application file to be executed by the spark job.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.1.main_application_file","typeLabel":"string"},"main_class":{"description":"The main class to be executed by the spark job.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.1.main_class","typeLabel":"string"},"arguments":{"description":"Arguments to be passed to the main application file.","type":"string","uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.1.arguments","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.1","typeLabel":"SparkJobScalaEntrypoint · object"},{"type":"object","title":"SparkJobJavaEntrypoint","description":"java","required":["type","main_application_file","main_class"],"x-fern-type-name":"SparkJobJavaEntrypoint","properties":{"type":{"description":"+value=java","type":"string","enum":["java"],"default":"java","isRequired":true,"uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.2.type","typeLabel":"enum\u003cstring>"},"main_application_file":{"description":"The main application file to be executed by the spark job.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.2.main_application_file","typeLabel":"string"},"main_class":{"description":"The main class to be executed by the spark job.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.2.main_class","typeLabel":"string"},"arguments":{"description":"Arguments to be passed to the main application file.","type":"string","uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.2.arguments","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.2","typeLabel":"SparkJobJavaEntrypoint · object"},{"type":"object","title":"SparkJobPythonNotebookEntrypoint","description":"python notebook","required":["type","main_application_file"],"x-fern-type-name":"SparkJobPythonNotebookEntrypoint","properties":{"type":{"description":"+value=python-notebook","type":"string","enum":["python-notebook"],"default":"python-notebook","isRequired":true,"uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.3.type","typeLabel":"enum\u003cstring>"},"main_application_file":{"description":"The main application file to be executed by the spark job. Relative path in case of git repository.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.3.main_application_file","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.3","typeLabel":"SparkJobPythonNotebookEntrypoint · object"},{"type":"object","title":"SparkJobScalaNotebookEntrypoint","description":"scala notebook","required":["type","main_application_file"],"x-fern-type-name":"SparkJobScalaNotebookEntrypoint","properties":{"type":{"description":"+value=scala-notebook","type":"string","enum":["scala-notebook"],"default":"scala-notebook","isRequired":true,"uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.4.type","typeLabel":"enum\u003cstring>"},"main_application_file":{"description":"The main application file to be executed by the spark job. Relative path in case of git repository.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.4.main_application_file","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.77.entrypoint.oneOf.4","typeLabel":"SparkJobScalaNotebookEntrypoint · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.77.entrypoint","typeLabel":"SparkJobPythonEntrypoint · object | SparkJobScalaEntrypoint · object | SparkJobJavaEntrypoint · object | SparkJobPythonNotebookEntrypoint · object | SparkJobScalaNotebookEntrypoint · object"},"driver_config":{"type":"object","title":"SparkJobDriverConfig","description":"Driver Config","x-fern-type-name":"SparkJobDriverConfig","properties":{"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"manifest.oneOf.77.driver_config.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.77.driver_config.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.77.driver_config.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"manifest.oneOf.77.driver_config.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.77.driver_config.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.77.driver_config.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.77.driver_config.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.77.driver_config.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"manifest.oneOf.77.driver_config.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"manifest.oneOf.77.driver_config.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"manifest.oneOf.77.driver_config.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"manifest.oneOf.77.driver_config.resources","typeLabel":"Resources · object"},"kustomize":{"description":"Patch driver pod spec fields like tolerations, nodeSelector, affinity, etc.","type":"object","uniqueKey":"manifest.oneOf.77.driver_config.kustomize","typeLabel":"object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.77.driver_config","typeLabel":"SparkJobDriverConfig · object"},"executor_config":{"type":"object","title":"SparkJobExecutorConfig","description":"Executor Config","required":["instances"],"x-fern-type-name":"SparkJobExecutorConfig","properties":{"instances":{"oneOf":[{"type":"object","title":"SparkExecutorFixedInstances","description":"Fixed Instances","default":{"type":"fixed","count":1},"required":["type","count"],"x-fern-type-name":"SparkExecutorFixedInstances","properties":{"type":{"description":"+value=fixed","type":"string","enum":["fixed"],"default":"fixed","isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.instances.oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Number of instances to start","type":"integer","minimum":0,"maximum":500,"default":1,"isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.instances.oneOf.0.count","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.instances.oneOf.0","typeLabel":"SparkExecutorFixedInstances · object"},{"type":"object","title":"SparkExecutorDynamicScaling","description":"Dynamic Scaling","default":{"type":"fixed","count":1},"required":["type","min","max"],"x-fern-type-name":"SparkExecutorDynamicScaling","properties":{"type":{"description":"+value=dynamic","type":"string","enum":["dynamic"],"default":"dynamic","isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.instances.oneOf.1.type","typeLabel":"enum\u003cstring>"},"min":{"description":"Minimum number of instances to start / scale down to","type":"integer","minimum":0,"maximum":500,"default":1,"isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.instances.oneOf.1.min","typeLabel":"integer"},"max":{"description":"Maximum number of instances to scale up to","type":"integer","minimum":0,"maximum":500,"default":1,"isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.instances.oneOf.1.max","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.instances.oneOf.1","typeLabel":"SparkExecutorDynamicScaling · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.instances","typeLabel":"SparkExecutorFixedInstances · object | SparkExecutorDynamicScaling · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"manifest.oneOf.77.executor_config.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.77.executor_config.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.77.executor_config.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"manifest.oneOf.77.executor_config.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.77.executor_config.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.77.executor_config.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.77.executor_config.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.77.executor_config.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"manifest.oneOf.77.executor_config.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"manifest.oneOf.77.executor_config.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"manifest.oneOf.77.executor_config.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"manifest.oneOf.77.executor_config.resources","typeLabel":"Resources · object"},"kustomize":{"description":"Patch executor pod spec fields like tolerations, nodeSelector, affinity, etc.","type":"object","uniqueKey":"manifest.oneOf.77.executor_config.kustomize","typeLabel":"object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.77.executor_config","typeLabel":"SparkJobExecutorConfig · object"},"trigger":{"oneOf":[{"type":"object","title":"Manual","description":"Trigger the job manually. [Docs](https://docs.truefoundry.com/docs/deploy-a-cron-job)","default":{"type":"manual"},"required":["type"],"x-fern-type-name":"Manual","properties":{"type":{"description":"+value=manual","type":"string","enum":["manual"],"default":"manual","isRequired":true,"uniqueKey":"manifest.oneOf.77.trigger.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.77.trigger.oneOf.0","typeLabel":"Manual · object"},{"type":"object","title":"Schedule","description":"Run the job on a schedule. [Docs](https://docs.truefoundry.com/docs/deploy-a-cron-job)","default":{"type":"manual"},"required":["type","schedule","concurrency_policy"],"x-fern-type-name":"Schedule","properties":{"type":{"description":"+value=scheduled","type":"string","enum":["scheduled"],"default":"scheduled","isRequired":true,"uniqueKey":"manifest.oneOf.77.trigger.oneOf.1.type","typeLabel":"enum\u003cstring>"},"schedule":{"description":"Specify the schedule for this job to be run periodically in cron format.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.77.trigger.oneOf.1.schedule","typeLabel":"string"},"concurrency_policy":{"description":"Choose whether to allow this job to run while another instance of the job is running, or to replace the currently running instance. Allow\nwill enable multiple instances of this job to run. Forbid will keep the current instance of the job running and stop a new instance from being run.\nReplace will terminate any currently running instance of the job and start a new one.","type":"string","enum":["Forbid","Allow","Replace"],"default":"Forbid","isRequired":true,"uniqueKey":"manifest.oneOf.77.trigger.oneOf.1.concurrency_policy","typeLabel":"enum\u003cstring>"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","uniqueKey":"manifest.oneOf.77.trigger.oneOf.1.timezone","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.77.trigger.oneOf.1","typeLabel":"Schedule · object"}],"uniqueKey":"manifest.oneOf.77.trigger","typeLabel":"Manual · object | Schedule · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"uniqueKey":"manifest.oneOf.77.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"uniqueKey":"manifest.oneOf.77.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.77.env","typeLabel":"object | null"},"spark_conf":{"oneOf":[{"description":"Extra configuration properties to be passed to the spark job. [Docs](https://spark.apache.org/docs/latest/configuration.html)","type":"object","default":null,"additionalProperties":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.77.spark_conf.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.77.spark_conf.oneOf.0","typeLabel":"object"},{"description":"Extra configuration properties to be passed to the spark job. [Docs](https://spark.apache.org/docs/latest/configuration.html)","type":"null","default":null,"additionalProperties":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.77.spark_conf.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.77.spark_conf.oneOf.1","typeLabel":"null"}],"uniqueKey":"manifest.oneOf.77.spark_conf","typeLabel":"object | null"},"mounts":{"description":"Configure volumes to be mounted to driver and executors. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"type":"object","required":["type","mount_path","volume_fqn"],"properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"manifest.oneOf.77.mounts.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"manifest.oneOf.77.mounts.items.[INDEX].mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"manifest.oneOf.77.mounts.items.[INDEX].volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"manifest.oneOf.77.mounts.items.[INDEX].sub_path","typeLabel":"string"}},"title":"VolumeMount","x-fern-type-name":"VolumeMount","uniqueKey":"manifest.oneOf.77.mounts.items.[INDEX]","typeLabel":"VolumeMount · object"},"uniqueKey":"manifest.oneOf.77.mounts","typeLabel":"VolumeMount · object[]"},"retries":{"description":"Specify the maximum number of attempts to retry a job before it is marked as failed.","type":"integer","minimum":0,"maximum":10,"default":0,"uniqueKey":"manifest.oneOf.77.retries","typeLabel":"integer"},"service_account":{"description":"Service Account","type":"string","uniqueKey":"manifest.oneOf.77.service_account","typeLabel":"string"},"alerts":{"description":"Configure alerts to be sent when the spark job starts/fails/completes","type":"array","items":{"description":"Describes the configuration for the job alerts","type":"object","properties":{"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].to_emails.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].to_emails","typeLabel":"string[]"},"notification_target":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBot","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.2.channels","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.2","typeLabel":"SlackBot · object"},{"type":"object","title":"PagerDuty","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.3","typeLabel":"PagerDuty · object"}],"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].notification_target","typeLabel":"Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object"},"on_start":{"description":"Send an alert when the job starts","type":"boolean","default":false,"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].on_start","typeLabel":"boolean"},"on_completion":{"type":"boolean","default":false,"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].on_completion","typeLabel":"boolean"},"on_failure":{"description":"Send an alert when the job fails","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX].on_failure","typeLabel":"boolean"}},"title":"JobAlert","x-fern-type-name":"JobAlert","uniqueKey":"manifest.oneOf.77.alerts.items.[INDEX]","typeLabel":"JobAlert · object"},"uniqueKey":"manifest.oneOf.77.alerts","typeLabel":"JobAlert · object[]"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"manifest.oneOf.77.workspace_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.77","typeLabel":"SparkJob · object"},{"type":"object","title":"TenantModelRateLimitConfig","description":"Manifest of the resource to be created or updated","required":["type","name","limits","applies_to","mode","log_request_body_on_block"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=tenant-rate-limit-config/model\n+sort=1","type":"string","enum":["tenant-rate-limit-config/model"],"default":"tenant-rate-limit-config/model","isRequired":true,"uniqueKey":"manifest.oneOf.78.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique name for this rate limit","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.78.name","typeLabel":"string"},"limits":{"type":"object","properties":{"requests_per_minute":{"description":"Maximum number of requests per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.limits.requests_per_minute","typeLabel":"integer"},"requests_per_hour":{"description":"Maximum number of requests per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.limits.requests_per_hour","typeLabel":"integer"},"requests_per_day":{"description":"Maximum number of requests per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.limits.requests_per_day","typeLabel":"integer"},"tokens_per_minute":{"description":"Maximum number of tokens (input + output) per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.limits.tokens_per_minute","typeLabel":"integer"},"tokens_per_hour":{"description":"Maximum number of tokens (input + output) per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.limits.tokens_per_hour","typeLabel":"integer"},"tokens_per_day":{"description":"Maximum number of tokens (input + output) per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.limits.tokens_per_day","typeLabel":"integer"}},"title":"RateLimitV2ModelLimits","x-fern-type-name":"RateLimitV2ModelLimits","isRequired":true,"uniqueKey":"manifest.oneOf.78.limits","typeLabel":"RateLimitV2ModelLimits · object"},"applies_to":{"oneOf":[{"type":"object","title":"RateLimitV2ModelAppliesToAggregate","required":["type"],"x-fern-type-name":"RateLimitV2ModelAppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["aggregate"],"default":"aggregate","isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.0","typeLabel":"RateLimitV2ModelAppliesToAggregate · object"},{"type":"object","title":"RateLimitV2ModelAppliesToPerUser","required":["type"],"x-fern-type-name":"RateLimitV2ModelAppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-user"],"default":"per-user","isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.1.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-user limit overrides","type":"array","items":{"type":"object","required":["users","limits"],"properties":{"users":{"description":"Users whose traffic uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX].users.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX].users","typeLabel":"string[]"},"limits":{"type":"object","properties":{"requests_per_minute":{"description":"Override requests per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX].limits.requests_per_minute","typeLabel":"integer"},"requests_per_hour":{"description":"Override requests per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX].limits.requests_per_hour","typeLabel":"integer"},"requests_per_day":{"description":"Override requests per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX].limits.requests_per_day","typeLabel":"integer"},"tokens_per_minute":{"description":"Override tokens per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX].limits.tokens_per_minute","typeLabel":"integer"},"tokens_per_hour":{"description":"Override tokens per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX].limits.tokens_per_hour","typeLabel":"integer"},"tokens_per_day":{"description":"Override tokens per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX].limits.tokens_per_day","typeLabel":"integer"}},"title":"RateLimitV2ModelOverrideLimits","x-fern-type-name":"RateLimitV2ModelOverrideLimits","isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX].limits","typeLabel":"RateLimitV2ModelOverrideLimits · object"}},"title":"RateLimitV2ModelPerUserOverride","x-fern-type-name":"RateLimitV2ModelPerUserOverride","uniqueKey":"manifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX]","typeLabel":"RateLimitV2ModelPerUserOverride · object"},"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.1.overrides","typeLabel":"RateLimitV2ModelPerUserOverride · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.1","typeLabel":"RateLimitV2ModelAppliesToPerUser · object"},{"type":"object","title":"RateLimitV2ModelAppliesToPerModel","required":["type"],"x-fern-type-name":"RateLimitV2ModelAppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-model"],"default":"per-model","isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.2.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-model limit overrides","type":"array","items":{"type":"object","required":["models","limits"],"properties":{"models":{"description":"Models whose traffic uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX].models.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX].models","typeLabel":"string[]"},"limits":{"type":"object","properties":{"requests_per_minute":{"description":"Override requests per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX].limits.requests_per_minute","typeLabel":"integer"},"requests_per_hour":{"description":"Override requests per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX].limits.requests_per_hour","typeLabel":"integer"},"requests_per_day":{"description":"Override requests per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX].limits.requests_per_day","typeLabel":"integer"},"tokens_per_minute":{"description":"Override tokens per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX].limits.tokens_per_minute","typeLabel":"integer"},"tokens_per_hour":{"description":"Override tokens per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX].limits.tokens_per_hour","typeLabel":"integer"},"tokens_per_day":{"description":"Override tokens per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX].limits.tokens_per_day","typeLabel":"integer"}},"title":"RateLimitV2ModelOverrideLimits","x-fern-type-name":"RateLimitV2ModelOverrideLimits","isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX].limits","typeLabel":"RateLimitV2ModelOverrideLimits · object"}},"title":"RateLimitV2ModelPerModelOverride","x-fern-type-name":"RateLimitV2ModelPerModelOverride","uniqueKey":"manifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX]","typeLabel":"RateLimitV2ModelPerModelOverride · object"},"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.2.overrides","typeLabel":"RateLimitV2ModelPerModelOverride · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.2","typeLabel":"RateLimitV2ModelAppliesToPerModel · object"},{"type":"object","title":"RateLimitV2ModelAppliesToPerVirtualAccount","required":["type"],"x-fern-type-name":"RateLimitV2ModelAppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-virtual-account"],"default":"per-virtual-account","isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.3.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-virtual-account limit overrides","type":"array","items":{"type":"object","required":["virtual_accounts","limits"],"properties":{"virtual_accounts":{"description":"Virtual accounts whose traffic uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts","typeLabel":"string[]"},"limits":{"type":"object","properties":{"requests_per_minute":{"description":"Override requests per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX].limits.requests_per_minute","typeLabel":"integer"},"requests_per_hour":{"description":"Override requests per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX].limits.requests_per_hour","typeLabel":"integer"},"requests_per_day":{"description":"Override requests per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX].limits.requests_per_day","typeLabel":"integer"},"tokens_per_minute":{"description":"Override tokens per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX].limits.tokens_per_minute","typeLabel":"integer"},"tokens_per_hour":{"description":"Override tokens per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX].limits.tokens_per_hour","typeLabel":"integer"},"tokens_per_day":{"description":"Override tokens per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX].limits.tokens_per_day","typeLabel":"integer"}},"title":"RateLimitV2ModelOverrideLimits","x-fern-type-name":"RateLimitV2ModelOverrideLimits","isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX].limits","typeLabel":"RateLimitV2ModelOverrideLimits · object"}},"title":"RateLimitV2ModelPerVirtualAccountOverride","x-fern-type-name":"RateLimitV2ModelPerVirtualAccountOverride","uniqueKey":"manifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX]","typeLabel":"RateLimitV2ModelPerVirtualAccountOverride · object"},"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.3.overrides","typeLabel":"RateLimitV2ModelPerVirtualAccountOverride · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.3","typeLabel":"RateLimitV2ModelAppliesToPerVirtualAccount · object"},{"type":"object","title":"RateLimitV2ModelAppliesToMetadata","required":["type","metadata"],"x-fern-type-name":"RateLimitV2ModelAppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["metadata"],"default":"metadata","isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.4.type","typeLabel":"enum\u003cstring>"},"metadata":{"description":"Metadata key whose distinct values each get their own limit bucket","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.4.metadata","typeLabel":"string"},"overrides":{"description":"Optional per-metadata-value limit overrides","type":"array","items":{"type":"object","required":["metadata_values","limits"],"properties":{"metadata_values":{"description":"Metadata values whose traffic uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX].metadata_values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX].metadata_values","typeLabel":"string[]"},"limits":{"type":"object","properties":{"requests_per_minute":{"description":"Override requests per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX].limits.requests_per_minute","typeLabel":"integer"},"requests_per_hour":{"description":"Override requests per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX].limits.requests_per_hour","typeLabel":"integer"},"requests_per_day":{"description":"Override requests per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX].limits.requests_per_day","typeLabel":"integer"},"tokens_per_minute":{"description":"Override tokens per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX].limits.tokens_per_minute","typeLabel":"integer"},"tokens_per_hour":{"description":"Override tokens per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX].limits.tokens_per_hour","typeLabel":"integer"},"tokens_per_day":{"description":"Override tokens per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX].limits.tokens_per_day","typeLabel":"integer"}},"title":"RateLimitV2ModelOverrideLimits","x-fern-type-name":"RateLimitV2ModelOverrideLimits","isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX].limits","typeLabel":"RateLimitV2ModelOverrideLimits · object"}},"title":"RateLimitV2ModelPerMetadataOverride","x-fern-type-name":"RateLimitV2ModelPerMetadataOverride","uniqueKey":"manifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX]","typeLabel":"RateLimitV2ModelPerMetadataOverride · object"},"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.4.overrides","typeLabel":"RateLimitV2ModelPerMetadataOverride · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to.oneOf.4","typeLabel":"RateLimitV2ModelAppliesToMetadata · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.78.applies_to","typeLabel":"RateLimitV2ModelAppliesToAggregate · object | RateLimitV2ModelAppliesToPerUser · object | RateLimitV2ModelAppliesToPerModel · object | RateLimitV2ModelAppliesToPerVirtualAccount · object | RateLimitV2ModelAppliesToMetadata · object"},"mode":{"description":"`enforce` blocks breaching requests, `audit` only tracks them, `soft_enforce` blocks only when no other matching rate limit allows the request.","type":"string","enum":["enforce","audit","soft_enforce"],"default":"enforce","isRequired":true,"uniqueKey":"manifest.oneOf.78.mode","typeLabel":"enum\u003cstring>"},"log_request_body_on_block":{"description":"When enabled, the request body is kept on the trace for requests this rate limit blocks, subject to the tenant logging configuration.","type":"boolean","default":false,"isRequired":true,"uniqueKey":"manifest.oneOf.78.log_request_body_on_block","typeLabel":"boolean"},"when":{"description":"virtual_models | virtual_provider_accounts cannot be combined with models | provider_accounts\n(enforced in GatewayConfigService).","type":"object","properties":{"subjects":{"type":"object","properties":{"users":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.when.subjects.users.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.78.when.subjects.users.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.when.subjects.users.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.78.when.subjects.users.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"manifest.oneOf.78.when.subjects.users","typeLabel":"RateLimitV2InNotInFilter · object"},"teams":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.when.subjects.teams.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.78.when.subjects.teams.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.when.subjects.teams.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.78.when.subjects.teams.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"manifest.oneOf.78.when.subjects.teams","typeLabel":"RateLimitV2InNotInFilter · object"},"virtual_accounts":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.when.subjects.virtual_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.78.when.subjects.virtual_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.when.subjects.virtual_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.78.when.subjects.virtual_accounts.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"manifest.oneOf.78.when.subjects.virtual_accounts","typeLabel":"RateLimitV2InNotInFilter · object"},"agents":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.when.subjects.agents.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.78.when.subjects.agents.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.when.subjects.agents.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.78.when.subjects.agents.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"manifest.oneOf.78.when.subjects.agents","typeLabel":"RateLimitV2InNotInFilter · object"}},"title":"RateLimitV2Subjects","x-fern-type-name":"RateLimitV2Subjects","uniqueKey":"manifest.oneOf.78.when.subjects","typeLabel":"RateLimitV2Subjects · object"},"models":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.when.models.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.78.when.models.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.when.models.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.78.when.models.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"manifest.oneOf.78.when.models","typeLabel":"RateLimitV2InNotInFilter · object"},"provider_accounts":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.when.provider_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.78.when.provider_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.when.provider_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.78.when.provider_accounts.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"manifest.oneOf.78.when.provider_accounts","typeLabel":"RateLimitV2InNotInFilter · object"},"virtual_models":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.when.virtual_models.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.78.when.virtual_models.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.when.virtual_models.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.78.when.virtual_models.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"manifest.oneOf.78.when.virtual_models","typeLabel":"RateLimitV2InNotInFilter · object"},"virtual_provider_accounts":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.when.virtual_provider_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.78.when.virtual_provider_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.when.virtual_provider_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.78.when.virtual_provider_accounts.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"manifest.oneOf.78.when.virtual_provider_accounts","typeLabel":"RateLimitV2InNotInFilter · object"},"metadata":{"description":"Filter by metadata key-value pairs this rate limit applies to","type":"object","additionalProperties":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.when.metadata.additionalProperties.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.78.when.metadata.additionalProperties.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.78.when.metadata.additionalProperties.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.78.when.metadata.additionalProperties.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"manifest.oneOf.78.when.metadata.additionalProperties","typeLabel":"RateLimitV2InNotInFilter · object"},"uniqueKey":"manifest.oneOf.78.when.metadata","typeLabel":"object"}},"title":"RateLimitV2ModelWhen","x-fern-type-name":"RateLimitV2ModelWhen","uniqueKey":"manifest.oneOf.78.when","typeLabel":"RateLimitV2ModelWhen · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.78","typeLabel":"TenantModelRateLimitConfig · object"},{"type":"object","title":"TenantMCPRateLimitConfig","description":"Manifest of the resource to be created or updated","required":["type","name","limits","applies_to","mode","log_request_body_on_block"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=tenant-rate-limit-config/mcp\n+sort=1","type":"string","enum":["tenant-rate-limit-config/mcp"],"default":"tenant-rate-limit-config/mcp","isRequired":true,"uniqueKey":"manifest.oneOf.79.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.79.name","typeLabel":"string"},"limits":{"description":"MCP Rate Limits","type":"object","properties":{"tool_calls_per_minute":{"description":"Tool Calls per Minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.79.limits.tool_calls_per_minute","typeLabel":"integer"},"tool_calls_per_hour":{"description":"Tool Calls per Hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.79.limits.tool_calls_per_hour","typeLabel":"integer"},"tool_calls_per_day":{"description":"Tool Calls per Day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.79.limits.tool_calls_per_day","typeLabel":"integer"}},"title":"RateLimitV2MCPLimits","x-fern-type-name":"RateLimitV2MCPLimits","isRequired":true,"uniqueKey":"manifest.oneOf.79.limits","typeLabel":"RateLimitV2MCPLimits · object"},"applies_to":{"oneOf":[{"type":"object","title":"RateLimitV2MCPAppliesToAggregate","description":"Aggregate","required":["type"],"x-fern-type-name":"RateLimitV2MCPAppliesTo","properties":{"type":{"description":"+value=aggregate","type":"string","enum":["aggregate"],"default":"aggregate","isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.0","typeLabel":"RateLimitV2MCPAppliesToAggregate · object"},{"type":"object","title":"RateLimitV2MCPAppliesToPerUser","description":"Per User","required":["type"],"x-fern-type-name":"RateLimitV2MCPAppliesTo","properties":{"type":{"description":"+value=per-user","type":"string","enum":["per-user"],"default":"per-user","isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.1.type","typeLabel":"enum\u003cstring>"},"overrides":{"type":"array","items":{"type":"object","required":["users","limits"],"properties":{"users":{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.79.applies_to.oneOf.1.overrides.items.[INDEX].users.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.1.overrides.items.[INDEX].users","typeLabel":"string[]"},"limits":{"description":"MCP Rate Limits","type":"object","properties":{"tool_calls_per_minute":{"description":"Tool Calls per Minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.1.overrides.items.[INDEX].limits.tool_calls_per_minute","typeLabel":"integer"},"tool_calls_per_hour":{"description":"Tool Calls per Hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.1.overrides.items.[INDEX].limits.tool_calls_per_hour","typeLabel":"integer"},"tool_calls_per_day":{"description":"Tool Calls per Day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.1.overrides.items.[INDEX].limits.tool_calls_per_day","typeLabel":"integer"}},"title":"RateLimitV2MCPOverrideLimits","x-fern-type-name":"RateLimitV2MCPOverrideLimits","isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.1.overrides.items.[INDEX].limits","typeLabel":"RateLimitV2MCPOverrideLimits · object"}},"title":"RateLimitV2MCPPerUserOverride","x-fern-type-name":"RateLimitV2MCPPerUserOverride","uniqueKey":"manifest.oneOf.79.applies_to.oneOf.1.overrides.items.[INDEX]","typeLabel":"RateLimitV2MCPPerUserOverride · object"},"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.1.overrides","typeLabel":"RateLimitV2MCPPerUserOverride · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.1","typeLabel":"RateLimitV2MCPAppliesToPerUser · object"},{"type":"object","title":"RateLimitV2MCPAppliesToPerMCP","description":"Per MCP","required":["type"],"x-fern-type-name":"RateLimitV2MCPAppliesTo","properties":{"type":{"description":"+value=per-mcp","type":"string","enum":["per-mcp"],"default":"per-mcp","isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.2.type","typeLabel":"enum\u003cstring>"},"overrides":{"type":"array","items":{"type":"object","required":["mcps","limits"],"properties":{"mcps":{"description":"MCP Servers","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.79.applies_to.oneOf.2.overrides.items.[INDEX].mcps.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.2.overrides.items.[INDEX].mcps","typeLabel":"string[]"},"limits":{"description":"MCP Rate Limits","type":"object","properties":{"tool_calls_per_minute":{"description":"Tool Calls per Minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.2.overrides.items.[INDEX].limits.tool_calls_per_minute","typeLabel":"integer"},"tool_calls_per_hour":{"description":"Tool Calls per Hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.2.overrides.items.[INDEX].limits.tool_calls_per_hour","typeLabel":"integer"},"tool_calls_per_day":{"description":"Tool Calls per Day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.2.overrides.items.[INDEX].limits.tool_calls_per_day","typeLabel":"integer"}},"title":"RateLimitV2MCPOverrideLimits","x-fern-type-name":"RateLimitV2MCPOverrideLimits","isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.2.overrides.items.[INDEX].limits","typeLabel":"RateLimitV2MCPOverrideLimits · object"}},"title":"RateLimitV2MCPPerMCPOverride","x-fern-type-name":"RateLimitV2MCPPerMCPOverride","uniqueKey":"manifest.oneOf.79.applies_to.oneOf.2.overrides.items.[INDEX]","typeLabel":"RateLimitV2MCPPerMCPOverride · object"},"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.2.overrides","typeLabel":"RateLimitV2MCPPerMCPOverride · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.2","typeLabel":"RateLimitV2MCPAppliesToPerMCP · object"},{"type":"object","title":"RateLimitV2MCPAppliesToPerVirtualAccount","description":"Per Virtual Account","required":["type"],"x-fern-type-name":"RateLimitV2MCPAppliesTo","properties":{"type":{"description":"+value=per-virtual-account","type":"string","enum":["per-virtual-account"],"default":"per-virtual-account","isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.3.type","typeLabel":"enum\u003cstring>"},"overrides":{"type":"array","items":{"type":"object","required":["virtual_accounts","limits"],"properties":{"virtual_accounts":{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.79.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts","typeLabel":"string[]"},"limits":{"description":"MCP Rate Limits","type":"object","properties":{"tool_calls_per_minute":{"description":"Tool Calls per Minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.3.overrides.items.[INDEX].limits.tool_calls_per_minute","typeLabel":"integer"},"tool_calls_per_hour":{"description":"Tool Calls per Hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.3.overrides.items.[INDEX].limits.tool_calls_per_hour","typeLabel":"integer"},"tool_calls_per_day":{"description":"Tool Calls per Day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.3.overrides.items.[INDEX].limits.tool_calls_per_day","typeLabel":"integer"}},"title":"RateLimitV2MCPOverrideLimits","x-fern-type-name":"RateLimitV2MCPOverrideLimits","isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.3.overrides.items.[INDEX].limits","typeLabel":"RateLimitV2MCPOverrideLimits · object"}},"title":"RateLimitV2MCPPerVirtualAccountOverride","x-fern-type-name":"RateLimitV2MCPPerVirtualAccountOverride","uniqueKey":"manifest.oneOf.79.applies_to.oneOf.3.overrides.items.[INDEX]","typeLabel":"RateLimitV2MCPPerVirtualAccountOverride · object"},"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.3.overrides","typeLabel":"RateLimitV2MCPPerVirtualAccountOverride · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.3","typeLabel":"RateLimitV2MCPAppliesToPerVirtualAccount · object"},{"type":"object","title":"RateLimitV2MCPAppliesToMetadata","description":"Per Metadata Value","required":["type","metadata"],"x-fern-type-name":"RateLimitV2MCPAppliesTo","properties":{"type":{"description":"+value=metadata","type":"string","enum":["metadata"],"default":"metadata","isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.4.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.4.metadata","typeLabel":"string"},"overrides":{"type":"array","items":{"type":"object","required":["metadata_values","limits"],"properties":{"metadata_values":{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.79.applies_to.oneOf.4.overrides.items.[INDEX].metadata_values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.4.overrides.items.[INDEX].metadata_values","typeLabel":"string[]"},"limits":{"description":"MCP Rate Limits","type":"object","properties":{"tool_calls_per_minute":{"description":"Tool Calls per Minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.4.overrides.items.[INDEX].limits.tool_calls_per_minute","typeLabel":"integer"},"tool_calls_per_hour":{"description":"Tool Calls per Hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.4.overrides.items.[INDEX].limits.tool_calls_per_hour","typeLabel":"integer"},"tool_calls_per_day":{"description":"Tool Calls per Day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.4.overrides.items.[INDEX].limits.tool_calls_per_day","typeLabel":"integer"}},"title":"RateLimitV2MCPOverrideLimits","x-fern-type-name":"RateLimitV2MCPOverrideLimits","isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.4.overrides.items.[INDEX].limits","typeLabel":"RateLimitV2MCPOverrideLimits · object"}},"title":"RateLimitV2MCPPerMetadataOverride","x-fern-type-name":"RateLimitV2MCPPerMetadataOverride","uniqueKey":"manifest.oneOf.79.applies_to.oneOf.4.overrides.items.[INDEX]","typeLabel":"RateLimitV2MCPPerMetadataOverride · object"},"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.4.overrides","typeLabel":"RateLimitV2MCPPerMetadataOverride · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to.oneOf.4","typeLabel":"RateLimitV2MCPAppliesToMetadata · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.79.applies_to","typeLabel":"RateLimitV2MCPAppliesToAggregate · object | RateLimitV2MCPAppliesToPerUser · object | RateLimitV2MCPAppliesToPerMCP · object | RateLimitV2MCPAppliesToPerVirtualAccount · object | RateLimitV2MCPAppliesToMetadata · object"},"mode":{"description":"Mode","type":"string","enum":["enforce","audit","soft_enforce"],"default":"enforce","isRequired":true,"uniqueKey":"manifest.oneOf.79.mode","typeLabel":"enum\u003cstring>"},"log_request_body_on_block":{"description":"Log Request Body on Block","type":"boolean","default":false,"isRequired":true,"uniqueKey":"manifest.oneOf.79.log_request_body_on_block","typeLabel":"boolean"},"when":{"description":"MCP Rate Limit Conditions","type":"object","properties":{"subjects":{"type":"object","properties":{"users":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.79.when.subjects.users.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.79.when.subjects.users.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.79.when.subjects.users.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.79.when.subjects.users.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"manifest.oneOf.79.when.subjects.users","typeLabel":"RateLimitV2InNotInFilter · object"},"teams":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.79.when.subjects.teams.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.79.when.subjects.teams.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.79.when.subjects.teams.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.79.when.subjects.teams.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"manifest.oneOf.79.when.subjects.teams","typeLabel":"RateLimitV2InNotInFilter · object"},"virtual_accounts":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.79.when.subjects.virtual_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.79.when.subjects.virtual_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.79.when.subjects.virtual_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.79.when.subjects.virtual_accounts.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"manifest.oneOf.79.when.subjects.virtual_accounts","typeLabel":"RateLimitV2InNotInFilter · object"},"agents":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.79.when.subjects.agents.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.79.when.subjects.agents.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.79.when.subjects.agents.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.79.when.subjects.agents.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"manifest.oneOf.79.when.subjects.agents","typeLabel":"RateLimitV2InNotInFilter · object"}},"title":"RateLimitV2Subjects","x-fern-type-name":"RateLimitV2Subjects","uniqueKey":"manifest.oneOf.79.when.subjects","typeLabel":"RateLimitV2Subjects · object"},"mcp_servers":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.79.when.mcp_servers.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.79.when.mcp_servers.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.79.when.mcp_servers.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.79.when.mcp_servers.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"manifest.oneOf.79.when.mcp_servers","typeLabel":"RateLimitV2InNotInFilter · object"},"metadata":{"description":"Metadata","type":"object","additionalProperties":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.79.when.metadata.additionalProperties.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.79.when.metadata.additionalProperties.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.79.when.metadata.additionalProperties.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.79.when.metadata.additionalProperties.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"manifest.oneOf.79.when.metadata.additionalProperties","typeLabel":"RateLimitV2InNotInFilter · object"},"uniqueKey":"manifest.oneOf.79.when.metadata","typeLabel":"object"}},"title":"RateLimitV2MCPWhen","x-fern-type-name":"RateLimitV2MCPWhen","uniqueKey":"manifest.oneOf.79.when","typeLabel":"RateLimitV2MCPWhen · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.79","typeLabel":"TenantMCPRateLimitConfig · object"},{"type":"object","title":"RateLimitConfig","description":"Manifest of the resource to be created or updated","required":["type","rules"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=gateway-rate-limiting-config\n+sort=2","type":"string","enum":["gateway-rate-limiting-config"],"default":"gateway-rate-limiting-config","isRequired":true,"uniqueKey":"manifest.oneOf.80.type","typeLabel":"enum\u003cstring>"},"rules":{"description":"List of rate limit rules","type":"array","items":{"description":"Rate Limit Rule","type":"object","required":["id","when","limit_to","unit"],"properties":{"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[A-Za-z{}][A-Za-z0-9{}._-]{0,60}[A-Za-z0-9{}._]$","isRequired":true,"uniqueKey":"manifest.oneOf.80.rules.items.[INDEX].id","typeLabel":"string"},"when":{"description":"Rule Conditions","type":"object","properties":{"subjects":{"description":"List of subjects that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.80.rules.items.[INDEX].when.subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.80.rules.items.[INDEX].when.subjects","typeLabel":"string[]"},"models":{"description":"List of models that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.80.rules.items.[INDEX].when.models.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.80.rules.items.[INDEX].when.models","typeLabel":"string[]"},"metadata":{"description":"Metadata key-value pairs that this rule applies to","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.80.rules.items.[INDEX].when.metadata.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.80.rules.items.[INDEX].when.metadata","typeLabel":"object"}},"title":"RateLimitWhen","x-fern-type-name":"RateLimitWhen","isRequired":true,"uniqueKey":"manifest.oneOf.80.rules.items.[INDEX].when","typeLabel":"RateLimitWhen · object"},"limit_to":{"description":"Maximum number of requests or tokens allowed","type":"integer","isRequired":true,"uniqueKey":"manifest.oneOf.80.rules.items.[INDEX].limit_to","typeLabel":"integer"},"unit":{"description":"Unit for rate limit calculation","type":"string","enum":["requests_per_day","tokens_per_minute","requests_per_minute","tokens_per_day","requests_per_hour","tokens_per_hour"],"title":"RateLimitUnit","x-fern-type-name":"RateLimitUnit","isRequired":true,"uniqueKey":"manifest.oneOf.80.rules.items.[INDEX].unit","typeLabel":"enum\u003cstring>"},"rate_limit_applies_per":{"description":"Create separate rate limiting rules for each unique value of the selected entity. For example, if \"user\" is selected, a separate rate limit rule will be created for each unique user making requests. Options: user, virtualaccount, model, or a metadata key (e.g., metadata.appId).","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.80.rules.items.[INDEX].rate_limit_applies_per.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.80.rules.items.[INDEX].rate_limit_applies_per","typeLabel":"string[]"}},"title":"RateLimitRule","x-fern-type-name":"RateLimitRule","uniqueKey":"manifest.oneOf.80.rules.items.[INDEX]","typeLabel":"RateLimitRule · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.80.rules","typeLabel":"RateLimitRule · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.80","typeLabel":"RateLimitConfig · object"},{"type":"object","title":"LoadBalancingConfig","description":"Manifest of the resource to be created or updated","required":["type","rules"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=gateway-load-balancing-config\n+sort=2","type":"string","enum":["gateway-load-balancing-config"],"default":"gateway-load-balancing-config","isRequired":true,"uniqueKey":"manifest.oneOf.81.type","typeLabel":"enum\u003cstring>"},"rules":{"description":"List of load balancing rules","type":"array","items":{"oneOf":[{"type":"object","title":"WeightBasedLoadBalancingRule","description":"Weight-based Load Balancing Rule","required":["id","when","type","load_balance_targets"],"x-fern-type-name":"LoadBalancingRule","properties":{"type":{"description":"Routing Type","type":"string","enum":["weight-based-routing"],"default":"weight-based-routing","isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"load_balance_targets":{"description":"List of targets for load balancing with weights","type":"array","items":{"description":"Weight-based Target","type":"object","required":["target","weight"],"properties":{"target":{"description":"Target model or provider FQN","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].target","typeLabel":"string"},"weight":{"description":"Relative weight for routing decisions (higher values mean more traffic)","type":"integer","isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].weight","typeLabel":"integer"},"retry_config":{"type":"object","required":["attempts"],"properties":{"attempts":{"description":"Number of attempts to retry the request","type":"integer","minimum":0,"isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].retry_config.attempts","typeLabel":"integer"},"delay":{"description":"Delay between retries in milliseconds","type":"integer","minimum":0,"exclusiveMinimum":true,"default":100,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].retry_config.delay","typeLabel":"integer"},"on_status_codes":{"description":"Status codes to retry on","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].retry_config.on_status_codes.items.[INDEX]","typeLabel":"string"},"default":["429","500","502","503"],"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].retry_config.on_status_codes","typeLabel":"string[]"}},"title":"RetryConfig","x-fern-type-name":"RetryConfig","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].retry_config","typeLabel":"RetryConfig · object"},"fallback_status_codes":{"description":"Status Codes for which the request will fallback to other targets. If the status code is not present in fallback_status_codes, it fails immediately.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].fallback_status_codes.items.[INDEX]","typeLabel":"string"},"default":["401","403","404","408","429","500","502","503"],"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].fallback_status_codes","typeLabel":"string[]"},"fallback_candidate":{"description":"Whether this target is a fallback candidate. If set to false, this model will not be considered as a fallback option for targets of this load-balance-rule","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].fallback_candidate","typeLabel":"boolean"},"override_params":{"description":"Optional parameters to override in the request","type":"object","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].override_params","typeLabel":"object"},"headers_override":{"description":"Headers Override","type":"object","properties":{"remove":{"description":"List of headers to remove from upstream request","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].headers_override.remove.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].headers_override.remove","typeLabel":"string[]"},"set":{"description":"Headers to add or overwrite in upstream request","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].headers_override.set.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].headers_override.set","typeLabel":"object"}},"title":"HeadersOverride","x-fern-type-name":"HeadersOverride","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].headers_override","typeLabel":"HeadersOverride · object"},"metadata_match":{"description":"Optional metadata key-value pairs that must match incoming request metadata headers for this target to be considered for routing.","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].metadata_match.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].metadata_match","typeLabel":"object"}},"title":"LoadBalanceTarget","x-fern-type-name":"LoadBalanceTarget","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX]","typeLabel":"LoadBalanceTarget · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets","typeLabel":"LoadBalanceTarget · object[]"},"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.id","typeLabel":"string"},"when":{"description":"Rule Conditions","type":"object","properties":{"subjects":{"description":"List of subjects that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.when.subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.when.subjects","typeLabel":"string[]"},"models":{"description":"List of models that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.when.models.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.when.models","typeLabel":"string[]"},"metadata":{"description":"Metadata key-value pairs that this rule applies to","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.when.metadata.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.when.metadata","typeLabel":"object"}},"title":"LoadBalancingWhen","x-fern-type-name":"LoadBalancingWhen","isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.when","typeLabel":"LoadBalancingWhen · object"},"sticky_routing":{"description":"Sticky Routing","type":"object","required":["ttl_seconds","session_identifiers"],"properties":{"ttl_seconds":{"description":"Sticky mapping TTL in seconds","type":"integer","minimum":1800,"maximum":86400,"isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.sticky_routing.ttl_seconds","typeLabel":"integer"},"session_identifiers":{"description":"List of identifier selectors used to build sticky key","type":"array","items":{"description":"Sticky Session Identifier","type":"object","required":["source","key"],"properties":{"source":{"description":"Source from which session identifier value will be extracted","type":"string","enum":["headers","metadata"],"isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.sticky_routing.session_identifiers.items.[INDEX].source","typeLabel":"enum\u003cstring>"},"key":{"description":"Key to read from selected source","type":"string","pattern":"^[!#$%\u0026'*+.^_`|~0-9A-Za-z-]{1,128}$","isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.sticky_routing.session_identifiers.items.[INDEX].key","typeLabel":"string"}},"title":"StickySessionIdentifier","x-fern-type-name":"StickySessionIdentifier","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.sticky_routing.session_identifiers.items.[INDEX]","typeLabel":"StickySessionIdentifier · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.sticky_routing.session_identifiers","typeLabel":"StickySessionIdentifier · object[]"}},"title":"StickyRouting","x-fern-type-name":"StickyRouting","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0.sticky_routing","typeLabel":"StickyRouting · object"}},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.0","typeLabel":"WeightBasedLoadBalancingRule · object"},{"type":"object","title":"LatencyBasedLoadBalancingRule","description":"Latency-based Load Balancing Rule","required":["id","when","type","load_balance_targets"],"x-fern-type-name":"LoadBalancingRule","properties":{"type":{"description":"Routing Type","type":"string","enum":["latency-based-routing"],"default":"latency-based-routing","isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"load_balance_targets":{"description":"List of targets for latency-based load balancing","type":"array","items":{"description":"Latency-based Target","type":"object","required":["target"],"properties":{"target":{"description":"Target model or provider FQN","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].target","typeLabel":"string"},"retry_config":{"type":"object","required":["attempts"],"properties":{"attempts":{"description":"Number of attempts to retry the request","type":"integer","minimum":0,"isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].retry_config.attempts","typeLabel":"integer"},"delay":{"description":"Delay between retries in milliseconds","type":"integer","minimum":0,"exclusiveMinimum":true,"default":100,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].retry_config.delay","typeLabel":"integer"},"on_status_codes":{"description":"Status codes to retry on","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].retry_config.on_status_codes.items.[INDEX]","typeLabel":"string"},"default":["429","500","502","503"],"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].retry_config.on_status_codes","typeLabel":"string[]"}},"title":"RetryConfig","x-fern-type-name":"RetryConfig","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].retry_config","typeLabel":"RetryConfig · object"},"fallback_status_codes":{"description":"Status Codes for which the request will fallback to other targets. If the status code is not present in fallback_status_codes, it fails immediately.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].fallback_status_codes.items.[INDEX]","typeLabel":"string"},"default":["401","403","404","408","429","500","502","503"],"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].fallback_status_codes","typeLabel":"string[]"},"fallback_candidate":{"description":"Whether this target is a fallback candidate. If set to false, this model will not be considered as a fallback option for targets of this load-balance-rule","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].fallback_candidate","typeLabel":"boolean"},"override_params":{"description":"Optional parameters to override in the request","type":"object","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].override_params","typeLabel":"object"},"headers_override":{"description":"Headers Override","type":"object","properties":{"remove":{"description":"List of headers to remove from upstream request","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].headers_override.remove.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].headers_override.remove","typeLabel":"string[]"},"set":{"description":"Headers to add or overwrite in upstream request","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].headers_override.set.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].headers_override.set","typeLabel":"object"}},"title":"HeadersOverride","x-fern-type-name":"HeadersOverride","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].headers_override","typeLabel":"HeadersOverride · object"},"metadata_match":{"description":"Optional metadata key-value pairs that must match incoming request metadata headers for this target to be considered for routing.","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].metadata_match.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].metadata_match","typeLabel":"object"}},"title":"LatencyBasedLoadBalanceTarget","x-fern-type-name":"LatencyBasedLoadBalanceTarget","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX]","typeLabel":"LatencyBasedLoadBalanceTarget · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets","typeLabel":"LatencyBasedLoadBalanceTarget · object[]"},"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.id","typeLabel":"string"},"when":{"description":"Rule Conditions","type":"object","properties":{"subjects":{"description":"List of subjects that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.when.subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.when.subjects","typeLabel":"string[]"},"models":{"description":"List of models that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.when.models.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.when.models","typeLabel":"string[]"},"metadata":{"description":"Metadata key-value pairs that this rule applies to","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.when.metadata.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.when.metadata","typeLabel":"object"}},"title":"LoadBalancingWhen","x-fern-type-name":"LoadBalancingWhen","isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1.when","typeLabel":"LoadBalancingWhen · object"}},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.1","typeLabel":"LatencyBasedLoadBalancingRule · object"},{"type":"object","title":"PriorityBasedLoadBalancingRule","description":"Priority-based Load Balancing Rule","required":["id","when","type","load_balance_targets"],"x-fern-type-name":"LoadBalancingRule","properties":{"type":{"description":"Routing Type","type":"string","enum":["priority-based-routing"],"default":"priority-based-routing","isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"load_balance_targets":{"description":"List of targets for priority-based load balancing","type":"array","items":{"type":"object","required":["target","priority"],"properties":{"target":{"description":"Target model or provider FQN","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].target","typeLabel":"string"},"priority":{"description":"Priority for the target, Lower the number, higher the priority (0 is the highest priority)","type":"integer","minimum":0,"default":0,"isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].priority","typeLabel":"integer"},"sla_cutoff":{"type":"object","properties":{"time_per_output_token_ms":{"description":"Time per output token threshold in milliseconds. If time per output token exceeds this value, the target will be marked as unhealthy","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].sla_cutoff.time_per_output_token_ms","typeLabel":"integer"},"time_to_first_token_ms":{"description":"Time to first token threshold in milliseconds. If time to first token exceeds this value, the target will be marked as unhealthy","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].sla_cutoff.time_to_first_token_ms","typeLabel":"integer"}},"title":"SLACutoff","x-fern-type-name":"SLACutoff","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].sla_cutoff","typeLabel":"SLACutoff · object"},"retry_config":{"type":"object","required":["attempts"],"properties":{"attempts":{"description":"Number of attempts to retry the request","type":"integer","minimum":0,"isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].retry_config.attempts","typeLabel":"integer"},"delay":{"description":"Delay between retries in milliseconds","type":"integer","minimum":0,"exclusiveMinimum":true,"default":100,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].retry_config.delay","typeLabel":"integer"},"on_status_codes":{"description":"Status codes to retry on","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].retry_config.on_status_codes.items.[INDEX]","typeLabel":"string"},"default":["429","500","502","503"],"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].retry_config.on_status_codes","typeLabel":"string[]"}},"title":"RetryConfig","x-fern-type-name":"RetryConfig","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].retry_config","typeLabel":"RetryConfig · object"},"fallback_status_codes":{"description":"Status Codes for which the request will fallback to other targets. If the status code is not present in fallback_status_codes, it fails immediately.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].fallback_status_codes.items.[INDEX]","typeLabel":"string"},"default":["401","403","404","408","429","500","502","503"],"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].fallback_status_codes","typeLabel":"string[]"},"fallback_candidate":{"description":"Whether this target is a fallback candidate. If set to false, this model will not be considered as a fallback option for targets of this load-balance-rule","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].fallback_candidate","typeLabel":"boolean"},"override_params":{"description":"Optional parameters to override in the request","type":"object","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].override_params","typeLabel":"object"},"headers_override":{"description":"Headers Override","type":"object","properties":{"remove":{"description":"List of headers to remove from upstream request","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].headers_override.remove.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].headers_override.remove","typeLabel":"string[]"},"set":{"description":"Headers to add or overwrite in upstream request","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].headers_override.set.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].headers_override.set","typeLabel":"object"}},"title":"HeadersOverride","x-fern-type-name":"HeadersOverride","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].headers_override","typeLabel":"HeadersOverride · object"},"metadata_match":{"description":"Optional metadata key-value pairs that must match incoming request metadata headers for this target to be considered for routing.","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].metadata_match.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].metadata_match","typeLabel":"object"}},"title":"PriorityBasedLoadBalanceTarget","x-fern-type-name":"PriorityBasedLoadBalanceTarget","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX]","typeLabel":"PriorityBasedLoadBalanceTarget · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets","typeLabel":"PriorityBasedLoadBalanceTarget · object[]"},"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.id","typeLabel":"string"},"when":{"description":"Rule Conditions","type":"object","properties":{"subjects":{"description":"List of subjects that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.when.subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.when.subjects","typeLabel":"string[]"},"models":{"description":"List of models that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.when.models.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.when.models","typeLabel":"string[]"},"metadata":{"description":"Metadata key-value pairs that this rule applies to","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.when.metadata.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.when.metadata","typeLabel":"object"}},"title":"LoadBalancingWhen","x-fern-type-name":"LoadBalancingWhen","isRequired":true,"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2.when","typeLabel":"LoadBalancingWhen · object"}},"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX].oneOf.2","typeLabel":"PriorityBasedLoadBalancingRule · object"}],"uniqueKey":"manifest.oneOf.81.rules.items.[INDEX]","typeLabel":"WeightBasedLoadBalancingRule · object | LatencyBasedLoadBalancingRule · object | PriorityBasedLoadBalancingRule · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.81.rules","typeLabel":"(WeightBasedLoadBalancingRule · object | LatencyBasedLoadBalancingRule · object | PriorityBasedLoadBalancingRule · object)[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.81","typeLabel":"LoadBalancingConfig · object"},{"type":"object","title":"GuardrailsConfig","description":"Manifest of the resource to be created or updated","required":["type","name","when","llm_input_guardrails","llm_output_guardrails","mcp_tool_pre_invoke_guardrails","mcp_tool_post_invoke_guardrails"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=gateway-guardrails-config\n+sort=1","type":"string","enum":["gateway-guardrails-config"],"default":"gateway-guardrails-config","isRequired":true,"uniqueKey":"manifest.oneOf.82.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique name for this guardrails configuration","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.82.name","typeLabel":"string"},"when":{"type":"object","properties":{"target":{"type":"object","required":["operator","conditions"],"properties":{"operator":{"type":"string","enum":["or"],"isRequired":true,"uniqueKey":"manifest.oneOf.82.when.target.operator","typeLabel":"enum\u003cstring>"},"conditions":{"type":"object","properties":{"mcpServers":{"type":"object","required":["condition","values"],"properties":{"condition":{"type":"string","enum":["in","not_in"],"default":"in","isRequired":true,"uniqueKey":"manifest.oneOf.82.when.target.conditions.mcpServers.condition","typeLabel":"enum\u003cstring>"},"values":{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.82.when.target.conditions.mcpServers.values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.82.when.target.conditions.mcpServers.values","typeLabel":"string[]"}},"title":"InNotInOperator","x-fern-type-name":"InNotInOperator","uniqueKey":"manifest.oneOf.82.when.target.conditions.mcpServers","typeLabel":"InNotInOperator · object"},"mcpTools":{"type":"object","required":["condition","values"],"properties":{"condition":{"type":"string","enum":["in","not_in"],"default":"in","isRequired":true,"uniqueKey":"manifest.oneOf.82.when.target.conditions.mcpTools.condition","typeLabel":"enum\u003cstring>"},"values":{"type":"array","items":{"type":"object","required":["name","enable_all_tools"],"properties":{"name":{"description":"Name of the MCP server","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.82.when.target.conditions.mcpTools.values.items.[INDEX].name","typeLabel":"string"},"enable_all_tools":{"description":"When enabled, all tools from this MCP server are targeted. Disable to select specific tools.","type":"boolean","default":false,"isRequired":true,"uniqueKey":"manifest.oneOf.82.when.target.conditions.mcpTools.values.items.[INDEX].enable_all_tools","typeLabel":"boolean"},"enabled_tools":{"description":"List of specific tools to target from this MCP server.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.82.when.target.conditions.mcpTools.values.items.[INDEX].enabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.82.when.target.conditions.mcpTools.values.items.[INDEX].enabled_tools","typeLabel":"string[]"}},"title":"MCPToolTarget","x-fern-type-name":"MCPToolTarget","uniqueKey":"manifest.oneOf.82.when.target.conditions.mcpTools.values.items.[INDEX]","typeLabel":"MCPToolTarget · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.82.when.target.conditions.mcpTools.values","typeLabel":"MCPToolTarget · object[]"}},"title":"MCPToolsOperator","x-fern-type-name":"MCPToolsOperator","uniqueKey":"manifest.oneOf.82.when.target.conditions.mcpTools","typeLabel":"MCPToolsOperator · object"},"model":{"type":"object","required":["condition","values"],"properties":{"condition":{"type":"string","enum":["in","not_in"],"default":"in","isRequired":true,"uniqueKey":"manifest.oneOf.82.when.target.conditions.model.condition","typeLabel":"enum\u003cstring>"},"values":{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.82.when.target.conditions.model.values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.82.when.target.conditions.model.values","typeLabel":"string[]"}},"title":"InNotInOperator","x-fern-type-name":"InNotInOperator","uniqueKey":"manifest.oneOf.82.when.target.conditions.model","typeLabel":"InNotInOperator · object"}},"title":"TargetClause","x-fern-type-name":"TargetClause","isRequired":true,"uniqueKey":"manifest.oneOf.82.when.target.conditions","typeLabel":"TargetClause · object"}},"title":"TargetConditionGroup","x-fern-type-name":"TargetConditionGroup","uniqueKey":"manifest.oneOf.82.when.target","typeLabel":"TargetConditionGroup · object"},"subjects":{"type":"object","required":["operator","conditions"],"properties":{"operator":{"type":"string","enum":["and","or"],"default":"and","isRequired":true,"uniqueKey":"manifest.oneOf.82.when.subjects.operator","typeLabel":"enum\u003cstring>"},"conditions":{"type":"object","properties":{"in":{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.82.when.subjects.conditions.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.82.when.subjects.conditions.in","typeLabel":"string[]"},"not_in":{"type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.82.when.subjects.conditions.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.82.when.subjects.conditions.not_in","typeLabel":"string[]"}},"title":"SubjectClause","x-fern-type-name":"SubjectClause","isRequired":true,"uniqueKey":"manifest.oneOf.82.when.subjects.conditions","typeLabel":"SubjectClause · object"}},"title":"SubjectConditionGroup","x-fern-type-name":"SubjectConditionGroup","uniqueKey":"manifest.oneOf.82.when.subjects","typeLabel":"SubjectConditionGroup · object"},"metadata":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.82.when.metadata.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.82.when.metadata","typeLabel":"object"}},"title":"GuardrailsWhen","x-fern-type-name":"GuardrailsWhen","isRequired":true,"uniqueKey":"manifest.oneOf.82.when","typeLabel":"GuardrailsWhen · object"},"llm_input_guardrails":{"description":"Guardrail selectors of the guardrails to apply to the input (format: groupName/guardrailName)","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.82.llm_input_guardrails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.82.llm_input_guardrails","typeLabel":"string[]"},"llm_output_guardrails":{"description":"Guardrail selectors of the guardrails to apply to the output (format: groupName/guardrailName)","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.82.llm_output_guardrails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.82.llm_output_guardrails","typeLabel":"string[]"},"mcp_tool_pre_invoke_guardrails":{"description":"Guardrail selectors of the guardrails to apply to the MCP tool pre invoke (format: groupName/guardrailName)","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.82.mcp_tool_pre_invoke_guardrails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.82.mcp_tool_pre_invoke_guardrails","typeLabel":"string[]"},"mcp_tool_post_invoke_guardrails":{"description":"Guardrail selectors of the guardrails to apply to the MCP tool post invoke (format: groupName/guardrailName)","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.82.mcp_tool_post_invoke_guardrails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.82.mcp_tool_post_invoke_guardrails","typeLabel":"string[]"},"custom_error_message":{"description":"Optional message returned to the client when a guardrail in this config blocks a request. Supported placeholders: {{guardrail_message}} (default guardrail failure detail), {{failed_guardrails}} (comma-separated list of the guardrails that failed).","type":"string","uniqueKey":"manifest.oneOf.82.custom_error_message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.82","typeLabel":"GuardrailsConfig · object"},{"type":"object","title":"BudgetConfig","description":"Manifest of the resource to be created or updated","required":["type","rules"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=gateway-budget-config\n+sort=2","type":"string","enum":["gateway-budget-config"],"default":"gateway-budget-config","isRequired":true,"uniqueKey":"manifest.oneOf.83.type","typeLabel":"enum\u003cstring>"},"rules":{"description":"List of budget rules","type":"array","items":{"description":"Budget Rule","type":"object","required":["id","when","limit_to","unit"],"properties":{"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].id","typeLabel":"string"},"when":{"description":"Rule Conditions","type":"object","properties":{"subjects":{"description":"List of subjects that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].when.subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].when.subjects","typeLabel":"string[]"},"models":{"description":"List of models that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].when.models.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].when.models","typeLabel":"string[]"},"metadata":{"description":"Metadata key-value pairs that this rule applies to","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].when.metadata.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].when.metadata","typeLabel":"object"}},"title":"BudgetWhen","x-fern-type-name":"BudgetWhen","isRequired":true,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].when","typeLabel":"BudgetWhen · object"},"limit_to":{"description":"Numeric limit value for the budget","type":"number","isRequired":true,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].limit_to","typeLabel":"number"},"unit":{"description":"Unit for budget limit calculation","type":"string","enum":["cost_per_day","cost_per_month","cost_per_week","cost_per_quarter","tokens_per_day","tokens_per_month"],"title":"BudgetLimitUnit","x-fern-type-name":"BudgetLimitUnit","isRequired":true,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].unit","typeLabel":"enum\u003cstring>"},"budget_applies_per":{"description":"Create separate budget rules for each unique value of the selected entity. For example, if \"user\" is selected, a separate budget rule will be created for each unique user making requests. Options: user, virtualaccount, model, or a metadata key (e.g., metadata.appId).","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].budget_applies_per.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].budget_applies_per","typeLabel":"string[]"},"alerts":{"description":"Budget Alert","type":"object","required":["thresholds","notification_target"],"properties":{"thresholds":{"description":"List of usage percentages (0-100) at which alerts should be triggered. Default thresholds are [75, 90, 95, 100].","type":"array","items":{"type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.thresholds.items.[INDEX]","typeLabel":"number"},"default":[75,90,95,100],"isRequired":true,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.thresholds","typeLabel":"number[]"},"notification_target":{"description":"Select where to send budget alert notifications","type":"array","items":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBot","description":"+discriminator=type","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.2.channels","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.2","typeLabel":"SlackBot · object"},{"type":"object","title":"PagerDuty","description":"+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.3","typeLabel":"PagerDuty · object"},{"type":"object","title":"MSTeamsWebhook","description":"MS Teams Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=ms-teams-webhook","type":"string","enum":["ms-teams-webhook"],"default":"ms-teams-webhook","isRequired":true,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.4.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.4","typeLabel":"MSTeamsWebhook · object"}],"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX]","typeLabel":"Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object | MSTeamsWebhook · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts.notification_target","typeLabel":"(Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object | MSTeamsWebhook · object)[]"}},"title":"BudgetAlert","x-fern-type-name":"BudgetAlert","uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].alerts","typeLabel":"BudgetAlert · object"},"audit_mode":{"description":"When enabled, requests exceeding the budget are tracked but not blocked","type":"boolean","default":false,"uniqueKey":"manifest.oneOf.83.rules.items.[INDEX].audit_mode","typeLabel":"boolean"}},"title":"BudgetRule","x-fern-type-name":"BudgetRule","uniqueKey":"manifest.oneOf.83.rules.items.[INDEX]","typeLabel":"BudgetRule · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.83.rules","typeLabel":"BudgetRule · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.83","typeLabel":"BudgetConfig · object"},{"type":"object","title":"TenantBudgetConfig","description":"Manifest of the resource to be created or updated","required":["type","name","limits","applies_to","mode"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=tenant-budget-config\n+sort=1","type":"string","enum":["tenant-budget-config"],"default":"tenant-budget-config","isRequired":true,"uniqueKey":"manifest.oneOf.84.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique name for this budget","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.84.name","typeLabel":"string"},"limits":{"description":"Budget Limits","type":"object","properties":{"cost_per_day":{"description":"Maximum daily cost in USD","type":"number","uniqueKey":"manifest.oneOf.84.limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Maximum weekly cost in USD","type":"number","uniqueKey":"manifest.oneOf.84.limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Maximum monthly cost in USD","type":"number","uniqueKey":"manifest.oneOf.84.limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Maximum quarterly cost in USD","type":"number","uniqueKey":"manifest.oneOf.84.limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Maximum lifetime cost in USD. Mutually exclusive with the day/week/month/quarter limits.","type":"number","uniqueKey":"manifest.oneOf.84.limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2Limits","x-fern-type-name":"BudgetV2Limits","isRequired":true,"uniqueKey":"manifest.oneOf.84.limits","typeLabel":"BudgetV2Limits · object"},"applies_to":{"oneOf":[{"type":"object","title":"BudgetV2AppliesToAggregate","description":"A single shared budget across every matching request.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["aggregate"],"default":"aggregate","isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.0","typeLabel":"BudgetV2AppliesToAggregate · object"},{"type":"object","title":"BudgetV2AppliesToPerUser","description":"Track a separate budget for each unique user.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-user"],"default":"per-user","isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.1.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-user limit overrides","type":"array","items":{"description":"Per-User Override","type":"object","required":["users","limits"],"properties":{"users":{"description":"Users whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.1.overrides.items.[INDEX].users.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.1.overrides.items.[INDEX].users","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.1.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerUserOverride","x-fern-type-name":"BudgetV2PerUserOverride","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.1.overrides.items.[INDEX]","typeLabel":"BudgetV2PerUserOverride · object"},"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.1.overrides","typeLabel":"BudgetV2PerUserOverride · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.1","typeLabel":"BudgetV2AppliesToPerUser · object"},{"type":"object","title":"BudgetV2AppliesToPerModel","description":"Track a separate budget for each model.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-model"],"default":"per-model","isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.2.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-model limit overrides","type":"array","items":{"description":"Per-Model Override","type":"object","required":["models","limits"],"properties":{"models":{"description":"Models whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.2.overrides.items.[INDEX].models.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.2.overrides.items.[INDEX].models","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.2.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerModelOverride","x-fern-type-name":"BudgetV2PerModelOverride","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.2.overrides.items.[INDEX]","typeLabel":"BudgetV2PerModelOverride · object"},"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.2.overrides","typeLabel":"BudgetV2PerModelOverride · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.2","typeLabel":"BudgetV2AppliesToPerModel · object"},{"type":"object","title":"BudgetV2AppliesToPerVirtualAccount","description":"Track a separate budget for each virtual account.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-virtual-account"],"default":"per-virtual-account","isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.3.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-virtual-account limit overrides","type":"array","items":{"description":"Per-Virtual-Account Override","type":"object","required":["virtual_accounts","limits"],"properties":{"virtual_accounts":{"description":"Virtual accounts whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.3.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerVirtualAccountOverride","x-fern-type-name":"BudgetV2PerVirtualAccountOverride","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.3.overrides.items.[INDEX]","typeLabel":"BudgetV2PerVirtualAccountOverride · object"},"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.3.overrides","typeLabel":"BudgetV2PerVirtualAccountOverride · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.3","typeLabel":"BudgetV2AppliesToPerVirtualAccount · object"},{"type":"object","title":"BudgetV2AppliesToPerAgent","description":"Track a separate budget for each agent.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-agent"],"default":"per-agent","isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.4.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-agent limit overrides","type":"array","items":{"description":"Per-Agent Override","type":"object","required":["agents","limits"],"properties":{"agents":{"description":"Agents whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.4.overrides.items.[INDEX].agents.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.4.overrides.items.[INDEX].agents","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.4.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerAgentOverride","x-fern-type-name":"BudgetV2PerAgentOverride","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.4.overrides.items.[INDEX]","typeLabel":"BudgetV2PerAgentOverride · object"},"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.4.overrides","typeLabel":"BudgetV2PerAgentOverride · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.4","typeLabel":"BudgetV2AppliesToPerAgent · object"},{"type":"object","title":"BudgetV2AppliesToMetadata","description":"Track a separate budget for each unique value of a metadata key.","required":["type","metadata"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["metadata"],"default":"metadata","isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.5.type","typeLabel":"enum\u003cstring>"},"metadata":{"description":"Metadata key whose distinct values each get their own budget bucket","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.5.metadata","typeLabel":"string"},"overrides":{"description":"Optional per-metadata-value limit overrides","type":"array","items":{"description":"Per-Metadata Override","type":"object","required":["metadata_values","limits"],"properties":{"metadata_values":{"description":"Metadata values whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.5.overrides.items.[INDEX].metadata_values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.5.overrides.items.[INDEX].metadata_values","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.5.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerMetadataOverride","x-fern-type-name":"BudgetV2PerMetadataOverride","uniqueKey":"manifest.oneOf.84.applies_to.oneOf.5.overrides.items.[INDEX]","typeLabel":"BudgetV2PerMetadataOverride · object"},"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.5.overrides","typeLabel":"BudgetV2PerMetadataOverride · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to.oneOf.5","typeLabel":"BudgetV2AppliesToMetadata · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.84.applies_to","typeLabel":"BudgetV2AppliesToAggregate · object | BudgetV2AppliesToPerUser · object | BudgetV2AppliesToPerModel · object | BudgetV2AppliesToPerVirtualAccount · object | BudgetV2AppliesToPerAgent · object | BudgetV2AppliesToMetadata · object"},"mode":{"description":"`enforce` blocks breaching requests, `audit` only tracks them, `soft_enforce` blocks only when no other matching budget allows the request.","type":"string","enum":["enforce","audit","soft_enforce"],"default":"enforce","isRequired":true,"uniqueKey":"manifest.oneOf.84.mode","typeLabel":"enum\u003cstring>"},"when":{"description":"Tenant Budget Conditions\nvirtual_models | virtual_provider_accounts cannot be combined with models | provider_accounts\n(enforced in GatewayBudgetService).","type":"object","properties":{"subjects":{"description":"Tenant Budget Subjects","type":"object","properties":{"users":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.when.subjects.users.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.when.subjects.users.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.when.subjects.users.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.when.subjects.users.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"manifest.oneOf.84.when.subjects.users","typeLabel":"BudgetV2InNotInFilter · object"},"teams":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.when.subjects.teams.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.when.subjects.teams.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.when.subjects.teams.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.when.subjects.teams.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"manifest.oneOf.84.when.subjects.teams","typeLabel":"BudgetV2InNotInFilter · object"},"virtual_accounts":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.when.subjects.virtual_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.when.subjects.virtual_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.when.subjects.virtual_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.when.subjects.virtual_accounts.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"manifest.oneOf.84.when.subjects.virtual_accounts","typeLabel":"BudgetV2InNotInFilter · object"},"agents":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.when.subjects.agents.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.when.subjects.agents.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.when.subjects.agents.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.when.subjects.agents.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"manifest.oneOf.84.when.subjects.agents","typeLabel":"BudgetV2InNotInFilter · object"}},"title":"BudgetV2SubjectsTenantScoped","x-fern-type-name":"BudgetV2SubjectsTenantScoped","uniqueKey":"manifest.oneOf.84.when.subjects","typeLabel":"BudgetV2SubjectsTenantScoped · object"},"models":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.when.models.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.when.models.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.when.models.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.when.models.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"manifest.oneOf.84.when.models","typeLabel":"BudgetV2InNotInFilter · object"},"provider_accounts":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.when.provider_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.when.provider_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.when.provider_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.when.provider_accounts.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"manifest.oneOf.84.when.provider_accounts","typeLabel":"BudgetV2InNotInFilter · object"},"virtual_models":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.when.virtual_models.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.when.virtual_models.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.when.virtual_models.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.when.virtual_models.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"manifest.oneOf.84.when.virtual_models","typeLabel":"BudgetV2InNotInFilter · object"},"virtual_provider_accounts":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.when.virtual_provider_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.when.virtual_provider_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.when.virtual_provider_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.when.virtual_provider_accounts.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"manifest.oneOf.84.when.virtual_provider_accounts","typeLabel":"BudgetV2InNotInFilter · object"},"metadata":{"description":"Filter by metadata key-value pairs this budget applies to","type":"object","additionalProperties":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.when.metadata.additionalProperties.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.when.metadata.additionalProperties.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.when.metadata.additionalProperties.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.when.metadata.additionalProperties.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"manifest.oneOf.84.when.metadata.additionalProperties","typeLabel":"BudgetV2InNotInFilter · object"},"uniqueKey":"manifest.oneOf.84.when.metadata","typeLabel":"object"}},"title":"BudgetV2WhenTenantScoped","x-fern-type-name":"BudgetV2WhenTenantScoped","uniqueKey":"manifest.oneOf.84.when","typeLabel":"BudgetV2WhenTenantScoped · object"},"alerts":{"description":"Budget Alert","type":"object","required":["thresholds"],"properties":{"thresholds":{"description":"List of usage percentages (0-100) at which alerts should be triggered. Default thresholds are [75, 90, 95, 100].","type":"array","items":{"type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.84.alerts.thresholds.items.[INDEX]","typeLabel":"number"},"default":[75,90,95,100],"isRequired":true,"uniqueKey":"manifest.oneOf.84.alerts.thresholds","typeLabel":"number[]"},"notification_target":{"description":"Select where to send budget alert notifications","type":"array","items":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBotWithUsers","description":"Budget-only variant. Alertmanager-backed alerts cannot resolve an email to a Slack\nuser, so `users` is kept off the shared #SlackBot.","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.2.channels","typeLabel":"string[]"},"users":{"description":"List of user emails to send direct messages to. Use {{user.email}} to message the user who breached the budget.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.2.users.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.2.users","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.2","typeLabel":"SlackBotWithUsers · object"},{"type":"object","title":"PagerDuty","description":"+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.3","typeLabel":"PagerDuty · object"},{"type":"object","title":"MSTeamsWebhook","description":"MS Teams Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=ms-teams-webhook","type":"string","enum":["ms-teams-webhook"],"default":"ms-teams-webhook","isRequired":true,"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.4.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.4","typeLabel":"MSTeamsWebhook · object"},{"type":"object","title":"Webhook","description":"Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=webhook","type":"string","enum":["webhook"],"default":"webhook","isRequired":true,"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.5.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.5","typeLabel":"Webhook · object"}],"uniqueKey":"manifest.oneOf.84.alerts.notification_target.items.[INDEX]","typeLabel":"Email · object | SlackWebhook · object | SlackBotWithUsers · object | PagerDuty · object | MSTeamsWebhook · object | Webhook · object"},"uniqueKey":"manifest.oneOf.84.alerts.notification_target","typeLabel":"(Email · object | SlackWebhook · object | SlackBotWithUsers · object | PagerDuty · object | MSTeamsWebhook · object | Webhook · object)[]"}},"title":"BudgetV2Alert","x-fern-type-name":"BudgetV2Alert","uniqueKey":"manifest.oneOf.84.alerts","typeLabel":"BudgetV2Alert · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.84","typeLabel":"TenantBudgetConfig · object"},{"type":"object","title":"TeamBudgetConfig","description":"Manifest of the resource to be created or updated","required":["type","team_name","name","limits","applies_to","mode"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=team-budget-config\n+sort=1","type":"string","enum":["team-budget-config"],"default":"team-budget-config","isRequired":true,"uniqueKey":"manifest.oneOf.85.type","typeLabel":"enum\u003cstring>"},"team_name":{"description":"Name of the team that owns this budget. RBAC is enforced on this value.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.85.team_name","typeLabel":"string"},"name":{"description":"Unique name for this budget","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.85.name","typeLabel":"string"},"limits":{"description":"Budget Limits","type":"object","properties":{"cost_per_day":{"description":"Maximum daily cost in USD","type":"number","uniqueKey":"manifest.oneOf.85.limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Maximum weekly cost in USD","type":"number","uniqueKey":"manifest.oneOf.85.limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Maximum monthly cost in USD","type":"number","uniqueKey":"manifest.oneOf.85.limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Maximum quarterly cost in USD","type":"number","uniqueKey":"manifest.oneOf.85.limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Maximum lifetime cost in USD. Mutually exclusive with the day/week/month/quarter limits.","type":"number","uniqueKey":"manifest.oneOf.85.limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2Limits","x-fern-type-name":"BudgetV2Limits","isRequired":true,"uniqueKey":"manifest.oneOf.85.limits","typeLabel":"BudgetV2Limits · object"},"applies_to":{"oneOf":[{"type":"object","title":"BudgetV2AppliesToAggregate","description":"A single shared budget across every matching request.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["aggregate"],"default":"aggregate","isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.0","typeLabel":"BudgetV2AppliesToAggregate · object"},{"type":"object","title":"BudgetV2AppliesToPerUser","description":"Track a separate budget for each unique user.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-user"],"default":"per-user","isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.1.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-user limit overrides","type":"array","items":{"description":"Per-User Override","type":"object","required":["users","limits"],"properties":{"users":{"description":"Users whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.1.overrides.items.[INDEX].users.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.1.overrides.items.[INDEX].users","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.1.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerUserOverride","x-fern-type-name":"BudgetV2PerUserOverride","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.1.overrides.items.[INDEX]","typeLabel":"BudgetV2PerUserOverride · object"},"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.1.overrides","typeLabel":"BudgetV2PerUserOverride · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.1","typeLabel":"BudgetV2AppliesToPerUser · object"},{"type":"object","title":"BudgetV2AppliesToPerModel","description":"Track a separate budget for each model.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-model"],"default":"per-model","isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.2.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-model limit overrides","type":"array","items":{"description":"Per-Model Override","type":"object","required":["models","limits"],"properties":{"models":{"description":"Models whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.2.overrides.items.[INDEX].models.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.2.overrides.items.[INDEX].models","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.2.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerModelOverride","x-fern-type-name":"BudgetV2PerModelOverride","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.2.overrides.items.[INDEX]","typeLabel":"BudgetV2PerModelOverride · object"},"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.2.overrides","typeLabel":"BudgetV2PerModelOverride · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.2","typeLabel":"BudgetV2AppliesToPerModel · object"},{"type":"object","title":"BudgetV2AppliesToPerVirtualAccount","description":"Track a separate budget for each virtual account.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-virtual-account"],"default":"per-virtual-account","isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.3.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-virtual-account limit overrides","type":"array","items":{"description":"Per-Virtual-Account Override","type":"object","required":["virtual_accounts","limits"],"properties":{"virtual_accounts":{"description":"Virtual accounts whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.3.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerVirtualAccountOverride","x-fern-type-name":"BudgetV2PerVirtualAccountOverride","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.3.overrides.items.[INDEX]","typeLabel":"BudgetV2PerVirtualAccountOverride · object"},"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.3.overrides","typeLabel":"BudgetV2PerVirtualAccountOverride · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.3","typeLabel":"BudgetV2AppliesToPerVirtualAccount · object"},{"type":"object","title":"BudgetV2AppliesToPerAgent","description":"Track a separate budget for each agent.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-agent"],"default":"per-agent","isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.4.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-agent limit overrides","type":"array","items":{"description":"Per-Agent Override","type":"object","required":["agents","limits"],"properties":{"agents":{"description":"Agents whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.4.overrides.items.[INDEX].agents.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.4.overrides.items.[INDEX].agents","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.4.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerAgentOverride","x-fern-type-name":"BudgetV2PerAgentOverride","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.4.overrides.items.[INDEX]","typeLabel":"BudgetV2PerAgentOverride · object"},"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.4.overrides","typeLabel":"BudgetV2PerAgentOverride · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.4","typeLabel":"BudgetV2AppliesToPerAgent · object"},{"type":"object","title":"BudgetV2AppliesToMetadata","description":"Track a separate budget for each unique value of a metadata key.","required":["type","metadata"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["metadata"],"default":"metadata","isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.5.type","typeLabel":"enum\u003cstring>"},"metadata":{"description":"Metadata key whose distinct values each get their own budget bucket","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.5.metadata","typeLabel":"string"},"overrides":{"description":"Optional per-metadata-value limit overrides","type":"array","items":{"description":"Per-Metadata Override","type":"object","required":["metadata_values","limits"],"properties":{"metadata_values":{"description":"Metadata values whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.5.overrides.items.[INDEX].metadata_values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.5.overrides.items.[INDEX].metadata_values","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.5.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerMetadataOverride","x-fern-type-name":"BudgetV2PerMetadataOverride","uniqueKey":"manifest.oneOf.85.applies_to.oneOf.5.overrides.items.[INDEX]","typeLabel":"BudgetV2PerMetadataOverride · object"},"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.5.overrides","typeLabel":"BudgetV2PerMetadataOverride · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to.oneOf.5","typeLabel":"BudgetV2AppliesToMetadata · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.85.applies_to","typeLabel":"BudgetV2AppliesToAggregate · object | BudgetV2AppliesToPerUser · object | BudgetV2AppliesToPerModel · object | BudgetV2AppliesToPerVirtualAccount · object | BudgetV2AppliesToPerAgent · object | BudgetV2AppliesToMetadata · object"},"mode":{"description":"`enforce` blocks breaching requests, `audit` only tracks them, `soft_enforce` blocks only when no other matching budget allows the request.","type":"string","enum":["enforce","audit","soft_enforce"],"default":"enforce","isRequired":true,"uniqueKey":"manifest.oneOf.85.mode","typeLabel":"enum\u003cstring>"},"when":{"description":"Team Budget Conditions\nvirtual_models | virtual_provider_accounts cannot be combined with models | provider_accounts\n(enforced in GatewayBudgetService).","type":"object","properties":{"subjects":{"description":"Team Budget Subjects","type":"object","properties":{"users":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.when.subjects.users.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.85.when.subjects.users.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.when.subjects.users.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.85.when.subjects.users.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"manifest.oneOf.85.when.subjects.users","typeLabel":"BudgetV2InNotInFilter · object"},"virtual_accounts":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.when.subjects.virtual_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.85.when.subjects.virtual_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.when.subjects.virtual_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.85.when.subjects.virtual_accounts.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"manifest.oneOf.85.when.subjects.virtual_accounts","typeLabel":"BudgetV2InNotInFilter · object"}},"title":"BudgetV2SubjectsTeamScoped","x-fern-type-name":"BudgetV2SubjectsTeamScoped","uniqueKey":"manifest.oneOf.85.when.subjects","typeLabel":"BudgetV2SubjectsTeamScoped · object"},"models":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.when.models.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.85.when.models.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.when.models.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.85.when.models.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"manifest.oneOf.85.when.models","typeLabel":"BudgetV2InNotInFilter · object"},"provider_accounts":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.when.provider_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.85.when.provider_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.when.provider_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.85.when.provider_accounts.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"manifest.oneOf.85.when.provider_accounts","typeLabel":"BudgetV2InNotInFilter · object"},"virtual_models":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.when.virtual_models.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.85.when.virtual_models.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.when.virtual_models.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.85.when.virtual_models.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"manifest.oneOf.85.when.virtual_models","typeLabel":"BudgetV2InNotInFilter · object"},"virtual_provider_accounts":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.when.virtual_provider_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.85.when.virtual_provider_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.when.virtual_provider_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.85.when.virtual_provider_accounts.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"manifest.oneOf.85.when.virtual_provider_accounts","typeLabel":"BudgetV2InNotInFilter · object"},"metadata":{"description":"Filter by metadata key-value pairs this budget applies to","type":"object","additionalProperties":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.when.metadata.additionalProperties.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.85.when.metadata.additionalProperties.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.when.metadata.additionalProperties.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.85.when.metadata.additionalProperties.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"manifest.oneOf.85.when.metadata.additionalProperties","typeLabel":"BudgetV2InNotInFilter · object"},"uniqueKey":"manifest.oneOf.85.when.metadata","typeLabel":"object"}},"title":"BudgetV2WhenTeamScoped","x-fern-type-name":"BudgetV2WhenTeamScoped","uniqueKey":"manifest.oneOf.85.when","typeLabel":"BudgetV2WhenTeamScoped · object"},"alerts":{"description":"Budget Alert","type":"object","required":["thresholds"],"properties":{"thresholds":{"description":"List of usage percentages (0-100) at which alerts should be triggered. Default thresholds are [75, 90, 95, 100].","type":"array","items":{"type":"number","minimum":0,"maximum":100,"uniqueKey":"manifest.oneOf.85.alerts.thresholds.items.[INDEX]","typeLabel":"number"},"default":[75,90,95,100],"isRequired":true,"uniqueKey":"manifest.oneOf.85.alerts.thresholds","typeLabel":"number[]"},"notification_target":{"description":"Select where to send budget alert notifications","type":"array","items":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBotWithUsers","description":"Budget-only variant. Alertmanager-backed alerts cannot resolve an email to a Slack\nuser, so `users` is kept off the shared #SlackBot.","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.2.channels","typeLabel":"string[]"},"users":{"description":"List of user emails to send direct messages to. Use {{user.email}} to message the user who breached the budget.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.2.users.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.2.users","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.2","typeLabel":"SlackBotWithUsers · object"},{"type":"object","title":"PagerDuty","description":"+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.3","typeLabel":"PagerDuty · object"},{"type":"object","title":"MSTeamsWebhook","description":"MS Teams Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=ms-teams-webhook","type":"string","enum":["ms-teams-webhook"],"default":"ms-teams-webhook","isRequired":true,"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.4.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.4","typeLabel":"MSTeamsWebhook · object"},{"type":"object","title":"Webhook","description":"Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=webhook","type":"string","enum":["webhook"],"default":"webhook","isRequired":true,"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.5.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.5","typeLabel":"Webhook · object"}],"uniqueKey":"manifest.oneOf.85.alerts.notification_target.items.[INDEX]","typeLabel":"Email · object | SlackWebhook · object | SlackBotWithUsers · object | PagerDuty · object | MSTeamsWebhook · object | Webhook · object"},"uniqueKey":"manifest.oneOf.85.alerts.notification_target","typeLabel":"(Email · object | SlackWebhook · object | SlackBotWithUsers · object | PagerDuty · object | MSTeamsWebhook · object | Webhook · object)[]"}},"title":"BudgetV2Alert","x-fern-type-name":"BudgetV2Alert","uniqueKey":"manifest.oneOf.85.alerts","typeLabel":"BudgetV2Alert · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.85","typeLabel":"TeamBudgetConfig · object"},{"type":"object","title":"GatewayOTELConfig","description":"Manifest of the resource to be created or updated","required":["type"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=gateway-otel-config\n+sort=1","type":"string","enum":["gateway-otel-config"],"default":"gateway-otel-config","isRequired":true,"uniqueKey":"manifest.oneOf.86.type","typeLabel":"enum\u003cstring>"},"otel_traces_exporter_config":{"oneOf":[{"type":"object","title":"OTELTracesExporterHttpConfig","description":"HTTP Configuration","required":["type","endpoint","encoding"],"x-fern-type-name":"OTELTracesExporterHttpConfig","properties":{"endpoint":{"description":"Endpoint URL where OpenTelemetry data will be sent","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.0.endpoint","typeLabel":"string"},"encoding":{"description":"Encoding for OpenTelemetry data","type":"string","enum":["proto","json"],"default":"proto","isRequired":true,"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.0.encoding","typeLabel":"enum\u003cstring>"},"type":{"description":"Configuration type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"HTTP headers to include in OpenTelemetry export requests","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.0.headers.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.0.headers","typeLabel":"object"},"additional_resource_attributes":{"description":"Set additional attributes to append them to existing resource attributes of every exported trace","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.0.additional_resource_attributes.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.0.additional_resource_attributes","typeLabel":"object"},"exclude_request_data":{"description":"Enable to prevent forwarding the LLM or MCP request and response body in exported traces. The following span attributes are dropped: tfy.input, tfy.output, tfy.input_short_hand","type":"boolean","uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.0.exclude_request_data","typeLabel":"boolean"},"when":{"description":"Export spans only when they match all of the following filters. Only matching on spanAttributes with string values in supported.","type":"array","items":{"description":"Filter configuration for filtering spans by attributes before exporting","type":"object","required":["field","key","operator","value"],"properties":{"field":{"description":"Type of attribute field to filter on","type":"string","enum":["spanAttributes"],"isRequired":true,"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.0.when.items.[INDEX].field","typeLabel":"enum\u003cstring>"},"key":{"description":"Key name of the span attribute to filter on","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.0.when.items.[INDEX].key","typeLabel":"string"},"operator":{"description":"Comparison operator to use for filtering","type":"string","enum":["IN"],"isRequired":true,"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.0.when.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Values","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.0.when.items.[INDEX].value.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.0.when.items.[INDEX].value","typeLabel":"string[]"}},"title":"OTELTracesExporterSpanAttributeFilter","x-fern-type-name":"OTELTracesExporterSpanAttributeFilter","uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.0.when.items.[INDEX]","typeLabel":"OTELTracesExporterSpanAttributeFilter · object"},"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.0.when","typeLabel":"OTELTracesExporterSpanAttributeFilter · object[]"}},"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.0","typeLabel":"OTELTracesExporterHttpConfig · object"},{"type":"object","title":"OTELTracesExporterGrpcConfig","description":"gRPC Configuration","required":["type","endpoint"],"x-fern-type-name":"OTELTracesExporterGrpcConfig","properties":{"endpoint":{"description":"Endpoint URL where OpenTelemetry data will be sent","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.1.endpoint","typeLabel":"string"},"type":{"description":"Configuration type","type":"string","enum":["grpc"],"default":"grpc","isRequired":true,"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"gRPC metadata to include in OpenTelemetry export requests","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.1.headers.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.1.headers","typeLabel":"object"},"additional_resource_attributes":{"description":"Set additional attributes to append them to existing resource attributes of every exported trace","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.1.additional_resource_attributes.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.1.additional_resource_attributes","typeLabel":"object"},"exclude_request_data":{"description":"Enable to prevent forwarding the LLM or MCP request and response body in exported traces. The following span attributes are dropped: tfy.input, tfy.output, tfy.input_short_hand","type":"boolean","uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.1.exclude_request_data","typeLabel":"boolean"},"when":{"description":"Export spans only when they match all of the following filters. Only matching on spanAttributes with string values in supported.","type":"array","items":{"description":"Filter configuration for filtering spans by attributes before exporting","type":"object","required":["field","key","operator","value"],"properties":{"field":{"description":"Type of attribute field to filter on","type":"string","enum":["spanAttributes"],"isRequired":true,"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.1.when.items.[INDEX].field","typeLabel":"enum\u003cstring>"},"key":{"description":"Key name of the span attribute to filter on","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.1.when.items.[INDEX].key","typeLabel":"string"},"operator":{"description":"Comparison operator to use for filtering","type":"string","enum":["IN"],"isRequired":true,"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.1.when.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Values","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.1.when.items.[INDEX].value.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.1.when.items.[INDEX].value","typeLabel":"string[]"}},"title":"OTELTracesExporterSpanAttributeFilter","x-fern-type-name":"OTELTracesExporterSpanAttributeFilter","uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.1.when.items.[INDEX]","typeLabel":"OTELTracesExporterSpanAttributeFilter · object"},"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.1.when","typeLabel":"OTELTracesExporterSpanAttributeFilter · object[]"}},"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config.oneOf.1","typeLabel":"OTELTracesExporterGrpcConfig · object"}],"uniqueKey":"manifest.oneOf.86.otel_traces_exporter_config","typeLabel":"OTELTracesExporterHttpConfig · object | OTELTracesExporterGrpcConfig · object"},"otel_metrics_exporter_config":{"oneOf":[{"type":"object","title":"OTELMetricsExporterHttpConfig","description":"HTTP Configuration","required":["type","endpoint","encoding"],"x-fern-type-name":"OTELMetricsExporterHttpConfig","properties":{"endpoint":{"description":"Endpoint URL where OpenTelemetry data will be sent","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.86.otel_metrics_exporter_config.oneOf.0.endpoint","typeLabel":"string"},"encoding":{"description":"Encoding for OpenTelemetry data","type":"string","enum":["proto","json"],"default":"proto","isRequired":true,"uniqueKey":"manifest.oneOf.86.otel_metrics_exporter_config.oneOf.0.encoding","typeLabel":"enum\u003cstring>"},"type":{"description":"Configuration type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"manifest.oneOf.86.otel_metrics_exporter_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"HTTP headers to include in OpenTelemetry export requests","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.86.otel_metrics_exporter_config.oneOf.0.headers.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.86.otel_metrics_exporter_config.oneOf.0.headers","typeLabel":"object"},"export_delta_metrics":{"description":"Export counters and histograms with delta temporality instead of cumulative. Enable this for backends such as Datadog that expect delta-encoded metrics.","type":"boolean","uniqueKey":"manifest.oneOf.86.otel_metrics_exporter_config.oneOf.0.export_delta_metrics","typeLabel":"boolean"}},"uniqueKey":"manifest.oneOf.86.otel_metrics_exporter_config.oneOf.0","typeLabel":"OTELMetricsExporterHttpConfig · object"},{"type":"object","title":"OTELMetricsExporterGrpcConfig","description":"gRPC Configuration","required":["type","endpoint"],"x-fern-type-name":"OTELMetricsExporterGrpcConfig","properties":{"endpoint":{"description":"Endpoint URL where OpenTelemetry data will be sent","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.86.otel_metrics_exporter_config.oneOf.1.endpoint","typeLabel":"string"},"type":{"description":"Configuration type","type":"string","enum":["grpc"],"default":"grpc","isRequired":true,"uniqueKey":"manifest.oneOf.86.otel_metrics_exporter_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"gRPC metadata to include in OpenTelemetry export requests","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.86.otel_metrics_exporter_config.oneOf.1.headers.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.86.otel_metrics_exporter_config.oneOf.1.headers","typeLabel":"object"},"export_delta_metrics":{"description":"Export counters and histograms with delta temporality instead of cumulative. Enable this for backends such as Datadog that expect delta-encoded metrics.","type":"boolean","uniqueKey":"manifest.oneOf.86.otel_metrics_exporter_config.oneOf.1.export_delta_metrics","typeLabel":"boolean"}},"uniqueKey":"manifest.oneOf.86.otel_metrics_exporter_config.oneOf.1","typeLabel":"OTELMetricsExporterGrpcConfig · object"}],"uniqueKey":"manifest.oneOf.86.otel_metrics_exporter_config","typeLabel":"OTELMetricsExporterHttpConfig · object | OTELMetricsExporterGrpcConfig · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.86","typeLabel":"GatewayOTELConfig · object"},{"type":"object","title":"GatewayMetadataConfig","description":"Manifest of the resource to be created or updated","required":["name","type","rules"],"x-fern-type-name":"GatewayConfig","properties":{"name":{"description":"Name of the metadata configuration","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.87.name","typeLabel":"string"},"type":{"description":"+value=gateway-metadata-config\n+sort=2","type":"string","enum":["gateway-metadata-config"],"default":"gateway-metadata-config","isRequired":true,"uniqueKey":"manifest.oneOf.87.type","typeLabel":"enum\u003cstring>"},"rules":{"description":"List of metadata rules","type":"array","items":{"description":"Metadata Rule","type":"object","required":["id","when","metadata_override"],"properties":{"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.87.rules.items.[INDEX].id","typeLabel":"string"},"when":{"description":"Rule Conditions","type":"object","properties":{"subjects":{"description":"List of subjects that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.87.rules.items.[INDEX].when.subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.87.rules.items.[INDEX].when.subjects","typeLabel":"string[]"}},"title":"GatewayMetadataWhen","x-fern-type-name":"GatewayMetadataWhen","isRequired":true,"uniqueKey":"manifest.oneOf.87.rules.items.[INDEX].when","typeLabel":"GatewayMetadataWhen · object"},"metadata_override":{"description":"Metadata key-value pairs to override in the request metadata","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.87.rules.items.[INDEX].metadata_override.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.87.rules.items.[INDEX].metadata_override","typeLabel":"object"}},"title":"GatewayMetadataRule","x-fern-type-name":"GatewayMetadataRule","uniqueKey":"manifest.oneOf.87.rules.items.[INDEX]","typeLabel":"GatewayMetadataRule · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.87.rules","typeLabel":"GatewayMetadataRule · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.87","typeLabel":"GatewayMetadataConfig · object"},{"type":"object","title":"GlobalSettings","description":"Manifest of the resource to be created or updated","required":["type"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=gateway-global-settings\n+sort=2","type":"string","enum":["gateway-global-settings"],"default":"gateway-global-settings","isRequired":true,"uniqueKey":"manifest.oneOf.88.type","typeLabel":"enum\u003cstring>"},"retry_settings":{"type":"object","required":["attempts"],"properties":{"attempts":{"description":"Number of attempts to retry the request","type":"integer","minimum":0,"isRequired":true,"uniqueKey":"manifest.oneOf.88.retry_settings.attempts","typeLabel":"integer"},"delay":{"description":"Delay between retries in milliseconds","type":"integer","minimum":0,"exclusiveMinimum":true,"default":100,"uniqueKey":"manifest.oneOf.88.retry_settings.delay","typeLabel":"integer"},"on_status_codes":{"description":"Status codes to retry on","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.88.retry_settings.on_status_codes.items.[INDEX]","typeLabel":"string"},"default":["429","500","502","503"],"uniqueKey":"manifest.oneOf.88.retry_settings.on_status_codes","typeLabel":"string[]"}},"title":"RetryConfig","x-fern-type-name":"RetryConfig","uniqueKey":"manifest.oneOf.88.retry_settings","typeLabel":"RetryConfig · object"},"logging_settings":{"oneOf":[{"type":"object","title":"LoggingModeAlways","description":"Enable this mode to log request and response bodies for all incoming gateway requests, ignoring request headers. Use it for in-depth logging required for debugging, compliance, or auditing.","required":["type"],"x-fern-type-name":"LoggingMode","properties":{"type":{"description":"+value=always","type":"string","enum":["always"],"default":"always","isRequired":true,"uniqueKey":"manifest.oneOf.88.logging_settings.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.88.logging_settings.oneOf.0","typeLabel":"LoggingModeAlways · object"},{"type":"object","title":"LoggingModeNever","description":"Enable this mode to disable request and response body logging for all gateway requests, regardless of headers. Request metadata and headers are still logged, but body content is excluded.","required":["type"],"x-fern-type-name":"LoggingMode","properties":{"type":{"description":"+value=never","type":"string","enum":["never"],"default":"never","isRequired":true,"uniqueKey":"manifest.oneOf.88.logging_settings.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.88.logging_settings.oneOf.1","typeLabel":"LoggingModeNever · object"},{"type":"object","title":"LoggingModeHeaderControlled","description":"Enable this mode to allow per-request control of request body logging via HTTP headers. Individual requests can opt in or opt out of body logging using specific headers.","required":["type","log_body_by_default"],"x-fern-type-name":"LoggingMode","properties":{"type":{"description":"+value=header_controlled","type":"string","enum":["header_controlled"],"default":"header_controlled","isRequired":true,"uniqueKey":"manifest.oneOf.88.logging_settings.oneOf.2.type","typeLabel":"enum\u003cstring>"},"log_body_by_default":{"description":"Sets the default body logging behaviour when no header is present. Enabling it will log requests by default and clients can opt out. Disabling it will NOT log by default and clients can opt in to log requests.","type":"boolean","isRequired":true,"uniqueKey":"manifest.oneOf.88.logging_settings.oneOf.2.log_body_by_default","typeLabel":"boolean"}},"uniqueKey":"manifest.oneOf.88.logging_settings.oneOf.2","typeLabel":"LoggingModeHeaderControlled · object"}],"uniqueKey":"manifest.oneOf.88.logging_settings","typeLabel":"LoggingModeAlways · object | LoggingModeNever · object | LoggingModeHeaderControlled · object"},"semantic_cache_settings":{"description":"Semantic Cache Settings","type":"object","required":["semantic_cache_embedding_model"],"properties":{"semantic_cache_embedding_model":{"description":"Select the embedding model to use for semantic caching across the gateway. This model will be used to generate embeddings for cache lookups when semantic caching is enabled. The embedding model helps identify semantically similar requests to serve cached responses, improving performance for similar queries.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.88.semantic_cache_settings.semantic_cache_embedding_model","typeLabel":"string"}},"title":"SemanticCacheSettings","x-fern-type-name":"SemanticCacheSettings","uniqueKey":"manifest.oneOf.88.semantic_cache_settings","typeLabel":"SemanticCacheSettings · object"},"guardrail_settings":{"description":"Guardrail Settings","type":"object","properties":{"timeout_ms":{"description":"Maximum time in milliseconds the gateway waits for a guardrail provider to respond before timing out the call. Increase this value if guardrails are being invoked on large payloads (e.g. big files) and frequently exceed the default timeout. Applies to all guardrail integrations for this tenant. When unset, the gateway falls back to its built-in default (5000ms) or the GUARDRAIL_TIMEOUT_MS environment variable on the gateway instance.","type":"integer","minimum":1,"uniqueKey":"manifest.oneOf.88.guardrail_settings.timeout_ms","typeLabel":"integer"},"enable_parallel_execution":{"description":"Controls whether input guardrails run in parallel with the model request or sequentially before it. When enabled (default), input guardrails are dispatched concurrently with the model request which lowers user-perceived latency but may invoke the model with payloads that a guardrail later rejects. Disable to force input guardrails to fully complete before the model is called, ensuring no wasted model invocations at the cost of additional latency. This sets the tenant-wide default and can still be overridden per-request via the x-tfy-guardrails header.","type":"boolean","uniqueKey":"manifest.oneOf.88.guardrail_settings.enable_parallel_execution","typeLabel":"boolean"}},"title":"GuardrailSettings","x-fern-type-name":"GuardrailSettings","uniqueKey":"manifest.oneOf.88.guardrail_settings","typeLabel":"GuardrailSettings · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.88","typeLabel":"GlobalSettings · object"},{"type":"object","title":"GatewayDataAccessConfig","description":"Manifest of the resource to be created or updated","required":["type","rules"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=gateway-data-access-config\n+sort=1","type":"string","enum":["gateway-data-access-config"],"default":"gateway-data-access-config","isRequired":true,"uniqueKey":"manifest.oneOf.89.type","typeLabel":"enum\u003cstring>"},"rules":{"description":"List of data access rules","type":"array","items":{"oneOf":[{"type":"object","title":"OwnDataAccessRule","description":"Own Data","required":["scope","id","subjects","data_types"],"x-fern-type-name":"DataAccessRule","properties":{"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[A-Za-z{}][A-Za-z0-9{}._-]{0,60}[A-Za-z0-9{}._]$","isRequired":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.0.id","typeLabel":"string"},"subjects":{"description":"List of subjects that this rule applies to (users, teams, roles)","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.0.subjects.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.0.subjects","typeLabel":"string[]"},"data_types":{"description":"List of data types that this rule applies to","type":"array","items":{"type":"string","enum":["traces","metrics"],"title":"GatewayDataType","x-fern-type-name":"GatewayDataType","uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.0.data_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["traces","metrics"],"isRequired":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.0.data_types","typeLabel":"enum\u003cstring>[]"},"scope":{"description":"Data access scope - access to own data only","type":"string","enum":["own_data"],"isRequired":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.0.scope","typeLabel":"enum\u003cstring>"},"description":{"description":"Description of the rule","type":"string","uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.0.description","typeLabel":"string"},"enabled":{"description":"Whether this rule is enabled","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.0.enabled","typeLabel":"boolean"}},"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.0","typeLabel":"OwnDataAccessRule · object"},{"type":"object","title":"TeamDataAccessRule","description":"Team Data","required":["scope","id","subjects","data_types"],"x-fern-type-name":"DataAccessRule","properties":{"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[A-Za-z{}][A-Za-z0-9{}._-]{0,60}[A-Za-z0-9{}._]$","isRequired":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.1.id","typeLabel":"string"},"subjects":{"description":"List of subjects that this rule applies to (users, teams, roles)","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.1.subjects.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.1.subjects","typeLabel":"string[]"},"data_types":{"description":"List of data types that this rule applies to","type":"array","items":{"type":"string","enum":["traces","metrics"],"title":"GatewayDataType","x-fern-type-name":"GatewayDataType","uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.1.data_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["traces","metrics"],"isRequired":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.1.data_types","typeLabel":"enum\u003cstring>[]"},"scope":{"description":"Data access scope - access to data created by teammates and by virtual accounts owned by the team","type":"string","enum":["team_data"],"isRequired":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.1.scope","typeLabel":"enum\u003cstring>"},"description":{"description":"Description of the rule","type":"string","uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.1.description","typeLabel":"string"},"enabled":{"description":"Whether this rule is enabled","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.1.enabled","typeLabel":"boolean"}},"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.1","typeLabel":"TeamDataAccessRule · object"},{"type":"object","title":"TeamVirtualAccountDataAccessRule","description":"Team Applications Data","required":["scope","id","subjects","data_types"],"x-fern-type-name":"DataAccessRule","properties":{"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[A-Za-z{}][A-Za-z0-9{}._-]{0,60}[A-Za-z0-9{}._]$","isRequired":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.2.id","typeLabel":"string"},"subjects":{"description":"List of subjects that this rule applies to (users, teams, roles)","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.2.subjects.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.2.subjects","typeLabel":"string[]"},"data_types":{"description":"List of data types that this rule applies to","type":"array","items":{"type":"string","enum":["traces","metrics"],"title":"GatewayDataType","x-fern-type-name":"GatewayDataType","uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.2.data_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["traces","metrics"],"isRequired":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.2.data_types","typeLabel":"enum\u003cstring>[]"},"scope":{"description":"Data access scope - access only to data created by virtual accounts owned by the team","type":"string","enum":["team_virtual_account_data"],"isRequired":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.2.scope","typeLabel":"enum\u003cstring>"},"description":{"description":"Description of the rule","type":"string","uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.2.description","typeLabel":"string"},"enabled":{"description":"Whether this rule is enabled","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.2.enabled","typeLabel":"boolean"}},"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.2","typeLabel":"TeamVirtualAccountDataAccessRule · object"},{"type":"object","title":"AllDataAccessRule","description":"All Data","required":["scope","id","subjects","data_types"],"x-fern-type-name":"DataAccessRule","properties":{"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[A-Za-z{}][A-Za-z0-9{}._-]{0,60}[A-Za-z0-9{}._]$","isRequired":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.3.id","typeLabel":"string"},"subjects":{"description":"List of subjects that this rule applies to (users, teams, roles)","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.3.subjects.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.3.subjects","typeLabel":"string[]"},"data_types":{"description":"List of data types that this rule applies to","type":"array","items":{"type":"string","enum":["traces","metrics"],"title":"GatewayDataType","x-fern-type-name":"GatewayDataType","uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.3.data_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["traces","metrics"],"isRequired":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.3.data_types","typeLabel":"enum\u003cstring>[]"},"scope":{"description":"Data access scope - access to all data with optional filters","type":"string","enum":["all_data"],"isRequired":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.3.scope","typeLabel":"enum\u003cstring>"},"description":{"description":"Description of the rule","type":"string","uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.3.description","typeLabel":"string"},"enabled":{"description":"Whether this rule is enabled","type":"boolean","default":true,"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.3.enabled","typeLabel":"boolean"},"filters":{"description":"Optional filters to restrict data access (only applicable for all_data scope)","type":"array","items":{"type":"any","uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.3.filters.items.[INDEX]","typeLabel":"any"},"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.3.filters","typeLabel":"any[]"}},"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX].oneOf.3","typeLabel":"AllDataAccessRule · object"}],"uniqueKey":"manifest.oneOf.89.rules.items.[INDEX]","typeLabel":"OwnDataAccessRule · object | TeamDataAccessRule · object | TeamVirtualAccountDataAccessRule · object | AllDataAccessRule · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.89.rules","typeLabel":"(OwnDataAccessRule · object | TeamDataAccessRule · object | TeamVirtualAccountDataAccessRule · object | AllDataAccessRule · object)[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.89","typeLabel":"GatewayDataAccessConfig · object"},{"type":"object","title":"GatewayDataRoutingConfig","description":"Manifest of the resource to be created or updated","required":["type","default"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"Type of configuration","type":"string","enum":["gateway-data-routing-config"],"default":"gateway-data-routing-config","isRequired":true,"uniqueKey":"manifest.oneOf.90.type","typeLabel":"enum\u003cstring>"},"default":{"type":"object","required":["storage"],"properties":{"storage":{"oneOf":[{"type":"object","title":"GatewayDataRoutingConfigDestinationControlPlaneManagedStorage","description":"Managed Storage in Control-Plane.","default":{"type":"controlplane-managed"},"required":["type"],"x-fern-type-name":"GatewayDataRoutingConfigDestinationControlPlaneManagedStorage","properties":{"type":{"description":"Type of storage configuration","type":"string","enum":["controlplane-managed"],"default":"controlplane-managed","isRequired":true,"uniqueKey":"manifest.oneOf.90.default.storage.oneOf.0.type","typeLabel":"enum\u003cstring>"},"region":{"description":"Specifies the region where control plane–managed storage is located.","type":"string","enum":["us","australia","india"],"uniqueKey":"manifest.oneOf.90.default.storage.oneOf.0.region","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"manifest.oneOf.90.default.storage.oneOf.0","typeLabel":"GatewayDataRoutingConfigDestinationControlPlaneManagedStorage · object"},{"type":"object","title":"GatewayDataRoutingConfigDestinationCustomerManagedStorage","description":"Bring your own storage.","default":{"type":"controlplane-managed"},"required":["type","storage_integration_fqn"],"x-fern-type-name":"GatewayDataRoutingConfigDestinationCustomerManagedStorage","properties":{"type":{"description":"Type of storage configuration","type":"string","enum":["customer-managed"],"default":"customer-managed","isRequired":true,"uniqueKey":"manifest.oneOf.90.default.storage.oneOf.1.type","typeLabel":"enum\u003cstring>"},"storage_integration_fqn":{"description":"Storage Integration FQN to store traces and spans. A storage integration represents a connected blob storage like AWS S3 / Azure Blob Storage / Google Cloud Storage.","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._:-]*[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.90.default.storage.oneOf.1.storage_integration_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.90.default.storage.oneOf.1","typeLabel":"GatewayDataRoutingConfigDestinationCustomerManagedStorage · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.90.default.storage","typeLabel":"GatewayDataRoutingConfigDestinationControlPlaneManagedStorage · object | GatewayDataRoutingConfigDestinationCustomerManagedStorage · object"},"traces_retention_period_days":{"description":"Number of days to retain traces (this does not affect metrics storage)","type":"integer","minimum":7,"uniqueKey":"manifest.oneOf.90.default.traces_retention_period_days","typeLabel":"integer"},"metrics_retention_period_days":{"description":"Number of days to retain metrics (this does not affect traces storage)","type":"integer","minimum":7,"uniqueKey":"manifest.oneOf.90.default.metrics_retention_period_days","typeLabel":"integer"}},"title":"GatewayDataRoutingConfigDestinationStorage","x-fern-type-name":"GatewayDataRoutingConfigDestinationStorage","isRequired":true,"uniqueKey":"manifest.oneOf.90.default","typeLabel":"GatewayDataRoutingConfigDestinationStorage · object"},"destinations":{"description":"List of conditional routing destinations","type":"array","items":{"type":"object","title":"GatewayDataRoutingConfigDestination","description":"Destination for data routing based on conditions.","required":["name","enabled","when","storage"],"x-fern-type-name":"GatewayDataRoutingConfigDestination","properties":{"storage":{"oneOf":[{"type":"object","title":"GatewayDataRoutingConfigDestinationControlPlaneManagedStorage","description":"Managed Storage in Control-Plane.","default":{"type":"controlplane-managed"},"required":["type"],"x-fern-type-name":"GatewayDataRoutingConfigDestinationControlPlaneManagedStorage","properties":{"type":{"description":"Type of storage configuration","type":"string","enum":["controlplane-managed"],"default":"controlplane-managed","isRequired":true,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].storage.oneOf.0.type","typeLabel":"enum\u003cstring>"},"region":{"description":"Specifies the region where control plane–managed storage is located.","type":"string","enum":["us","australia","india"],"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].storage.oneOf.0.region","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].storage.oneOf.0","typeLabel":"GatewayDataRoutingConfigDestinationControlPlaneManagedStorage · object"},{"type":"object","title":"GatewayDataRoutingConfigDestinationCustomerManagedStorage","description":"Bring your own storage.","default":{"type":"controlplane-managed"},"required":["type","storage_integration_fqn"],"x-fern-type-name":"GatewayDataRoutingConfigDestinationCustomerManagedStorage","properties":{"type":{"description":"Type of storage configuration","type":"string","enum":["customer-managed"],"default":"customer-managed","isRequired":true,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].storage.oneOf.1.type","typeLabel":"enum\u003cstring>"},"storage_integration_fqn":{"description":"Storage Integration FQN to store traces and spans. A storage integration represents a connected blob storage like AWS S3 / Azure Blob Storage / Google Cloud Storage.","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._:-]*[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].storage.oneOf.1.storage_integration_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].storage.oneOf.1","typeLabel":"GatewayDataRoutingConfigDestinationCustomerManagedStorage · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].storage","typeLabel":"GatewayDataRoutingConfigDestinationControlPlaneManagedStorage · object | GatewayDataRoutingConfigDestinationCustomerManagedStorage · object"},"name":{"description":"Name for the destination","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].name","typeLabel":"string"},"enabled":{"description":"Whether this destination is enabled","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].enabled","typeLabel":"boolean"},"when":{"description":"Conditions that must be met to use this destination","type":"array","items":{"oneOf":[{"type":"object","title":"GatewayDataRoutingConfigDestinationMetadataCondition","description":"Metadata condition for data routing destinations.","required":["field","key","operator","value"],"x-fern-type-name":"GatewayDataRoutingConfigDestinationCondition","properties":{"field":{"description":"Field to evaluate the condition on","type":"string","enum":["metadata"],"isRequired":true,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.0.field","typeLabel":"enum\u003cstring>"},"key":{"description":"Metadata key to match","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.0.key","typeLabel":"string"},"operator":{"description":"Operator to use for comparison","type":"string","enum":["IN"],"isRequired":true,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.0.operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Value to compare against","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.0.value.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.0.value","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.0","typeLabel":"GatewayDataRoutingConfigDestinationMetadataCondition · object"},{"type":"object","title":"GatewayDataRoutingConfigDestinationCreatedByCondition","description":"Created by condition for data routing destinations.","required":["field","operator","value"],"x-fern-type-name":"GatewayDataRoutingConfigDestinationCondition","properties":{"field":{"description":"Field to evaluate the condition on","type":"string","enum":["created_by"],"isRequired":true,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.1.field","typeLabel":"enum\u003cstring>"},"operator":{"description":"Operator to use for comparison","type":"string","enum":["IN"],"isRequired":true,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.1.operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Value to compare against","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.1.value.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.1.value","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.1","typeLabel":"GatewayDataRoutingConfigDestinationCreatedByCondition · object"}],"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX]","typeLabel":"GatewayDataRoutingConfigDestinationMetadataCondition · object | GatewayDataRoutingConfigDestinationCreatedByCondition · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].when","typeLabel":"(GatewayDataRoutingConfigDestinationMetadataCondition · object | GatewayDataRoutingConfigDestinationCreatedByCondition · object)[]"},"traces_retention_period_days":{"description":"Number of days to retain traces (this does not affect metrics storage)","type":"integer","minimum":7,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].traces_retention_period_days","typeLabel":"integer"},"metrics_retention_period_days":{"description":"Number of days to retain metrics (this does not affect traces storage)","type":"integer","minimum":7,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].metrics_retention_period_days","typeLabel":"integer"},"description":{"description":"Description of the destination","type":"string","minLength":1,"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.90.destinations.items.[INDEX]","typeLabel":"GatewayDataRoutingConfigDestination · object"},"uniqueKey":"manifest.oneOf.90.destinations","typeLabel":"GatewayDataRoutingConfigDestination · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.90","typeLabel":"GatewayDataRoutingConfig · object"},{"type":"object","title":"GatewayLoggingConfig","description":"Manifest of the resource to be created or updated","required":["type","name","log"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=gateway-logging-config\n+sort=1","type":"string","enum":["gateway-logging-config"],"default":"gateway-logging-config","isRequired":true,"uniqueKey":"manifest.oneOf.91.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique name for this logging configuration","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"manifest.oneOf.91.name","typeLabel":"string"},"log":{"description":"Whether requests matched by this config should be logged.","type":"boolean","isRequired":true,"uniqueKey":"manifest.oneOf.91.log","typeLabel":"boolean"},"when":{"description":"Conditions","type":"object","properties":{"subjects":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list. Absent or [\"*\"] means all.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.91.when.subjects.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.91.when.subjects.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list. A value listed here never matches.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.91.when.subjects.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.91.when.subjects.not_in","typeLabel":"string[]"}},"title":"InNotIn","x-fern-type-name":"InNotIn","uniqueKey":"manifest.oneOf.91.when.subjects","typeLabel":"InNotIn · object"},"models":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list. Absent or [\"*\"] means all.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.91.when.models.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.91.when.models.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list. A value listed here never matches.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.91.when.models.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.91.when.models.not_in","typeLabel":"string[]"}},"title":"InNotIn","x-fern-type-name":"InNotIn","uniqueKey":"manifest.oneOf.91.when.models","typeLabel":"InNotIn · object"},"mcp_servers":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list. Absent or [\"*\"] means all.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.91.when.mcp_servers.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.91.when.mcp_servers.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list. A value listed here never matches.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.91.when.mcp_servers.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.91.when.mcp_servers.not_in","typeLabel":"string[]"}},"title":"InNotIn","x-fern-type-name":"InNotIn","uniqueKey":"manifest.oneOf.91.when.mcp_servers","typeLabel":"InNotIn · object"},"metadata":{"description":"Metadata key-value pairs this config applies to (exact match)","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.91.when.metadata.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.91.when.metadata","typeLabel":"object"}},"title":"LoggingWhen","x-fern-type-name":"LoggingWhen","uniqueKey":"manifest.oneOf.91.when","typeLabel":"LoggingWhen · object"},"redact_with":{"description":"Redaction","type":"object","properties":{"presets":{"description":"Predefined patterns to redact from the logged copy.","type":"array","items":{"type":"string","enum":["us_ssn","us_ssn_no_dash","email","us_phone","india_aadhaar","india_pan","visa","mastercard","amex","discover","credit_card","aws_access_key","aws_secret_key","github_token","slack_token","generic_api_key","ipv4","ipv6","url","passport_us","passport_uk","passport_germany","passport_france","passport_netherlands","passport_canada","passport_india","passport_australia","passport_china","passport_japan","gender_sexual_orientation","race_ethnicity_national_origin","religion","age_discrimination","disability","marital_family_status","military_status","public_assistance","weapons_firearms","weapons_other","explosives","violence_threats","terrorism","self_harm_suicide","illegal_activities","harassment_hate"],"title":"PresetRegexPatternEnum","x-fern-type-name":"PresetRegexPatternEnum","uniqueKey":"manifest.oneOf.91.redact_with.presets.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"manifest.oneOf.91.redact_with.presets","typeLabel":"enum\u003cstring>[]"},"custom_patterns":{"description":"Custom patterns to redact from the logged copy.","type":"array","items":{"description":"Custom Regex Pattern","type":"object","required":["pattern"],"properties":{"pattern":{"description":"A custom regex pattern to match against content (e.g., \"\\\\b\\\\d{3}-\\\\d{2}-\\\\d{4}\\\\b\" for SSN)","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.91.redact_with.custom_patterns.items.[INDEX].pattern","typeLabel":"string"},"redaction_text":{"description":"Text to use when redacting matched content (only applicable in mutate mode). Defaults to '[REDACTED]'.","type":"string","default":"[REDACTED]","uniqueKey":"manifest.oneOf.91.redact_with.custom_patterns.items.[INDEX].redaction_text","typeLabel":"string"}},"title":"CustomRegexPattern","x-fern-type-name":"CustomRegexPattern","uniqueKey":"manifest.oneOf.91.redact_with.custom_patterns.items.[INDEX]","typeLabel":"CustomRegexPattern · object"},"uniqueKey":"manifest.oneOf.91.redact_with.custom_patterns","typeLabel":"CustomRegexPattern · object[]"}},"title":"Redaction","x-fern-type-name":"Redaction","uniqueKey":"manifest.oneOf.91.redact_with","typeLabel":"Redaction · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.91","typeLabel":"GatewayLoggingConfig · object"},{"type":"object","title":"TeamManifest","description":"Manifest of the resource to be created or updated","required":["type","name"],"x-fern-type-name":"TeamManifest","properties":{"type":{"description":"+value=team","type":"string","enum":["team"],"default":"team","isRequired":true,"uniqueKey":"manifest.oneOf.92.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Team","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9_-]{1,48}[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.92.name","typeLabel":"string"},"displayName":{"description":"A human-readable label for the team in the UI. If omitted, the team name is shown.","type":"string","maxLength":128,"uniqueKey":"manifest.oneOf.92.displayName","typeLabel":"string"},"description":{"description":"A short description of the team and its purpose.","type":"string","maxLength":1024,"uniqueKey":"manifest.oneOf.92.description","typeLabel":"string"},"managers":{"description":"Emails of each of the user who can manage the members of the team. Any tenant admin is by default a team manager. Still applied from YAML/manifests when present; omit to leave managers unchanged. Dedicated manager endpoints are also available.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.92.managers.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.92.managers","typeLabel":"string[]"},"members":{"description":"Enter email of each user to add to the team. Use an empty list for a team with no members yet. Still applied from YAML/manifests when present; omit to leave membership unchanged. Dedicated member endpoints are also available.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.92.members.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.92.members","typeLabel":"string[]"},"ownedBy":{"description":"Names of the owners that own the team","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns the team","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.92.ownedBy.account","typeLabel":"string"}},"title":"TeamOwnedBy","x-fern-type-name":"TeamOwnedBy","uniqueKey":"manifest.oneOf.92.ownedBy","typeLabel":"TeamOwnedBy · object"},"tags":{"description":"Key-value pairs to categorize this Team (e.g., by owner or environment).","type":"object","uniqueKey":"manifest.oneOf.92.tags","typeLabel":"object"},"identity_provider_mapping":{"description":"Mappings from external identity provider claim value to this team","type":"array","items":{"description":"Map specific claim values from an external IdP token (e.g., Okta, Azure AD) to this agent identity.","type":"object","required":["identity_provider"],"properties":{"identity_provider":{"description":"Must already be configured under Platform → Identity Providers. Choosing a SPIRE provider means this agent's credential is an attested JWT-SVID from its runtime.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.92.identity_provider_mapping.items.[INDEX].identity_provider","typeLabel":"string"},"value":{"description":"The value that must appear in the subject claim of the IdP token for this mapping to match. For example, a service account email or a group name.","type":"string","uniqueKey":"manifest.oneOf.92.identity_provider_mapping.items.[INDEX].value","typeLabel":"string"},"claims":{"description":"Add a subject key and the value that must match on the token. The keys shown are required for this provider.","type":"object","additionalProperties":{"type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.92.identity_provider_mapping.items.[INDEX].claims.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.92.identity_provider_mapping.items.[INDEX].claims","typeLabel":"object"}},"title":"IdentityProviderMapping","x-fern-type-name":"IdentityProviderMapping","uniqueKey":"manifest.oneOf.92.identity_provider_mapping.items.[INDEX]","typeLabel":"IdentityProviderMapping · object"},"uniqueKey":"manifest.oneOf.92.identity_provider_mapping","typeLabel":"IdentityProviderMapping · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.92","typeLabel":"TeamManifest · object"},{"type":"object","title":"PolicyManifest","description":"Manifest of the resource to be created or updated","required":["type","name","description","operation","mode","entities","actions","code"],"x-fern-type-name":"PolicyManifest","properties":{"type":{"description":"+value=policy","type":"string","enum":["policy"],"default":"policy","isRequired":true,"uniqueKey":"manifest.oneOf.93.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique identifier of the policy across the organisation","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.93.name","typeLabel":"string"},"description":{"description":"Description of the policy that explains what the policy does, its purpose, and how it affects resources. This helps other users understand the policy's behavior and impact.","type":"string","minLength":1,"maxLength":1024,"isRequired":true,"uniqueKey":"manifest.oneOf.93.description","typeLabel":"string"},"operation":{"oneOf":[{"type":"object","title":"PolicyMutationOperation","description":"Mutate","default":{"type":"validate"},"required":["type","order"],"x-fern-type-name":"PolicyMutationOperation","properties":{"type":{"description":"Mutates or Validates Resources","type":"string","enum":["mutate"],"default":"mutate","isRequired":true,"uniqueKey":"manifest.oneOf.93.operation.oneOf.0.type","typeLabel":"enum\u003cstring>"},"order":{"description":"Determines the sequence in which mutation policies are executed. Policies with lower order value run first, followed by higher value. For example, a policy with order 10 runs before one with order 20. This is crucial when multiple mutation policies need to run in a specific sequence. The order must be between 1 and 100.","type":"integer","minimum":1,"maximum":100,"isRequired":true,"uniqueKey":"manifest.oneOf.93.operation.oneOf.0.order","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"manifest.oneOf.93.operation.oneOf.0","typeLabel":"PolicyMutationOperation · object"},{"type":"object","title":"PolicyValidationOperation","description":"Validate","default":{"type":"validate"},"required":["type"],"x-fern-type-name":"PolicyValidationOperation","properties":{"type":{"description":"Mutates or Validates Resources","type":"string","enum":["validate"],"default":"validate","isRequired":true,"uniqueKey":"manifest.oneOf.93.operation.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"manifest.oneOf.93.operation.oneOf.1","typeLabel":"PolicyValidationOperation · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.93.operation","typeLabel":"PolicyMutationOperation · object | PolicyValidationOperation · object"},"mode":{"description":"Mode of the policy: `Audit` logs all policy evaluations without blocking deployments. `Enforce` blocks deployments if the policy fails. `Disabled` deactivates the policy.","type":"string","enum":["audit","enforce","disabled"],"isRequired":true,"uniqueKey":"manifest.oneOf.93.mode","typeLabel":"enum\u003cstring>"},"entities":{"description":"Types of applications this policy applies to","type":"array","items":{"type":"string","enum":["service","async-service","job","notebook","ssh-server","workflow","helm","volume","spark-job"],"title":"PolicyEntityTypes","x-fern-type-name":"PolicyEntityTypes","uniqueKey":"manifest.oneOf.93.entities.items.[INDEX]","typeLabel":"enum\u003cstring>"},"isRequired":true,"uniqueKey":"manifest.oneOf.93.entities","typeLabel":"enum\u003cstring>[]"},"actions":{"description":"Actions this policy applies to","type":"array","items":{"type":"string","enum":["apply"],"title":"PolicyActions","x-fern-type-name":"PolicyActions","uniqueKey":"manifest.oneOf.93.actions.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["apply"],"isRequired":true,"uniqueKey":"manifest.oneOf.93.actions","typeLabel":"enum\u003cstring>[]"},"code":{"description":"TypeScript code for Policy logic. To write and test your policy code, please refer to this [repository](https://github.com/truefoundry/tfy-typescript-policy)","type":"string","minLength":1,"maxLength":10240,"isRequired":true,"uniqueKey":"manifest.oneOf.93.code","typeLabel":"string"},"filters":{"description":"Filters","type":"object","properties":{"cluster_names":{"description":"Cluster names where Policy applies","type":"array","items":{"type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","uniqueKey":"manifest.oneOf.93.filters.cluster_names.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.93.filters.cluster_names","typeLabel":"string[]"},"workspace_names":{"description":"Workspace names where Policy applies","type":"array","items":{"type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","uniqueKey":"manifest.oneOf.93.filters.workspace_names.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.93.filters.workspace_names","typeLabel":"string[]"},"env_names":{"description":"Environment names where Policy applies","type":"array","items":{"type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","uniqueKey":"manifest.oneOf.93.filters.env_names.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.93.filters.env_names","typeLabel":"string[]"}},"title":"PolicyFilters","x-fern-type-name":"PolicyFilters","uniqueKey":"manifest.oneOf.93.filters","typeLabel":"PolicyFilters · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.93","typeLabel":"PolicyManifest · object"},{"type":"object","title":"RoleManifest","description":"Manifest of the resource to be created or updated","required":["type","name","displayName","description","resourceType","permissions"],"x-fern-type-name":"RoleManifest","properties":{"type":{"description":"+value=role","type":"string","enum":["role"],"default":"role","isRequired":true,"uniqueKey":"manifest.oneOf.94.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique identifier of the role across the organization","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,33}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.94.name","typeLabel":"string"},"displayName":{"description":"Human-readable name for the role","type":"string","minLength":1,"maxLength":255,"isRequired":true,"uniqueKey":"manifest.oneOf.94.displayName","typeLabel":"string"},"description":{"description":"Description of the role that explains its purpose and permissions","type":"string","minLength":1,"maxLength":1024,"isRequired":true,"uniqueKey":"manifest.oneOf.94.description","typeLabel":"string"},"resourceType":{"description":"Type of resource this role applies to","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.94.resourceType","typeLabel":"string"},"permissions":{"description":"Define the resource type and the corresponding actions this role can perform on the resource","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.94.permissions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.94.permissions","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.94","typeLabel":"RoleManifest · object"},{"type":"object","title":"AlertConfig","description":"Manifest of the resource to be created or updated","required":["type","name","resource","notification_targets","rules"],"x-fern-type-name":"AlertConfig","properties":{"type":{"description":"Type","type":"string","enum":["alert-config"],"default":"alert-config","isRequired":true,"uniqueKey":"manifest.oneOf.95.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name - 3 to 35 lower case characters long alphanumeric word, may contain - in between, cannot start with a number","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,33}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.95.name","typeLabel":"string"},"resource":{"type":"object","required":["type","fqn"],"properties":{"type":{"description":"The type of resource this alert config belongs to. Can be either an application or a cluster.","type":"string","enum":["application","cluster"],"isRequired":true,"uniqueKey":"manifest.oneOf.95.resource.type","typeLabel":"enum\u003cstring>"},"fqn":{"description":"FQN of the resource this alert config belongs to.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.95.resource.fqn","typeLabel":"string"}},"title":"AlertConfigResource","x-fern-type-name":"AlertConfigResource","isRequired":true,"uniqueKey":"manifest.oneOf.95.resource","typeLabel":"AlertConfigResource · object"},"notification_targets":{"description":"Configure one or more notification targets where alerts will be sent. Each target specifies a notification channel (email or slack).","type":"array","items":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"manifest.oneOf.95.notification_targets.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.95.notification_targets.items.[INDEX].oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.95.notification_targets.items.[INDEX].oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.95.notification_targets.items.[INDEX].oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.95.notification_targets.items.[INDEX].oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"manifest.oneOf.95.notification_targets.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.95.notification_targets.items.[INDEX].oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.95.notification_targets.items.[INDEX].oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBot","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"manifest.oneOf.95.notification_targets.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.95.notification_targets.items.[INDEX].oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"manifest.oneOf.95.notification_targets.items.[INDEX].oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.95.notification_targets.items.[INDEX].oneOf.2.channels","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.95.notification_targets.items.[INDEX].oneOf.2","typeLabel":"SlackBot · object"},{"type":"object","title":"PagerDuty","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"manifest.oneOf.95.notification_targets.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.95.notification_targets.items.[INDEX].oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.95.notification_targets.items.[INDEX].oneOf.3","typeLabel":"PagerDuty · object"}],"uniqueKey":"manifest.oneOf.95.notification_targets.items.[INDEX]","typeLabel":"Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.95.notification_targets","typeLabel":"(Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object)[]"},"rules":{"description":"Define one or more alert rules that specify the conditions to monitor, when to trigger alerts, and how they should be handled.","type":"array","items":{"description":"Prometheus Alert Rule","type":"object","required":["type","name","expression","for","severity","notification_enabled"],"properties":{"type":{"description":"Type","type":"string","enum":["prometheus-alert-rule"],"default":"prometheus-alert-rule","isRequired":true,"uniqueKey":"manifest.oneOf.95.rules.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"Enter a unique, descriptive name for your Prometheus alert rule. Choose a name that clearly indicates the condition being monitored. Please note that reserved alert names for TrueFoundry managed alerts are not allowed. For checking the list of reserved alert names, please refer to the documentation.","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,33}[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.95.rules.items.[INDEX].name","typeLabel":"string"},"expression":{"description":"Enter a valid PromQL expression that defines the condition for triggering this alert. The alert will fire when this expression evaluates to true for the duration specified in the duration to trigger alert field.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.95.rules.items.[INDEX].expression","typeLabel":"string"},"for":{"description":"The prometheus expression must remain true for this duration (in seconds) before the alert is triggered. If the condition becomes false before this time elapses, the alert will not fire.","type":"number","minimum":60,"isRequired":true,"uniqueKey":"manifest.oneOf.95.rules.items.[INDEX].for","typeLabel":"number"},"severity":{"type":"string","enum":["warning","critical"],"title":"AlertSeverity","x-fern-type-name":"AlertSeverity","isRequired":true,"uniqueKey":"manifest.oneOf.95.rules.items.[INDEX].severity","typeLabel":"enum\u003cstring>"},"notification_enabled":{"description":"When enabled, notifications will be sent to all configured target channels when the alert conditions are met.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.95.rules.items.[INDEX].notification_enabled","typeLabel":"boolean"},"description":{"description":"Description of the alert rule which will be displayed in the alert rule list. This can be used to provide more context about the alert rule.","type":"string","uniqueKey":"manifest.oneOf.95.rules.items.[INDEX].description","typeLabel":"string"}},"title":"PrometheusAlertRule","x-fern-type-name":"PrometheusAlertRule","uniqueKey":"manifest.oneOf.95.rules.items.[INDEX]","typeLabel":"PrometheusAlertRule · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.95.rules","typeLabel":"PrometheusAlertRule · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.95","typeLabel":"AlertConfig · object"},{"type":"object","title":"VirtualAccountManifest","description":"Manifest of the resource to be created or updated","required":["name","type"],"x-fern-type-name":"VirtualAccountManifest","properties":{"name":{"description":"Virtual Account Name","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.96.name","typeLabel":"string"},"type":{"description":"+value=virtual-account","type":"string","enum":["virtual-account"],"default":"virtual-account","isRequired":true,"uniqueKey":"manifest.oneOf.96.type","typeLabel":"enum\u003cstring>"},"permissions":{"description":"Permissions","type":"array","items":{"type":"object","required":["resource_fqn","resource_type","role_id"],"properties":{"resource_fqn":{"description":"The fully qualified name of the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.96.permissions.items.[INDEX].resource_fqn","typeLabel":"string"},"resource_type":{"description":"The type of the resource (cluster, workspace, etc.)","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.96.permissions.items.[INDEX].resource_type","typeLabel":"string"},"role_id":{"description":"The role id of the role to be assigned to the service account for that resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.96.permissions.items.[INDEX].role_id","typeLabel":"string"}},"title":"Permissions","x-fern-type-name":"Permissions","uniqueKey":"manifest.oneOf.96.permissions.items.[INDEX]","typeLabel":"Permissions · object"},"uniqueKey":"manifest.oneOf.96.permissions","typeLabel":"Permissions · object[]"},"expiration_date":{"description":"Expiration Date of the Virtual Account (should be in the format yyyy-mm-dd)","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","uniqueKey":"manifest.oneOf.96.expiration_date","typeLabel":"string"},"auto_rotate":{"description":"Enable Auto Rotation to automatically rotate the token","type":"object","required":["auto_rotate_interval","grace_period"],"properties":{"auto_rotate_interval":{"description":"Rotation Interval in days after which the token will be rotated. Minimum value is 30.","type":"integer","minimum":30,"default":360,"isRequired":true,"uniqueKey":"manifest.oneOf.96.auto_rotate.auto_rotate_interval","typeLabel":"integer"},"grace_period":{"description":"Grace Period in days for which the token will be valid after rotation interval. Minimum value is 1.","type":"integer","minimum":1,"default":30,"isRequired":true,"uniqueKey":"manifest.oneOf.96.auto_rotate.grace_period","typeLabel":"integer"}},"title":"AutoRotate","x-fern-type-name":"AutoRotate","uniqueKey":"manifest.oneOf.96.auto_rotate","typeLabel":"AutoRotate · object"},"notification_target":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"manifest.oneOf.96.notification_target.oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.96.notification_target.oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.96.notification_target.oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.96.notification_target.oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.96.notification_target.oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"manifest.oneOf.96.notification_target.oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.96.notification_target.oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.96.notification_target.oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBot","description":"+discriminator=type","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"manifest.oneOf.96.notification_target.oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.96.notification_target.oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"manifest.oneOf.96.notification_target.oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.96.notification_target.oneOf.2.channels","typeLabel":"string[]"}},"uniqueKey":"manifest.oneOf.96.notification_target.oneOf.2","typeLabel":"SlackBot · object"},{"type":"object","title":"PagerDuty","description":"+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"manifest.oneOf.96.notification_target.oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.96.notification_target.oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.96.notification_target.oneOf.3","typeLabel":"PagerDuty · object"},{"type":"object","title":"MSTeamsWebhook","description":"MS Teams Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=ms-teams-webhook","type":"string","enum":["ms-teams-webhook"],"default":"ms-teams-webhook","isRequired":true,"uniqueKey":"manifest.oneOf.96.notification_target.oneOf.4.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"manifest.oneOf.96.notification_target.oneOf.4.notification_channel","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.96.notification_target.oneOf.4","typeLabel":"MSTeamsWebhook · object"}],"uniqueKey":"manifest.oneOf.96.notification_target","typeLabel":"Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object | MSTeamsWebhook · object"},"secret_store_config":{"oneOf":[{"type":"object","title":"SecretStoreIntegrationConfig","description":"Store the virtual account token directly in an external secret store","required":["type","integration_fqn","secret_path"],"x-fern-type-name":"SecretStoreConfig","properties":{"type":{"description":"+value=secret-store","type":"string","enum":["secret-store"],"default":"secret-store","isRequired":true,"uniqueKey":"manifest.oneOf.96.secret_store_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"integration_fqn":{"description":"The secret store to store the virtual account token in","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.96.secret_store_config.oneOf.0.integration_fqn","typeLabel":"string"},"secret_path":{"description":"The path where the virtual account token will be stored in the secret store (example: secret/path/to/virtual-account-token)","type":"string","pattern":"^/?[A-Za-z0-9/-]*[A-Za-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.96.secret_store_config.oneOf.0.secret_path","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.96.secret_store_config.oneOf.0","typeLabel":"SecretStoreIntegrationConfig · object"},{"type":"object","title":"TfySecretsConfig","description":"Store the virtual account token as a secret in a TrueFoundry secret group","required":["type","secret_group","key"],"x-fern-type-name":"SecretStoreConfig","properties":{"type":{"description":"+value=tfy-secrets","type":"string","enum":["tfy-secrets"],"default":"tfy-secrets","isRequired":true,"uniqueKey":"manifest.oneOf.96.secret_store_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"secret_group":{"description":"Name of the secret group to store the virtual account token in","type":"string","pattern":"^(?!.*--)[a-z][a-z0-9-]{3,48}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.96.secret_store_config.oneOf.1.secret_group","typeLabel":"string"},"key":{"description":"The key where the virtual account token will be stored in the secret group","type":"string","pattern":"^(?!.*--)[a-zA-Z][a-zA-Z0-9\\/_-]{3,498}[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.96.secret_store_config.oneOf.1.key","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.96.secret_store_config.oneOf.1","typeLabel":"TfySecretsConfig · object"}],"uniqueKey":"manifest.oneOf.96.secret_store_config","typeLabel":"SecretStoreIntegrationConfig · object | TfySecretsConfig · object"},"ownedBy":{"description":"Names of the owners that own the virtual account","type":"object","required":["team"],"properties":{"team":{"description":"The name of the team that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.96.ownedBy.team","typeLabel":"string"},"account":{"description":"The name of the account that owns this resource","type":"string","uniqueKey":"manifest.oneOf.96.ownedBy.account","typeLabel":"string"}},"title":"VirtualAccountOwnedBy","x-fern-type-name":"VirtualAccountOwnedBy","uniqueKey":"manifest.oneOf.96.ownedBy","typeLabel":"VirtualAccountOwnedBy · object"},"tags":{"description":"Key-value pairs to categorize this Virtual Account (e.g., by owner or environment).","type":"object","uniqueKey":"manifest.oneOf.96.tags","typeLabel":"object"},"identity_provider_mapping":{"description":"Mappings from external identity provider claim value to this virtual account","type":"array","items":{"description":"Map specific claim values from an external IdP token (e.g., Okta, Azure AD) to this agent identity.","type":"object","required":["identity_provider"],"properties":{"identity_provider":{"description":"Must already be configured under Platform → Identity Providers. Choosing a SPIRE provider means this agent's credential is an attested JWT-SVID from its runtime.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.96.identity_provider_mapping.items.[INDEX].identity_provider","typeLabel":"string"},"value":{"description":"The value that must appear in the subject claim of the IdP token for this mapping to match. For example, a service account email or a group name.","type":"string","uniqueKey":"manifest.oneOf.96.identity_provider_mapping.items.[INDEX].value","typeLabel":"string"},"claims":{"description":"Add a subject key and the value that must match on the token. The keys shown are required for this provider.","type":"object","additionalProperties":{"type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.96.identity_provider_mapping.items.[INDEX].claims.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.96.identity_provider_mapping.items.[INDEX].claims","typeLabel":"object"}},"title":"IdentityProviderMapping","x-fern-type-name":"IdentityProviderMapping","uniqueKey":"manifest.oneOf.96.identity_provider_mapping.items.[INDEX]","typeLabel":"IdentityProviderMapping · object"},"uniqueKey":"manifest.oneOf.96.identity_provider_mapping","typeLabel":"IdentityProviderMapping · object[]"},"token_type":{"description":"Format of the issued token. Leave empty to use the platform default.","type":"string","enum":["jwt","opaque"],"uniqueKey":"manifest.oneOf.96.token_type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"manifest.oneOf.96","typeLabel":"VirtualAccountManifest · object"},{"type":"object","title":"CommonToolsSettings","description":"Manifest of the resource to be created or updated","required":["type","web_search","code_executor","sandbox_exec","sequential_thinking","web_scrape"],"x-fern-type-name":"CommonToolsSettings","properties":{"type":{"description":"+value=settings/common-tools","type":"string","enum":["settings/common-tools"],"default":"settings/common-tools","isRequired":true,"uniqueKey":"manifest.oneOf.97.type","typeLabel":"enum\u003cstring>"},"web_search":{"description":"Enable web search tool\nAllows model to search the web for information.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.97.web_search","typeLabel":"boolean"},"code_executor":{"description":"Enable code executor tool\nAllows model to execute code and return the results.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.97.code_executor","typeLabel":"boolean"},"sandbox_exec":{"description":"Enable sandbox executor tool\nAllows model to execute shell command in an isolated stateful sandbox environment.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.97.sandbox_exec","typeLabel":"boolean"},"sequential_thinking":{"description":"Enable sequential thinking tool\nAllows model to reason step-by-step to solve complex problems.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.97.sequential_thinking","typeLabel":"boolean"},"web_scrape":{"description":"Enable web scraping tool.\nAllows model to scrape content from web pages with intelligent format selection for structured or unstructured data.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.97.web_scrape","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"manifest.oneOf.97","typeLabel":"CommonToolsSettings · object"},{"type":"object","title":"MCPGatewaySettings","description":"Manifest of the resource to be created or updated","required":["type","enable_tools_by_default"],"x-fern-type-name":"MCPGatewaySettings","properties":{"type":{"description":"+value=settings/mcp-gateway","type":"string","enum":["settings/mcp-gateway"],"default":"settings/mcp-gateway","isRequired":true,"uniqueKey":"manifest.oneOf.98.type","typeLabel":"enum\u003cstring>"},"enable_tools_by_default":{"description":"When enabled, newly created MCP servers expose all tools unless you disable specific ones. When disabled, new servers expose only tools you explicitly enable. Existing servers are not changed.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.98.enable_tools_by_default","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"manifest.oneOf.98","typeLabel":"MCPGatewaySettings · object"},{"type":"object","title":"AIFeaturesSettings","description":"Manifest of the resource to be created or updated","required":["type","enabled"],"x-fern-type-name":"AIFeaturesSettings","properties":{"type":{"description":"+value=settings/ai-features","type":"string","enum":["settings/ai-features"],"default":"settings/ai-features","isRequired":true,"uniqueKey":"manifest.oneOf.99.type","typeLabel":"enum\u003cstring>"},"enabled":{"description":"Enabled","type":"boolean","isRequired":true,"uniqueKey":"manifest.oneOf.99.enabled","typeLabel":"boolean"},"ai_provider":{"oneOf":[{"type":"object","title":"AIFeaturesTrueFoundryProvider","description":"TrueFoundry provides and manages the models. There is nothing for you to set up.","required":["type"],"x-fern-type-name":"AIFeaturesTrueFoundryProvider","properties":{"type":{"description":"+value=truefoundry","type":"string","enum":["truefoundry"],"default":"truefoundry","isRequired":true,"uniqueKey":"manifest.oneOf.99.ai_provider.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.99.ai_provider.oneOf.0","typeLabel":"AIFeaturesTrueFoundryProvider · object"},{"type":"object","title":"AIFeaturesBringYourOwnModelsProvider","description":"Use your own Gateway models. You pick one for each level of task difficulty, and the\nusage is billed to your own provider accounts.","required":["type","models"],"x-fern-type-name":"AIFeaturesBringYourOwnModelsProvider","properties":{"type":{"description":"+value=self-managed","type":"string","enum":["self-managed"],"default":"self-managed","isRequired":true,"uniqueKey":"manifest.oneOf.99.ai_provider.oneOf.1.type","typeLabel":"enum\u003cstring>"},"models":{"description":"Pick one of your Gateway models for each level of task difficulty.","type":"object","required":["simple","medium","complex"],"properties":{"simple":{"description":"Quick, well-defined work such as classification, extraction and short summaries.\nUse Claude Haiku 5.5 or GPT-6 Luna.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.99.ai_provider.oneOf.1.models.simple","typeLabel":"string"},"medium":{"description":"Everyday work such as answering questions and summarizing longer content.\nUse Claude Sonnet 5.5, GPT-6.1 Sol or Grok 4.7.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.99.ai_provider.oneOf.1.models.medium","typeLabel":"string"},"complex":{"description":"Demanding work such as multi-step reasoning and writing code.\nUse Claude Opus 5.5 or GPT-6 Astra.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.99.ai_provider.oneOf.1.models.complex","typeLabel":"string"}},"title":"AIFeaturesModels","x-fern-type-name":"AIFeaturesModels","isRequired":true,"uniqueKey":"manifest.oneOf.99.ai_provider.oneOf.1.models","typeLabel":"AIFeaturesModels · object"}},"uniqueKey":"manifest.oneOf.99.ai_provider.oneOf.1","typeLabel":"AIFeaturesBringYourOwnModelsProvider · object"}],"uniqueKey":"manifest.oneOf.99.ai_provider","typeLabel":"AIFeaturesTrueFoundryProvider · object | AIFeaturesBringYourOwnModelsProvider · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.99","typeLabel":"AIFeaturesSettings · object"},{"type":"object","title":"SecuritySettings","description":"Manifest of the resource to be created or updated","required":["type","enabled","max_pat_expiry_minutes"],"x-fern-type-name":"SecuritySettings","properties":{"type":{"description":"+value=settings/security","type":"string","enum":["settings/security"],"default":"settings/security","isRequired":true,"uniqueKey":"manifest.oneOf.100.type","typeLabel":"enum\u003cstring>"},"enabled":{"description":"Enable/Disable security settings.\nOther fields only apply when this is true","type":"boolean","isRequired":true,"uniqueKey":"manifest.oneOf.100.enabled","typeLabel":"boolean"},"max_pat_expiry_minutes":{"description":"Personal Access Tokens cannot be created with an expiry longer than this. Maximum allowed is 7000 days.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"manifest.oneOf.100.max_pat_expiry_minutes","typeLabel":"integer"},"max_pats_per_user":{"description":"Leave blank to allow unlimited PATs per user.","type":"integer","minimum":1,"uniqueKey":"manifest.oneOf.100.max_pats_per_user","typeLabel":"integer"},"pat_team_assignment_mode":{"description":"Controls whether assigning a team owner while creating a Personal Access Token is required, optional, or disabled.","type":"string","enum":["optional","required","disabled"],"default":"optional","uniqueKey":"manifest.oneOf.100.pat_team_assignment_mode","typeLabel":"enum\u003cstring>"},"enable_pat_retrieval_after_creation":{"description":"Allow users to retrieve the value of their own Personal Access Tokens via API after creation.","type":"boolean","default":false,"uniqueKey":"manifest.oneOf.100.enable_pat_retrieval_after_creation","typeLabel":"boolean"},"enable_viewing_secrets":{"description":"Allow users with permission to view plaintext secret values in the UI and API. When disabled, secret values are never returned.","type":"boolean","default":false,"uniqueKey":"manifest.oneOf.100.enable_viewing_secrets","typeLabel":"boolean"},"to_emails":{"description":"Email addresses to receive security-related notifications.","type":"array","items":{"type":"string","pattern":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$","uniqueKey":"manifest.oneOf.100.to_emails.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.100.to_emails","typeLabel":"string[]"},"access_restrictions":{"description":"Restrict UI Logins by IP","type":"object","required":["allowed_ip_cidrs"],"properties":{"allowed_ip_cidrs":{"description":"Limits TrueFoundry UI logins to the listed IPs/CIDRs. Does not restrict API or AI Gateway access.\nNote: Include the IP address you are currently accessing from. If it is missing from the allowlist, you will not be able to save these settings.","type":"array","items":{"type":"string","pattern":"^[0-9A-Fa-f:.]+(/[0-9]{1,3})?$","uniqueKey":"manifest.oneOf.100.access_restrictions.allowed_ip_cidrs.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.100.access_restrictions.allowed_ip_cidrs","typeLabel":"string[]"}},"title":"SecurityAccessRestrictions","x-fern-type-name":"SecurityAccessRestrictions","uniqueKey":"manifest.oneOf.100.access_restrictions","typeLabel":"SecurityAccessRestrictions · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.100","typeLabel":"SecuritySettings · object"},{"type":"object","title":"SecretGroupManifest","description":"Manifest of the resource to be created or updated","required":["type","name","integration_fqn"],"x-fern-type-name":"SecretGroupManifest","properties":{"type":{"description":"+value=secret-group","type":"string","enum":["secret-group"],"default":"secret-group","isRequired":true,"uniqueKey":"manifest.oneOf.101.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the secret group","type":"string","pattern":"^(?!.*--)[a-z][a-z0-9-]{3,48}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.101.name","typeLabel":"string"},"integration_fqn":{"description":"Secret Store to be associated with the secret group","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.101.integration_fqn","typeLabel":"string"},"collaborators":{"description":"Users and Teams that have access to Secret Group","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.101.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.101.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.101.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.101.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.101.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.101.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.101","typeLabel":"SecretGroupManifest · object"},{"type":"object","title":"AgentManifestV2","description":"Manifest of the resource to be created or updated","required":["type","name","description","proxy_via_gateway"],"x-fern-type-name":"AgentManifestV2","properties":{"type":{"description":"Type of the manifest","type":"string","enum":["agent/remote"],"default":"agent/remote","isRequired":true,"uniqueKey":"manifest.oneOf.102.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique across your organization. Used as the reference key in policies and YAML specs.","type":"string","pattern":"^[a-z][a-z0-9\\-]{0,62}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.102.name","typeLabel":"string"},"description":{"description":"A short note on what this agent does — shown in the registry list and audit trail.","type":"string","maxLength":2000,"isRequired":true,"uniqueKey":"manifest.oneOf.102.description","typeLabel":"string"},"proxy_via_gateway":{"description":"When enabled, the Agent Gateway proxies calls to this endpoint and enforces policy on the way in. When disabled, the agent is embedded (governance-only) — the gateway does not proxy its inbound calls.","type":"object","required":["enabled"],"properties":{"enabled":{"description":"Enable to route inbound calls through the Agent Gateway (policy enforced on the way in). Disable for governance-only registration.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.enabled","typeLabel":"boolean"},"url":{"description":"The agent's endpoint. When proxying is enabled, the Agent Gateway forwards requests here. Not applicable to Embedded (no callable URL) agents. The uischema shows + requires it only when proxying is enabled.","type":"string","pattern":"^https?:\\/\\/[^\\s]+$","uniqueKey":"manifest.oneOf.102.proxy_via_gateway.url","typeLabel":"string"},"framework":{"oneOf":[{"type":"object","title":"A2AFramework","description":"A2A","required":["type","agent_card_path"],"x-fern-type-name":"AgentFramework","properties":{"type":{"description":"Type","type":"string","enum":["a2a"],"default":"a2a","isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.framework.oneOf.0.type","typeLabel":"enum\u003cstring>"},"agent_card_path":{"description":"Path to the agent card JSON, relative to the base URL","type":"string","default":"/.well-known/agent-card.json","isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.framework.oneOf.0.agent_card_path","typeLabel":"string"}},"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.framework.oneOf.0","typeLabel":"A2AFramework · object"},{"type":"object","title":"CustomFramework","description":"Custom","required":["type"],"x-fern-type-name":"AgentFramework","properties":{"type":{"description":"Type","type":"string","enum":["custom"],"default":"custom","isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.framework.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.framework.oneOf.1","typeLabel":"CustomFramework · object"}],"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.framework","typeLabel":"A2AFramework · object | CustomFramework · object"},"auth_data":{"oneOf":[{"type":"object","title":"CustomServerHeaderAuth","description":"Static API key or token authentication via request headers.","required":["type","headers"],"x-fern-type-name":"RemoteAgentProxyAuth","properties":{"type":{"description":"+value=header","type":"string","enum":["header"],"default":"header","isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.0.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"Map each header name to its value.","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.0.headers.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.0.headers","typeLabel":"object"}},"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.0","typeLabel":"CustomServerHeaderAuth · object"},{"type":"object","title":"CustomServerPassthrough","description":"Authenticate using your existing TrueFoundry account (PAT or Virtual Accounts). Your credentials are automatically passed to the server.","required":["type"],"x-fern-type-name":"RemoteAgentProxyAuth","properties":{"type":{"description":"+value=passthrough","type":"string","enum":["passthrough"],"default":"passthrough","isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.1","typeLabel":"CustomServerPassthrough · object"},{"type":"object","title":"RemoteAgentOAuth2","description":"The Gateway acquires an access token from your identity provider with the machine-to-machine credentials below and presents it when calling the agent. The token is acquired on first use and refreshed automatically.","required":["type","provider","grant_type","token_url","client_id"],"x-fern-type-name":"RemoteAgentProxyAuth","properties":{"type":{"description":"+value=oauth2","type":"string","enum":["oauth2"],"default":"oauth2","isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.type","typeLabel":"enum\u003cstring>"},"provider":{"description":"Select the OAuth provider. Provider-specific behaviour is unlocked based on this value.","type":"string","enum":["custom","microsoft-entra","okta"],"default":"custom","isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.provider","typeLabel":"enum\u003cstring>"},"grant_type":{"description":"How the Gateway acquires the token: client_credentials (machine-to-machine), jwt_bearer (Microsoft Entra on-behalf-of) or token_exchange (Okta on-behalf-of).","type":"string","enum":["client_credentials","jwt_bearer","token_exchange"],"default":"client_credentials","isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.grant_type","typeLabel":"enum\u003cstring>"},"token_url":{"description":"The identity provider endpoint that issues the access token.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.token_url","typeLabel":"string"},"client_id":{"description":"Client ID of the machine-to-machine application, or the TrueFoundry secret FQN containing it.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.client_id","typeLabel":"string"},"client_authentication":{"description":"How the OAuth client authenticates to the token endpoint. Certificate auth is available for Microsoft Entra client_credentials and jwt_bearer (on-behalf-of).","type":"string","enum":["client_secret","certificate"],"default":"client_secret","uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.client_authentication","typeLabel":"enum\u003cstring>"},"client_secret":{"description":"Client secret of the machine-to-machine application, or the TrueFoundry secret FQN containing it.","type":"string","minLength":1,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.client_secret","typeLabel":"string"},"certificate_thumbprint":{"description":"Hex SHA-1 thumbprint from the Azure portal, or the TrueFoundry secret FQN containing it.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.certificate_thumbprint","typeLabel":"string"},"private_key":{"description":"PEM private key for Microsoft Entra certificate-based client authentication, or the TrueFoundry secret FQN containing it.","type":"string","minLength":1,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.private_key","typeLabel":"string"},"audience":{"description":"Okta target audience (RFC 8693 'audience'). Required when the token_exchange grant type is used with the okta provider.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.audience","typeLabel":"string"},"scopes":{"description":"Scopes requested on every token request.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.scopes.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.scopes","typeLabel":"string[]"},"additional_token_params":{"description":"Extra key/value pairs sent on every token endpoint request (e.g. Auth0 'organization').","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.additional_token_params.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.additional_token_params","typeLabel":"object"}},"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2","typeLabel":"RemoteAgentOAuth2 · object"},{"type":"object","title":"CustomServerAwsSigV4","description":"Sign requests to AWS Bedrock AgentCore with AWS credentials (SigV4).","required":["type","region","auth"],"x-fern-type-name":"RemoteAgentProxyAuth","properties":{"type":{"description":"+value=aws-sigv4","type":"string","enum":["aws-sigv4"],"default":"aws-sigv4","isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.type","typeLabel":"enum\u003cstring>"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.region","typeLabel":"enum\u003cstring>"},"auth":{"oneOf":[{"type":"object","title":"CustomServerAwsAccessKeyAuth","description":"Authenticate with an AWS access key pair.","required":["type","access_key_id","secret_access_key"],"x-fern-type-name":"CustomServerAwsAccessKeyAuth","properties":{"type":{"description":"+value=aws-access-key","type":"string","enum":["aws-access-key"],"default":"aws-access-key","isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"access_key_id":{"description":"AWS access key ID. Prefer a tfy-secret reference.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.auth.oneOf.0.access_key_id","typeLabel":"string"},"secret_access_key":{"description":"AWS secret access key. Prefer a tfy-secret reference.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.auth.oneOf.0.secret_access_key","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.auth.oneOf.0","typeLabel":"CustomServerAwsAccessKeyAuth · object"},{"type":"object","title":"CustomServerAwsAssumeRoleAuth","description":"Authenticate by assuming an IAM role (SigV4).","required":["type","assumed_role_arn"],"x-fern-type-name":"CustomServerAwsAssumeRoleAuth","properties":{"type":{"description":"+value=aws-assumed-role","type":"string","enum":["aws-assumed-role"],"default":"aws-assumed-role","isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"assumed_role_arn":{"description":"ARN of the role you want to assume. Prefer a tfy-secret reference.","type":"string","pattern":"^(arn:(aws|aws-us-gov|aws-cn):iam::[0-9]{12}:role(/[\\w+=,.@-]+)+|tfy-secret:\\/\\/.+:.+:.+)$","isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.auth.oneOf.1.assumed_role_arn","typeLabel":"string"},"external_id":{"description":"Optional external ID to use when assuming the role. This provides an added layer of security by ensuring only parties with the correct external ID can assume the role.","type":"string","uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.auth.oneOf.1.external_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.auth.oneOf.1","typeLabel":"CustomServerAwsAssumeRoleAuth · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.auth","typeLabel":"CustomServerAwsAccessKeyAuth · object | CustomServerAwsAssumeRoleAuth · object"}},"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3","typeLabel":"CustomServerAwsSigV4 · object"}],"uniqueKey":"manifest.oneOf.102.proxy_via_gateway.auth_data","typeLabel":"CustomServerHeaderAuth · object | CustomServerPassthrough · object | RemoteAgentOAuth2 · object | CustomServerAwsSigV4 · object"}},"title":"RemoteAgentProxyViaGatewayConfig","x-fern-type-name":"RemoteAgentProxyViaGatewayConfig","isRequired":true,"uniqueKey":"manifest.oneOf.102.proxy_via_gateway","typeLabel":"RemoteAgentProxyViaGatewayConfig · object"},"display_name":{"description":"A human-readable label for the Agent in the UI. If omitted, the agent name is shown.","type":"string","minLength":1,"maxLength":128,"uniqueKey":"manifest.oneOf.102.display_name","typeLabel":"string"},"source":{"description":"Where the agent originated from.","type":"object","required":["type"],"properties":{"type":{"description":"Where the agent originated from.","type":"string","enum":["trueforge","aws-agentcore-harness","aws-agentcore-runtime","snowflake-cortex-agent","microsoft-foundry","microsoft-copilot-studio"],"isRequired":true,"uniqueKey":"manifest.oneOf.102.source.type","typeLabel":"enum\u003cstring>"},"provider_integration_fqn":{"description":"FQN of the provider integration used by this agent source.","type":"string","uniqueKey":"manifest.oneOf.102.source.provider_integration_fqn","typeLabel":"string"},"external_name":{"description":"Name of the agent in the external source system.","type":"string","uniqueKey":"manifest.oneOf.102.source.external_name","typeLabel":"string"},"external_id":{"description":"ID of the agent in the external source system.","type":"string","uniqueKey":"manifest.oneOf.102.source.external_id","typeLabel":"string"},"entra_agent_identity_id":{"description":"Entra agent identity object ID (AgentIdentityId).","type":"string","uniqueKey":"manifest.oneOf.102.source.entra_agent_identity_id","typeLabel":"string"},"entra_blueprint_id":{"description":"Entra Agent Identity Blueprint ID (AgentIdentityBlueprintId).","type":"string","uniqueKey":"manifest.oneOf.102.source.entra_blueprint_id","typeLabel":"string"}},"title":"RemoteAgentSource","x-fern-type-name":"RemoteAgentSource","uniqueKey":"manifest.oneOf.102.source","typeLabel":"RemoteAgentSource · object"},"identity":{"oneOf":[{"type":"object","title":"TrueFoundryBackedAgentIdentity","description":"We issue and sign the token. Simplest option for agents you build and run yourself.","required":["type"],"x-fern-type-name":"RemoteAgentV2AgentIdentity","properties":{"type":{"description":"+value=truefoundry-backed","type":"string","enum":["truefoundry-backed"],"default":"truefoundry-backed","isRequired":true,"uniqueKey":"manifest.oneOf.102.identity.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.102.identity.oneOf.0","typeLabel":"TrueFoundryBackedAgentIdentity · object"},{"type":"object","title":"IdentityProviderBackedAgentIdentity","description":"Authenticates to Okta, Entra, or your own IdP. Unlocks ID-JAG / OBO.","required":["type","identity_provider_mapping"],"x-fern-type-name":"RemoteAgentV2AgentIdentity","properties":{"type":{"description":"Type of the identity","type":"string","enum":["identity-provider-backed"],"default":"identity-provider-backed","isRequired":true,"uniqueKey":"manifest.oneOf.102.identity.oneOf.1.type","typeLabel":"enum\u003cstring>"},"identity_provider_mapping":{"description":"One or more mappings from external IdP claim values to this agent identity. The agent is authenticated when any mapping matches.","type":"array","items":{"description":"Map specific claim values from an external IdP token (e.g., Okta, Azure AD) to this agent identity.","type":"object","required":["identity_provider"],"properties":{"identity_provider":{"description":"Must already be configured under Platform → Identity Providers. Choosing a SPIRE provider means this agent's credential is an attested JWT-SVID from its runtime.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.102.identity.oneOf.1.identity_provider_mapping.items.[INDEX].identity_provider","typeLabel":"string"},"value":{"description":"The value that must appear in the subject claim of the IdP token for this mapping to match. For example, a service account email or a group name.","type":"string","uniqueKey":"manifest.oneOf.102.identity.oneOf.1.identity_provider_mapping.items.[INDEX].value","typeLabel":"string"},"claims":{"description":"Add a subject key and the value that must match on the token. The keys shown are required for this provider.","type":"object","additionalProperties":{"type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.102.identity.oneOf.1.identity_provider_mapping.items.[INDEX].claims.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.102.identity.oneOf.1.identity_provider_mapping.items.[INDEX].claims","typeLabel":"object"}},"title":"IdentityProviderMapping","x-fern-type-name":"IdentityProviderMapping","uniqueKey":"manifest.oneOf.102.identity.oneOf.1.identity_provider_mapping.items.[INDEX]","typeLabel":"IdentityProviderMapping · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.102.identity.oneOf.1.identity_provider_mapping","typeLabel":"IdentityProviderMapping · object[]"}},"uniqueKey":"manifest.oneOf.102.identity.oneOf.1","typeLabel":"IdentityProviderBackedAgentIdentity · object"}],"uniqueKey":"manifest.oneOf.102.identity","typeLabel":"TrueFoundryBackedAgentIdentity · object | IdentityProviderBackedAgentIdentity · object"},"collaborators":{"description":"List of users who have access to this Agent","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.102.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.102.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.102.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.102.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["team"],"properties":{"team":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.102.ownedBy.team","typeLabel":"string"}},"title":"RemoteAgentV2OwnedBy","x-fern-type-name":"RemoteAgentV2OwnedBy","uniqueKey":"manifest.oneOf.102.ownedBy","typeLabel":"RemoteAgentV2OwnedBy · object"},"tags":{"description":"Free-form key context — environment, framework, cost-center.","type":"object","uniqueKey":"manifest.oneOf.102.tags","typeLabel":"object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.102","typeLabel":"AgentManifestV2 · object"},{"type":"object","title":"EnvironmentManifest","description":"Manifest of the resource to be created or updated","required":["type","name","color","isProduction","optimizeFor"],"x-fern-type-name":"EnvironmentManifest","properties":{"type":{"description":"+value=environment","type":"string","enum":["environment"],"default":"environment","isRequired":true,"uniqueKey":"manifest.oneOf.103.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Environment Name","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.103.name","typeLabel":"string"},"color":{"type":"object","properties":{"colorHex":{"type":"string","uniqueKey":"manifest.oneOf.103.color.colorHex","typeLabel":"string"},"backgroundColorHex":{"type":"string","uniqueKey":"manifest.oneOf.103.color.backgroundColorHex","typeLabel":"string"},"color":{"type":"string","uniqueKey":"manifest.oneOf.103.color.color","typeLabel":"string"},"backgroundColor":{"type":"string","uniqueKey":"manifest.oneOf.103.color.backgroundColor","typeLabel":"string"}},"title":"EnvironmentColor","x-fern-type-name":"EnvironmentColor","isRequired":true,"uniqueKey":"manifest.oneOf.103.color","typeLabel":"EnvironmentColor · object"},"isProduction":{"description":"Environment Type - Indicates if the environment is for production use","type":"boolean","isRequired":true,"uniqueKey":"manifest.oneOf.103.isProduction","typeLabel":"boolean"},"optimizeFor":{"type":"string","enum":["COST","AVAILABILITY"],"title":"EnvironmentOptimizeFor","x-fern-type-name":"EnvironmentOptimizeFor","isRequired":true,"uniqueKey":"manifest.oneOf.103.optimizeFor","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"manifest.oneOf.103","typeLabel":"EnvironmentManifest · object"},{"type":"object","title":"TracingProjectManifest","description":"Manifest of the resource to be created or updated","required":["type","name","storage"],"x-fern-type-name":"TracingProjectManifest","properties":{"type":{"description":"+value=tracing-project","type":"string","enum":["tracing-project"],"default":"tracing-project","isRequired":true,"uniqueKey":"manifest.oneOf.104.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Tracing Project","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,61}[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.104.name","typeLabel":"string"},"storage":{"oneOf":[{"type":"object","title":"TracingProjectControlPlaneManagedStorage","description":"Managed Storage in Control-Plane.","required":["type"],"x-fern-type-name":"TracingProjectStorageConfig","properties":{"type":{"description":"Type of storage configuration","type":"string","enum":["controlplane-managed"],"default":"controlplane-managed","isRequired":true,"uniqueKey":"manifest.oneOf.104.storage.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"manifest.oneOf.104.storage.oneOf.0","typeLabel":"TracingProjectControlPlaneManagedStorage · object"},{"type":"object","title":"TracingProjectCustomerManagedStorage","description":"Bring your own storage. Please note that this cannot be changed once set.","required":["type","storage_integration_fqn"],"x-fern-type-name":"TracingProjectStorageConfig","properties":{"type":{"description":"Type of storage configuration","type":"string","enum":["customer-managed"],"default":"customer-managed","isRequired":true,"uniqueKey":"manifest.oneOf.104.storage.oneOf.1.type","typeLabel":"enum\u003cstring>"},"storage_integration_fqn":{"description":"Storage Integration FQN to store traces and spans. A storage integration represents a connected blob storage like AWS S3 / Azure Blob Storage / Google Cloud Storage. Please note that this cannot be changed once set.","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._:-]*[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.104.storage.oneOf.1.storage_integration_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.104.storage.oneOf.1","typeLabel":"TracingProjectCustomerManagedStorage · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.104.storage","typeLabel":"TracingProjectControlPlaneManagedStorage · object | TracingProjectCustomerManagedStorage · object"},"description":{"description":"Description for the Tracing Project.","type":"string","pattern":"^.{0,500}$","uniqueKey":"manifest.oneOf.104.description","typeLabel":"string"},"collaborators":{"description":"Users and Teams that have access to Tracing Project","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.104.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.104.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.104.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.104.collaborators","typeLabel":"Collaborator · object[]"},"traces_retention_duration_days":{"description":"Number of days to retain traces for (minimum 7 days).\nTraces older than these number of days will be deleted automatically.\nWhen not set, traces are retained indefinitely.\nNote: Metrics will be retained regardless of this setting.","type":"number","minimum":7,"uniqueKey":"manifest.oneOf.104.traces_retention_duration_days","typeLabel":"number"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.104.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.104.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.104","typeLabel":"TracingProjectManifest · object"},{"type":"object","title":"RemoteMCPServerManifest","description":"Manifest of the resource to be created or updated","required":["type","name","description","url"],"x-fern-type-name":"MCPServerManifest","properties":{"type":{"description":"+value=mcp-server/remote","type":"string","enum":["mcp-server/remote"],"default":"mcp-server/remote","isRequired":true,"uniqueKey":"manifest.oneOf.105.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,71}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.105.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.105.description","typeLabel":"string"},"url":{"description":"The endpoint URL for the MCP Server.","type":"string","pattern":"^https?:\\/\\/[^\\s]+$","isRequired":true,"uniqueKey":"manifest.oneOf.105.url","typeLabel":"string"},"display_name":{"description":"A human-readable label for the MCP Server in the UI. If omitted, the server name is shown.","type":"string","minLength":1,"maxLength":128,"uniqueKey":"manifest.oneOf.105.display_name","typeLabel":"string"},"tls_settings":{"description":"Configure TLS settings for secure connections with custom CA certificates.","type":"object","required":["reject_unauthorized"],"properties":{"reject_unauthorized":{"description":"When set to true, it will reject any connection which is not authorized with the list of supplied CAs.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.105.tls_settings.reject_unauthorized","typeLabel":"boolean"},"ca_cert":{"description":"Add custom CA certificates to use for TLS verification.","type":"string","uniqueKey":"manifest.oneOf.105.tls_settings.ca_cert","typeLabel":"string"}},"title":"CustomTLSSettings","x-fern-type-name":"CustomTLSSettings","uniqueKey":"manifest.oneOf.105.tls_settings","typeLabel":"CustomTLSSettings · object"},"tool_settings":{"description":"Customize tool descriptions or enable/disable specific tools from the MCP Server.","type":"array","items":{"description":"MCP Tool Setting","type":"object","required":["name"],"properties":{"name":{"description":"The unique name of the tool.","type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","isRequired":true,"uniqueKey":"manifest.oneOf.105.tool_settings.items.[INDEX].name","typeLabel":"string"},"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"uniqueKey":"manifest.oneOf.105.tool_settings.items.[INDEX].description","typeLabel":"string"},"disabled":{"description":"Allows to disable the tool.","type":"boolean","uniqueKey":"manifest.oneOf.105.tool_settings.items.[INDEX].disabled","typeLabel":"boolean"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"manifest.oneOf.105.tool_settings.items.[INDEX].annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"manifest.oneOf.105.tool_settings.items.[INDEX].annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"manifest.oneOf.105.tool_settings.items.[INDEX].annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"MCPToolSetting","x-fern-type-name":"MCPToolSetting","uniqueKey":"manifest.oneOf.105.tool_settings.items.[INDEX]","typeLabel":"MCPToolSetting · object"},"uniqueKey":"manifest.oneOf.105.tool_settings","typeLabel":"MCPToolSetting · object[]"},"tool_policy":{"description":"Enable/disable policy for MCP tools.","type":"object","required":["enable_tools_by_default"],"properties":{"enable_tools_by_default":{"description":"When true, all tools are exposed except those in disabled_tools. When false, only tools listed in enabled_tools are exposed.","type":"boolean","enum":[true,false],"default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.105.tool_policy.enable_tools_by_default","typeLabel":"enum\u003cboolean>"},"disabled_tools":{"description":"Tool names to disable when enable_tools_by_default is true.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","uniqueKey":"manifest.oneOf.105.tool_policy.disabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.105.tool_policy.disabled_tools","typeLabel":"string[]"},"enabled_tools":{"description":"Tool names to enable when enable_tools_by_default is false.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","uniqueKey":"manifest.oneOf.105.tool_policy.enabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.105.tool_policy.enabled_tools","typeLabel":"string[]"}},"title":"MCPToolPolicy","x-fern-type-name":"MCPToolPolicy","uniqueKey":"manifest.oneOf.105.tool_policy","typeLabel":"MCPToolPolicy · object"},"tool_metadata":{"description":"Per-tool description and annotation overrides keyed by tool name.","type":"object","additionalProperties":{"description":"Description and annotation overrides for a single MCP tool.","type":"object","properties":{"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"uniqueKey":"manifest.oneOf.105.tool_metadata.additionalProperties.description","typeLabel":"string"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"manifest.oneOf.105.tool_metadata.additionalProperties.annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"manifest.oneOf.105.tool_metadata.additionalProperties.annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"manifest.oneOf.105.tool_metadata.additionalProperties.annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"MCPToolMetadata","x-fern-type-name":"MCPToolMetadata","uniqueKey":"manifest.oneOf.105.tool_metadata.additionalProperties","typeLabel":"MCPToolMetadata · object"},"uniqueKey":"manifest.oneOf.105.tool_metadata","typeLabel":"object"},"auth_data":{"oneOf":[{"type":"object","title":"MCPServerHeaderAuth","description":"Authenticate using a static key or token sent as a request header. Choose shared vs individual credentials below.","required":["type","headers","auth_level"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=header","type":"string","enum":["header"],"default":"header","isRequired":true,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.0.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"Map each header name to its value. For shared, enter the actual value. For individual, use a placeholder that will be filled in by each user (e.g. Bearer {{API_KEY}}).","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.105.auth_data.oneOf.0.headers.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.0.headers","typeLabel":"object"},"auth_level":{"description":"Level at which this authentication will be applied. Values: global (default), per_user","type":"string","enum":["global","per_user"],"default":"global","isRequired":true,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.0.auth_level","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.0","typeLabel":"MCPServerHeaderAuth · object"},{"type":"object","title":"MCPServerOAuth2","description":"OAuth2","required":["type","grant_type","provider"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"OAuth2 authentication","type":"string","enum":["oauth2"],"default":"oauth2","isRequired":true,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.type","typeLabel":"enum\u003cstring>"},"grant_type":{"description":"The OAuth2 grant type to use for authentication.","type":"string","enum":["authorization_code","client_credentials","token_exchange","id_jag","jwt_bearer"],"default":"authorization_code","isRequired":true,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.grant_type","typeLabel":"enum\u003cstring>"},"provider":{"description":"Select the OAuth provider. Provider-specific configuration (e.g. Auth0 organization) is unlocked based on this value.","type":"string","enum":["custom","auth0","okta","microsoft-entra"],"default":"custom","isRequired":true,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.provider","typeLabel":"enum\u003cstring>"},"use_organization":{"description":"When enabled, organization will be extracted from the inbound token and it will be included as the organization parameter on token endpoint requests.","type":"boolean","uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.use_organization","typeLabel":"boolean"},"default_organization":{"description":"Fallback Auth0 organization when the inbound token does not include organization.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.default_organization","typeLabel":"string"},"audience":{"description":"Okta target audience (RFC 8693 'audience'). Required when the token_exchange grant type is used with the okta provider.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.audience","typeLabel":"string"},"issuer_uri":{"description":"Issuer URI of the authorization server the ID-JAG token is issued for. Sent as the 'audience' parameter on the ID-JAG token exchange.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.issuer_uri","typeLabel":"string"},"authorization_url":{"description":"URL for the authorization request","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.authorization_url","typeLabel":"string"},"token_url":{"description":"The endpoint to exchange auth code for tokens.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.token_url","typeLabel":"string"},"client_id":{"description":"client ID for OAuth2 or the TrueFoundry secret FQN containing the client ID.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.client_id","typeLabel":"string"},"client_authentication":{"description":"How the OAuth client authenticates to the token endpoint. Certificate auth is available for Microsoft Entra client_credentials and jwt_bearer (on-behalf-of).","type":"string","enum":["client_secret","certificate"],"default":"client_secret","uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.client_authentication","typeLabel":"enum\u003cstring>"},"client_secret":{"description":"Client secret or the TrueFoundry secret FQN containing the client secret for OAuth2.","type":"string","minLength":1,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.client_secret","typeLabel":"string"},"certificate_thumbprint":{"description":"Hex SHA-1 thumbprint from the Azure portal, or the TrueFoundry secret FQN containing it.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.certificate_thumbprint","typeLabel":"string"},"private_key":{"description":"PEM private key for Microsoft Entra certificate-based client authentication, or the TrueFoundry secret FQN containing it.","type":"string","minLength":1,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.private_key","typeLabel":"string"},"registration_url":{"description":"URL for dynamic client registration (RFC 7591). If provided, client credentials will be obtained automatically using the Dynamic Client Registration (DCR) process.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.registration_url","typeLabel":"string"},"introspection_url":{"description":"URL to fetch token expiry (RFC 7662) when the provider does not return expires_in (e.g. Salesforce). Requires client_id and client_secret.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.introspection_url","typeLabel":"string"},"include_resource":{"description":"When enabled, the MCP server URL is sent as the resource parameter (RFC 8707) on both authorization and token endpoint requests.","type":"boolean","uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.include_resource","typeLabel":"boolean"},"code_challenge_methods_supported":{"description":"List of supported PKCE code challenge methods (S256 only)","type":"array","items":{"type":"string","enum":["S256"],"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.code_challenge_methods_supported.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.code_challenge_methods_supported","typeLabel":"enum\u003cstring>[]"},"jwt_source":{"description":"Source of the JWT token to be used for verification.","type":"string","enum":["access_token","id_token"],"default":"access_token","uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.jwt_source","typeLabel":"enum\u003cstring>"},"scopes":{"description":"List of scopes to request from the OAuth2 provider.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.scopes.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.scopes","typeLabel":"string[]"},"additional_token_params":{"description":"Extra key/value pairs sent on every token endpoint request (e.g. Auth0 'organization').","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.additional_token_params.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1.additional_token_params","typeLabel":"object"}},"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.1","typeLabel":"MCPServerOAuth2 · object"},{"type":"object","title":"MCPServerPassthrough","description":"Authenticate using your existing TrueFoundry account (PAT or Virtual Accounts). Your credentials are automatically passed to the MCP server.","required":["type"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=passthrough","type":"string","enum":["passthrough"],"default":"passthrough","isRequired":true,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.2","typeLabel":"MCPServerPassthrough · object"},{"type":"object","title":"MCPServerAwsSigV4Auth","description":"Sign requests to AWS Bedrock AgentCore with AWS credentials (SigV4).","required":["type","region","auth"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=aws-sigv4","type":"string","enum":["aws-sigv4"],"default":"aws-sigv4","isRequired":true,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.3.type","typeLabel":"enum\u003cstring>"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.3.region","typeLabel":"enum\u003cstring>"},"auth":{"oneOf":[{"type":"object","title":"MCPServerAwsAccessKeyAuth","description":"Authenticate with an AWS access key pair.","required":["type","access_key_id","secret_access_key"],"x-fern-type-name":"MCPServerAwsAccessKeyAuth","properties":{"type":{"description":"+value=aws-access-key","type":"string","enum":["aws-access-key"],"default":"aws-access-key","isRequired":true,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.3.auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"access_key_id":{"description":"AWS access key ID. Prefer a tfy-secret reference.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.3.auth.oneOf.0.access_key_id","typeLabel":"string"},"secret_access_key":{"description":"AWS secret access key. Prefer a tfy-secret reference.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.3.auth.oneOf.0.secret_access_key","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.3.auth.oneOf.0","typeLabel":"MCPServerAwsAccessKeyAuth · object"},{"type":"object","title":"MCPServerAwsAssumeRoleAuth","description":"Authenticate by assuming an IAM role (SigV4).","required":["type","assumed_role_arn"],"x-fern-type-name":"MCPServerAwsAssumeRoleAuth","properties":{"type":{"description":"+value=aws-assumed-role","type":"string","enum":["aws-assumed-role"],"default":"aws-assumed-role","isRequired":true,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.3.auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"assumed_role_arn":{"description":"ARN of the role you want to assume. Prefer a tfy-secret reference.","type":"string","pattern":"^(arn:(aws|aws-us-gov|aws-cn):iam::[0-9]{12}:role(/[\\w+=,.@-]+)+|tfy-secret:\\/\\/.+:.+:.+)$","isRequired":true,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.3.auth.oneOf.1.assumed_role_arn","typeLabel":"string"},"external_id":{"description":"Optional external ID to use when assuming the role. This provides an added layer of security by ensuring only parties with the correct external ID can assume the role.","type":"string","uniqueKey":"manifest.oneOf.105.auth_data.oneOf.3.auth.oneOf.1.external_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.3.auth.oneOf.1","typeLabel":"MCPServerAwsAssumeRoleAuth · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.3.auth","typeLabel":"MCPServerAwsAccessKeyAuth · object | MCPServerAwsAssumeRoleAuth · object"}},"uniqueKey":"manifest.oneOf.105.auth_data.oneOf.3","typeLabel":"MCPServerAwsSigV4Auth · object"}],"uniqueKey":"manifest.oneOf.105.auth_data","typeLabel":"MCPServerHeaderAuth · object | MCPServerOAuth2 · object | MCPServerPassthrough · object | MCPServerAwsSigV4Auth · object"},"collaborators":{"description":"Users and Teams that have access to this MCP Server","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.105.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.105.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.105.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.105.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.105.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.105.ownedBy","typeLabel":"OwnedBy · object"},"additional_headers":{"description":"Additional HTTP headers sent on each request to the MCP server. If the same header is set in both `additional_headers` and `auth_data`, the `auth_data` value wins.","type":"object","uniqueKey":"manifest.oneOf.105.additional_headers","typeLabel":"object"},"forwarded_headers":{"description":"Extra header names copied from the client request to the upstream MCP server. Content-Type, Accept, Last-Event-ID, and every header starting with mcp- (Mcp-Session-Id, Mcp-Protocol-Version, Mcp-Param-*) are already forwarded automatically.","type":"array","items":{"type":"string","pattern":"^[!#$%\u0026'+\\-.^_`|~0-9A-Za-z]+$","uniqueKey":"manifest.oneOf.105.forwarded_headers.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.105.forwarded_headers","typeLabel":"string[]"},"tags":{"description":"Key-value pairs to categorize this MCP Server (e.g., by owner or environment).","type":"object","uniqueKey":"manifest.oneOf.105.tags","typeLabel":"object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.105","typeLabel":"RemoteMCPServerManifest · object"},{"type":"object","title":"VirtualMCPServerManifest","description":"Manifest of the resource to be created or updated","required":["type","name","description","servers"],"x-fern-type-name":"MCPServerManifest","properties":{"type":{"description":"+value=mcp-server/virtual","type":"string","enum":["mcp-server/virtual"],"default":"mcp-server/virtual","isRequired":true,"uniqueKey":"manifest.oneOf.106.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Virtual MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,71}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.106.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this Virtual MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.106.description","typeLabel":"string"},"servers":{"description":"List of source MCP servers to include in this virtual server.","type":"array","items":{"description":"MCP Server Source","type":"object","required":["name"],"properties":{"name":{"description":"Name of the MCP server","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.106.servers.items.[INDEX].name","typeLabel":"string"},"enabled_tools":{"description":"List of tools to enable from this source server.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.106.servers.items.[INDEX].enabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.106.servers.items.[INDEX].enabled_tools","typeLabel":"string[]"},"tool_slug":{"description":"Suffix appended to this server's tool names. Defaults to an auto-generated suffix.","type":"string","pattern":"^[a-z0-9]([a-z0-9-]{0,14}[a-z0-9])?$","uniqueKey":"manifest.oneOf.106.servers.items.[INDEX].tool_slug","typeLabel":"string"}},"title":"McpServerSource","x-fern-type-name":"McpServerSource","uniqueKey":"manifest.oneOf.106.servers.items.[INDEX]","typeLabel":"McpServerSource · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.106.servers","typeLabel":"McpServerSource · object[]"},"display_name":{"description":"A human-readable label for the Virtual MCP Server in the UI. If omitted, the server name is shown.","type":"string","minLength":1,"maxLength":128,"uniqueKey":"manifest.oneOf.106.display_name","typeLabel":"string"},"best_effort_mode":{"description":"When enabled, the virtual MCP server continues with available source servers even if some servers fail.","type":"boolean","default":false,"uniqueKey":"manifest.oneOf.106.best_effort_mode","typeLabel":"boolean"},"collaborators":{"description":"Users and Teams that have access to this Virtual MCP Server","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.106.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.106.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.106.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.106.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.106.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.106.ownedBy","typeLabel":"OwnedBy · object"},"tags":{"description":"Key-value pairs to categorize this Virtual MCP Server (e.g., by owner or environment).","type":"object","uniqueKey":"manifest.oneOf.106.tags","typeLabel":"object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.106","typeLabel":"VirtualMCPServerManifest · object"},{"type":"object","title":"OpenAPIMCPServerManifest","description":"Manifest of the resource to be created or updated","required":["type","name","description","url","openapi_spec_source"],"x-fern-type-name":"MCPServerManifest","properties":{"type":{"description":"+value=mcp-server/openapi","type":"string","enum":["mcp-server/openapi"],"default":"mcp-server/openapi","isRequired":true,"uniqueKey":"manifest.oneOf.107.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the OpenAPI MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,71}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.107.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this OpenAPI MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.107.description","typeLabel":"string"},"url":{"description":"The base URL where API requests will be sent. This should be the root endpoint of your API server, without any path suffix.","type":"string","pattern":"^https?:\\/\\/[^\\s]+$","isRequired":true,"uniqueKey":"manifest.oneOf.107.url","typeLabel":"string"},"openapi_spec_source":{"oneOf":[{"type":"object","title":"RemoteSpecSource","description":"Fetch the OpenAPI specification from a remote HTTP/HTTPS endpoint.","required":["type","url"],"x-fern-type-name":"OpenAPISpecSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"manifest.oneOf.107.openapi_spec_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"url":{"description":"URL to fetch the OpenAPI specification (JSON or YAML format).","type":"string","pattern":"^https?:\\/\\/[^\\s]+$","isRequired":true,"uniqueKey":"manifest.oneOf.107.openapi_spec_source.oneOf.0.url","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.107.openapi_spec_source.oneOf.0","typeLabel":"RemoteSpecSource · object"},{"type":"object","title":"UploadSpecSource","description":"Fetch the stored/uploaded OpenAPI specification.","required":["type","url"],"x-fern-type-name":"OpenAPISpecSource","properties":{"type":{"description":"+value=upload","type":"string","enum":["upload"],"default":"upload","isRequired":true,"uniqueKey":"manifest.oneOf.107.openapi_spec_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"url":{"description":"Cloud storage path where the OpenAPI specification is stored (S3, GCS, or Azure Blob).","type":"string","pattern":"^(s3://[^/]+|gs://[^/]+|https://[^.]+\\.blob\\.core\\.windows\\.net/[^/]+)/tfy-openapi-specs/(?:\\d{4}-\\d{2}/|[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/)[a-f0-9-]+\\.json$","isRequired":true,"uniqueKey":"manifest.oneOf.107.openapi_spec_source.oneOf.1.url","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.107.openapi_spec_source.oneOf.1","typeLabel":"UploadSpecSource · object"},{"type":"object","title":"InlineSpecSource","description":"Inline your OpenAPI specification directly. The spec will be stored securely.","required":["type","openapi_spec"],"x-fern-type-name":"OpenAPISpecSource","properties":{"type":{"description":"+value=inline","type":"string","enum":["inline"],"default":"inline","isRequired":true,"uniqueKey":"manifest.oneOf.107.openapi_spec_source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"openapi_spec":{"oneOf":[{"type":"object","description":"The OpenAPI specification as a JSON object or a JSON/YAML string.","isRequired":true,"uniqueKey":"manifest.oneOf.107.openapi_spec_source.oneOf.2.openapi_spec.oneOf.0","typeLabel":"object"},{"type":"string","description":"The OpenAPI specification as a JSON object or a JSON/YAML string.","isRequired":true,"uniqueKey":"manifest.oneOf.107.openapi_spec_source.oneOf.2.openapi_spec.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"manifest.oneOf.107.openapi_spec_source.oneOf.2.openapi_spec","typeLabel":"object | string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.107.openapi_spec_source.oneOf.2","typeLabel":"InlineSpecSource · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.107.openapi_spec_source","typeLabel":"RemoteSpecSource · object | UploadSpecSource · object | InlineSpecSource · object"},"display_name":{"description":"A human-readable label for the OpenAPI MCP Server in the UI. If omitted, the server name is shown.","type":"string","minLength":1,"maxLength":128,"uniqueKey":"manifest.oneOf.107.display_name","typeLabel":"string"},"tls_settings":{"description":"Configure TLS settings for secure connections with custom CA certificates.","type":"object","required":["reject_unauthorized"],"properties":{"reject_unauthorized":{"description":"When set to true, it will reject any connection which is not authorized with the list of supplied CAs.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.107.tls_settings.reject_unauthorized","typeLabel":"boolean"},"ca_cert":{"description":"Add custom CA certificates to use for TLS verification.","type":"string","uniqueKey":"manifest.oneOf.107.tls_settings.ca_cert","typeLabel":"string"}},"title":"CustomTLSSettings","x-fern-type-name":"CustomTLSSettings","uniqueKey":"manifest.oneOf.107.tls_settings","typeLabel":"CustomTLSSettings · object"},"enable_all_tools":{"description":"When enabled, all tools from the OpenAPI spec will be available (up to 30 tools). Disable to select specific tools.","type":"boolean","uniqueKey":"manifest.oneOf.107.enable_all_tools","typeLabel":"boolean"},"tool_settings":{"description":"The tools to customize from the OpenAPI Server.","type":"array","items":{"description":"OpenAPI MCP Tool Setting","type":"object","required":["method","path","name","description"],"properties":{"method":{"description":"The HTTP method for this endpoint.","type":"string","enum":["get","post","put","patch","delete","head"],"isRequired":true,"uniqueKey":"manifest.oneOf.107.tool_settings.items.[INDEX].method","typeLabel":"enum\u003cstring>"},"path":{"description":"The API endpoint path (e.g., /users/{id}).","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.107.tool_settings.items.[INDEX].path","typeLabel":"string"},"name":{"description":"The unique name of this tool, derived from OpenAPI operationId.","type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","isRequired":true,"uniqueKey":"manifest.oneOf.107.tool_settings.items.[INDEX].name","typeLabel":"string"},"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"isRequired":true,"uniqueKey":"manifest.oneOf.107.tool_settings.items.[INDEX].description","typeLabel":"string"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"manifest.oneOf.107.tool_settings.items.[INDEX].annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"manifest.oneOf.107.tool_settings.items.[INDEX].annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"manifest.oneOf.107.tool_settings.items.[INDEX].annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"OpenAPIMCPToolSetting","x-fern-type-name":"OpenAPIMCPToolSetting","uniqueKey":"manifest.oneOf.107.tool_settings.items.[INDEX]","typeLabel":"OpenAPIMCPToolSetting · object"},"uniqueKey":"manifest.oneOf.107.tool_settings","typeLabel":"OpenAPIMCPToolSetting · object[]"},"auth_data":{"oneOf":[{"type":"object","title":"MCPServerHeaderAuth","description":"Authenticate using a static key or token sent as a request header. Choose shared vs individual credentials below.","required":["type","headers","auth_level"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=header","type":"string","enum":["header"],"default":"header","isRequired":true,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.0.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"Map each header name to its value. For shared, enter the actual value. For individual, use a placeholder that will be filled in by each user (e.g. Bearer {{API_KEY}}).","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.107.auth_data.oneOf.0.headers.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.0.headers","typeLabel":"object"},"auth_level":{"description":"Level at which this authentication will be applied. Values: global (default), per_user","type":"string","enum":["global","per_user"],"default":"global","isRequired":true,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.0.auth_level","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.0","typeLabel":"MCPServerHeaderAuth · object"},{"type":"object","title":"MCPServerOAuth2","description":"OAuth2","required":["type","grant_type","provider"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"OAuth2 authentication","type":"string","enum":["oauth2"],"default":"oauth2","isRequired":true,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.type","typeLabel":"enum\u003cstring>"},"grant_type":{"description":"The OAuth2 grant type to use for authentication.","type":"string","enum":["authorization_code","client_credentials","token_exchange","id_jag","jwt_bearer"],"default":"authorization_code","isRequired":true,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.grant_type","typeLabel":"enum\u003cstring>"},"provider":{"description":"Select the OAuth provider. Provider-specific configuration (e.g. Auth0 organization) is unlocked based on this value.","type":"string","enum":["custom","auth0","okta","microsoft-entra"],"default":"custom","isRequired":true,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.provider","typeLabel":"enum\u003cstring>"},"use_organization":{"description":"When enabled, organization will be extracted from the inbound token and it will be included as the organization parameter on token endpoint requests.","type":"boolean","uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.use_organization","typeLabel":"boolean"},"default_organization":{"description":"Fallback Auth0 organization when the inbound token does not include organization.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.default_organization","typeLabel":"string"},"audience":{"description":"Okta target audience (RFC 8693 'audience'). Required when the token_exchange grant type is used with the okta provider.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.audience","typeLabel":"string"},"issuer_uri":{"description":"Issuer URI of the authorization server the ID-JAG token is issued for. Sent as the 'audience' parameter on the ID-JAG token exchange.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.issuer_uri","typeLabel":"string"},"authorization_url":{"description":"URL for the authorization request","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.authorization_url","typeLabel":"string"},"token_url":{"description":"The endpoint to exchange auth code for tokens.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.token_url","typeLabel":"string"},"client_id":{"description":"client ID for OAuth2 or the TrueFoundry secret FQN containing the client ID.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.client_id","typeLabel":"string"},"client_authentication":{"description":"How the OAuth client authenticates to the token endpoint. Certificate auth is available for Microsoft Entra client_credentials and jwt_bearer (on-behalf-of).","type":"string","enum":["client_secret","certificate"],"default":"client_secret","uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.client_authentication","typeLabel":"enum\u003cstring>"},"client_secret":{"description":"Client secret or the TrueFoundry secret FQN containing the client secret for OAuth2.","type":"string","minLength":1,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.client_secret","typeLabel":"string"},"certificate_thumbprint":{"description":"Hex SHA-1 thumbprint from the Azure portal, or the TrueFoundry secret FQN containing it.","type":"string","pattern":"^\\S+$","uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.certificate_thumbprint","typeLabel":"string"},"private_key":{"description":"PEM private key for Microsoft Entra certificate-based client authentication, or the TrueFoundry secret FQN containing it.","type":"string","minLength":1,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.private_key","typeLabel":"string"},"registration_url":{"description":"URL for dynamic client registration (RFC 7591). If provided, client credentials will be obtained automatically using the Dynamic Client Registration (DCR) process.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.registration_url","typeLabel":"string"},"introspection_url":{"description":"URL to fetch token expiry (RFC 7662) when the provider does not return expires_in (e.g. Salesforce). Requires client_id and client_secret.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.introspection_url","typeLabel":"string"},"include_resource":{"description":"When enabled, the MCP server URL is sent as the resource parameter (RFC 8707) on both authorization and token endpoint requests.","type":"boolean","uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.include_resource","typeLabel":"boolean"},"code_challenge_methods_supported":{"description":"List of supported PKCE code challenge methods (S256 only)","type":"array","items":{"type":"string","enum":["S256"],"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.code_challenge_methods_supported.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.code_challenge_methods_supported","typeLabel":"enum\u003cstring>[]"},"jwt_source":{"description":"Source of the JWT token to be used for verification.","type":"string","enum":["access_token","id_token"],"default":"access_token","uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.jwt_source","typeLabel":"enum\u003cstring>"},"scopes":{"description":"List of scopes to request from the OAuth2 provider.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.scopes.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.scopes","typeLabel":"string[]"},"additional_token_params":{"description":"Extra key/value pairs sent on every token endpoint request (e.g. Auth0 'organization').","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.additional_token_params.additionalProperties","typeLabel":"string"},"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1.additional_token_params","typeLabel":"object"}},"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.1","typeLabel":"MCPServerOAuth2 · object"},{"type":"object","title":"MCPServerPassthrough","description":"Authenticate using your existing TrueFoundry account (PAT or Virtual Accounts). Your credentials are automatically passed to the MCP server.","required":["type"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=passthrough","type":"string","enum":["passthrough"],"default":"passthrough","isRequired":true,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.2","typeLabel":"MCPServerPassthrough · object"},{"type":"object","title":"MCPServerAwsSigV4Auth","description":"Sign requests to AWS Bedrock AgentCore with AWS credentials (SigV4).","required":["type","region","auth"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=aws-sigv4","type":"string","enum":["aws-sigv4"],"default":"aws-sigv4","isRequired":true,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.3.type","typeLabel":"enum\u003cstring>"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.3.region","typeLabel":"enum\u003cstring>"},"auth":{"oneOf":[{"type":"object","title":"MCPServerAwsAccessKeyAuth","description":"Authenticate with an AWS access key pair.","required":["type","access_key_id","secret_access_key"],"x-fern-type-name":"MCPServerAwsAccessKeyAuth","properties":{"type":{"description":"+value=aws-access-key","type":"string","enum":["aws-access-key"],"default":"aws-access-key","isRequired":true,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.3.auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"access_key_id":{"description":"AWS access key ID. Prefer a tfy-secret reference.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.3.auth.oneOf.0.access_key_id","typeLabel":"string"},"secret_access_key":{"description":"AWS secret access key. Prefer a tfy-secret reference.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.3.auth.oneOf.0.secret_access_key","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.3.auth.oneOf.0","typeLabel":"MCPServerAwsAccessKeyAuth · object"},{"type":"object","title":"MCPServerAwsAssumeRoleAuth","description":"Authenticate by assuming an IAM role (SigV4).","required":["type","assumed_role_arn"],"x-fern-type-name":"MCPServerAwsAssumeRoleAuth","properties":{"type":{"description":"+value=aws-assumed-role","type":"string","enum":["aws-assumed-role"],"default":"aws-assumed-role","isRequired":true,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.3.auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"assumed_role_arn":{"description":"ARN of the role you want to assume. Prefer a tfy-secret reference.","type":"string","pattern":"^(arn:(aws|aws-us-gov|aws-cn):iam::[0-9]{12}:role(/[\\w+=,.@-]+)+|tfy-secret:\\/\\/.+:.+:.+)$","isRequired":true,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.3.auth.oneOf.1.assumed_role_arn","typeLabel":"string"},"external_id":{"description":"Optional external ID to use when assuming the role. This provides an added layer of security by ensuring only parties with the correct external ID can assume the role.","type":"string","uniqueKey":"manifest.oneOf.107.auth_data.oneOf.3.auth.oneOf.1.external_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.3.auth.oneOf.1","typeLabel":"MCPServerAwsAssumeRoleAuth · object"}],"isRequired":true,"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.3.auth","typeLabel":"MCPServerAwsAccessKeyAuth · object | MCPServerAwsAssumeRoleAuth · object"}},"uniqueKey":"manifest.oneOf.107.auth_data.oneOf.3","typeLabel":"MCPServerAwsSigV4Auth · object"}],"uniqueKey":"manifest.oneOf.107.auth_data","typeLabel":"MCPServerHeaderAuth · object | MCPServerOAuth2 · object | MCPServerPassthrough · object | MCPServerAwsSigV4Auth · object"},"collaborators":{"description":"Users and Teams that have access to this OpenAPI Server","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.107.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.107.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.107.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.107.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.107.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.107.ownedBy","typeLabel":"OwnedBy · object"},"additional_headers":{"description":"Additional HTTP headers sent on each request to the upstream OpenAPI server. If the same header is set in both `additional_headers` and `auth_data`, the `auth_data` value wins.","type":"object","uniqueKey":"manifest.oneOf.107.additional_headers","typeLabel":"object"},"forwarded_headers":{"description":"Extra header names copied from the client request to the upstream OpenAPI server. Content-Type, Accept, Last-Event-ID, and every header starting with mcp- (Mcp-Session-Id, Mcp-Protocol-Version, Mcp-Param-*) are already forwarded automatically.","type":"array","items":{"type":"string","pattern":"^[!#$%\u0026'+\\-.^_`|~0-9A-Za-z]+$","uniqueKey":"manifest.oneOf.107.forwarded_headers.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.107.forwarded_headers","typeLabel":"string[]"},"tags":{"description":"Key-value pairs to categorize this OpenAPI MCP Server (e.g., by owner or environment).","type":"object","uniqueKey":"manifest.oneOf.107.tags","typeLabel":"object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.107","typeLabel":"OpenAPIMCPServerManifest · object"},{"type":"object","title":"StdioMCPServerManifest","description":"Manifest of the resource to be created or updated","required":["name","description","type","command"],"x-fern-type-name":"MCPServerManifest","properties":{"name":{"description":"The name of the MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,71}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.108.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.108.description","typeLabel":"string"},"type":{"description":"+value=mcp-server/stdio\n+sort=400","type":"string","enum":["mcp-server/stdio"],"default":"mcp-server/stdio","isRequired":true,"uniqueKey":"manifest.oneOf.108.type","typeLabel":"enum\u003cstring>"},"command":{"description":"Executable to run for the stdio MCP server process.","type":"string","minLength":1,"default":"npx","isRequired":true,"uniqueKey":"manifest.oneOf.108.command","typeLabel":"string"},"display_name":{"description":"A human-readable label for the MCP Server in the UI. If omitted, the server name is shown.","type":"string","minLength":1,"maxLength":128,"uniqueKey":"manifest.oneOf.108.display_name","typeLabel":"string"},"collaborators":{"description":"Users and Teams that have access to this MCP Server","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.108.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.108.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.108.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.108.collaborators","typeLabel":"Collaborator · object[]"},"args":{"description":"Arguments passed to the stdio MCP server command.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.108.args.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.108.args","typeLabel":"string[]"},"tool_settings":{"description":"Customize tool descriptions or enable/disable specific tools from the MCP Server.","type":"array","items":{"description":"MCP Tool Setting","type":"object","required":["name"],"properties":{"name":{"description":"The unique name of the tool.","type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","isRequired":true,"uniqueKey":"manifest.oneOf.108.tool_settings.items.[INDEX].name","typeLabel":"string"},"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"uniqueKey":"manifest.oneOf.108.tool_settings.items.[INDEX].description","typeLabel":"string"},"disabled":{"description":"Allows to disable the tool.","type":"boolean","uniqueKey":"manifest.oneOf.108.tool_settings.items.[INDEX].disabled","typeLabel":"boolean"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"manifest.oneOf.108.tool_settings.items.[INDEX].annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"manifest.oneOf.108.tool_settings.items.[INDEX].annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"manifest.oneOf.108.tool_settings.items.[INDEX].annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"MCPToolSetting","x-fern-type-name":"MCPToolSetting","uniqueKey":"manifest.oneOf.108.tool_settings.items.[INDEX]","typeLabel":"MCPToolSetting · object"},"uniqueKey":"manifest.oneOf.108.tool_settings","typeLabel":"MCPToolSetting · object[]"},"tool_policy":{"description":"Enable/disable policy for MCP tools.","type":"object","required":["enable_tools_by_default"],"properties":{"enable_tools_by_default":{"description":"When true, all tools are exposed except those in disabled_tools. When false, only tools listed in enabled_tools are exposed.","type":"boolean","enum":[true,false],"default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.108.tool_policy.enable_tools_by_default","typeLabel":"enum\u003cboolean>"},"disabled_tools":{"description":"Tool names to disable when enable_tools_by_default is true.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","uniqueKey":"manifest.oneOf.108.tool_policy.disabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.108.tool_policy.disabled_tools","typeLabel":"string[]"},"enabled_tools":{"description":"Tool names to enable when enable_tools_by_default is false.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","uniqueKey":"manifest.oneOf.108.tool_policy.enabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.108.tool_policy.enabled_tools","typeLabel":"string[]"}},"title":"MCPToolPolicy","x-fern-type-name":"MCPToolPolicy","uniqueKey":"manifest.oneOf.108.tool_policy","typeLabel":"MCPToolPolicy · object"},"tool_metadata":{"description":"Per-tool description and annotation overrides keyed by tool name.","type":"object","additionalProperties":{"description":"Description and annotation overrides for a single MCP tool.","type":"object","properties":{"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"uniqueKey":"manifest.oneOf.108.tool_metadata.additionalProperties.description","typeLabel":"string"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"manifest.oneOf.108.tool_metadata.additionalProperties.annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"manifest.oneOf.108.tool_metadata.additionalProperties.annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"manifest.oneOf.108.tool_metadata.additionalProperties.annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"MCPToolMetadata","x-fern-type-name":"MCPToolMetadata","uniqueKey":"manifest.oneOf.108.tool_metadata.additionalProperties","typeLabel":"MCPToolMetadata · object"},"uniqueKey":"manifest.oneOf.108.tool_metadata","typeLabel":"object"},"auth_data":{"description":"Environment variable authentication for stdio MCP. For individual credentials, use one or more {{placeholder}} names in values (same rules as header auth).","type":"object","required":["type","env"],"properties":{"type":{"description":"+value=env","type":"string","enum":["env"],"default":"env","isRequired":true,"uniqueKey":"manifest.oneOf.108.auth_data.type","typeLabel":"enum\u003cstring>"},"env":{"description":"Map each env variable to its value. For shared, enter the actual value. For individual, use a placeholder that will be filled in by each user (e.g. API_KEY {{API_KEY}}).","type":"object","additionalProperties":{"type":"string","uniqueKey":"manifest.oneOf.108.auth_data.env.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.108.auth_data.env","typeLabel":"object"},"auth_level":{"description":"Level at which this authentication will be applied. Values: global (default), per_user","type":"string","enum":["global","per_user"],"default":"global","uniqueKey":"manifest.oneOf.108.auth_data.auth_level","typeLabel":"enum\u003cstring>"}},"title":"MCPServerEnvAuth","x-fern-type-name":"MCPServerEnvAuth","uniqueKey":"manifest.oneOf.108.auth_data","typeLabel":"MCPServerEnvAuth · object"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.108.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.108.ownedBy","typeLabel":"OwnedBy · object"},"tags":{"description":"Key-value pairs to categorize this MCP Server (e.g., by owner or environment).","type":"object","uniqueKey":"manifest.oneOf.108.tags","typeLabel":"object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.108","typeLabel":"StdioMCPServerManifest · object"},{"type":"object","title":"TfyManagedMCPServerManifest","description":"Manifest of the resource to be created or updated","required":["type","name","description","server_identifier"],"x-fern-type-name":"MCPServerManifest","properties":{"type":{"description":"+value=mcp-server/tfy-managed","type":"string","enum":["mcp-server/tfy-managed"],"default":"mcp-server/tfy-managed","isRequired":true,"uniqueKey":"manifest.oneOf.109.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,71}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.109.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"manifest.oneOf.109.description","typeLabel":"string"},"server_identifier":{"description":"Catalog slug of the TrueFoundry-managed MCP server to connect to. Used to resolve the hosted endpoint and available tools.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,71}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.109.server_identifier","typeLabel":"string"},"display_name":{"description":"A human-readable label for the MCP Server in the UI. If omitted, the server name is shown.","type":"string","minLength":1,"maxLength":128,"uniqueKey":"manifest.oneOf.109.display_name","typeLabel":"string"},"tool_settings":{"description":"Customize tool descriptions or enable/disable specific tools from the MCP Server.","type":"array","items":{"description":"MCP Tool Setting","type":"object","required":["name"],"properties":{"name":{"description":"The unique name of the tool.","type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","isRequired":true,"uniqueKey":"manifest.oneOf.109.tool_settings.items.[INDEX].name","typeLabel":"string"},"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"uniqueKey":"manifest.oneOf.109.tool_settings.items.[INDEX].description","typeLabel":"string"},"disabled":{"description":"Allows to disable the tool.","type":"boolean","uniqueKey":"manifest.oneOf.109.tool_settings.items.[INDEX].disabled","typeLabel":"boolean"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"manifest.oneOf.109.tool_settings.items.[INDEX].annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"manifest.oneOf.109.tool_settings.items.[INDEX].annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"manifest.oneOf.109.tool_settings.items.[INDEX].annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"MCPToolSetting","x-fern-type-name":"MCPToolSetting","uniqueKey":"manifest.oneOf.109.tool_settings.items.[INDEX]","typeLabel":"MCPToolSetting · object"},"uniqueKey":"manifest.oneOf.109.tool_settings","typeLabel":"MCPToolSetting · object[]"},"tool_policy":{"description":"Enable/disable policy for MCP tools.","type":"object","required":["enable_tools_by_default"],"properties":{"enable_tools_by_default":{"description":"When true, all tools are exposed except those in disabled_tools. When false, only tools listed in enabled_tools are exposed.","type":"boolean","enum":[true,false],"default":true,"isRequired":true,"uniqueKey":"manifest.oneOf.109.tool_policy.enable_tools_by_default","typeLabel":"enum\u003cboolean>"},"disabled_tools":{"description":"Tool names to disable when enable_tools_by_default is true.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","uniqueKey":"manifest.oneOf.109.tool_policy.disabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.109.tool_policy.disabled_tools","typeLabel":"string[]"},"enabled_tools":{"description":"Tool names to enable when enable_tools_by_default is false.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","uniqueKey":"manifest.oneOf.109.tool_policy.enabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"manifest.oneOf.109.tool_policy.enabled_tools","typeLabel":"string[]"}},"title":"MCPToolPolicy","x-fern-type-name":"MCPToolPolicy","uniqueKey":"manifest.oneOf.109.tool_policy","typeLabel":"MCPToolPolicy · object"},"tool_metadata":{"description":"Per-tool description and annotation overrides keyed by tool name.","type":"object","additionalProperties":{"description":"Description and annotation overrides for a single MCP tool.","type":"object","properties":{"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"uniqueKey":"manifest.oneOf.109.tool_metadata.additionalProperties.description","typeLabel":"string"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"manifest.oneOf.109.tool_metadata.additionalProperties.annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"manifest.oneOf.109.tool_metadata.additionalProperties.annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"manifest.oneOf.109.tool_metadata.additionalProperties.annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"MCPToolMetadata","x-fern-type-name":"MCPToolMetadata","uniqueKey":"manifest.oneOf.109.tool_metadata.additionalProperties","typeLabel":"MCPToolMetadata · object"},"uniqueKey":"manifest.oneOf.109.tool_metadata","typeLabel":"object"},"collaborators":{"description":"Users and Teams that have access to this MCP Server","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.109.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.109.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"manifest.oneOf.109.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"manifest.oneOf.109.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.109.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"manifest.oneOf.109.ownedBy","typeLabel":"OwnedBy · object"},"auth_data":{"description":"TfyManaged OAuth2","type":"object","required":["type","grant_type"],"properties":{"type":{"description":"OAuth2 authentication","type":"string","enum":["oauth2"],"default":"oauth2","isRequired":true,"uniqueKey":"manifest.oneOf.109.auth_data.type","typeLabel":"enum\u003cstring>"},"grant_type":{"description":"The OAuth2 grant type to use for authentication.","type":"string","enum":["authorization_code"],"isRequired":true,"uniqueKey":"manifest.oneOf.109.auth_data.grant_type","typeLabel":"enum\u003cstring>"}},"title":"TfyManagedMCPServerOAuth","x-fern-type-name":"TfyManagedMCPServerOAuth","uniqueKey":"manifest.oneOf.109.auth_data","typeLabel":"TfyManagedMCPServerOAuth · object"},"tags":{"description":"Key-value pairs to categorize this MCP Server (e.g., by owner or environment).","type":"object","uniqueKey":"manifest.oneOf.109.tags","typeLabel":"object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.109","typeLabel":"TfyManagedMCPServerManifest · object"},{"type":"object","title":"RoleBindingManifest","description":"Manifest of the resource to be created or updated","required":["type","name","subjects","permissions"],"x-fern-type-name":"RoleBindingManifest","properties":{"type":{"description":"+value=role-binding","type":"string","enum":["role-binding"],"default":"role-binding","isRequired":true,"uniqueKey":"manifest.oneOf.110.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique name for this role binding.","type":"string","pattern":"^[a-z][a-z0-9-]{1,64}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.110.name","typeLabel":"string"},"subjects":{"description":"One row per principal; set type and name (email, team name, virtual account name, agent name, or external identity name).","type":"array","items":{"description":"Single row per principal: type selects how to interpret name (email vs names).\nField names mirror the manifest root (type + name) for consistency in the UI and YAML.","type":"object","required":["type","name"],"properties":{"type":{"description":"Whether this row identifies a user (email), a team (name), a virtual account (name), or an agent (name).","type":"string","enum":["user","team","virtualaccount","agent"],"isRequired":true,"uniqueKey":"manifest.oneOf.110.subjects.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"User email when type is user; team, virtual account, or agent name otherwise.","type":"string","minLength":1,"maxLength":1024,"isRequired":true,"uniqueKey":"manifest.oneOf.110.subjects.items.[INDEX].name","typeLabel":"string"}},"title":"RoleBindingSubject","x-fern-type-name":"RoleBindingSubject","uniqueKey":"manifest.oneOf.110.subjects.items.[INDEX]","typeLabel":"RoleBindingSubject · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.110.subjects","typeLabel":"RoleBindingSubject · object[]"},"permissions":{"description":"Resource-scoped role grants (resource type, FQN, and role name).","type":"array","items":{"description":"Grants a named account role on a specific resource identified by FQN.","type":"object","required":["resourceType","resourceFqn","role"],"properties":{"resourceType":{"description":"Target resource kind (e.g. workspace, cluster, ml-repo).","type":"string","minLength":1,"maxLength":128,"isRequired":true,"uniqueKey":"manifest.oneOf.110.permissions.items.[INDEX].resourceType","typeLabel":"string"},"resourceFqn":{"description":"Fully qualified name of the resource.","type":"string","minLength":1,"maxLength":1024,"isRequired":true,"uniqueKey":"manifest.oneOf.110.permissions.items.[INDEX].resourceFqn","typeLabel":"string"},"role":{"description":"Name of the role to bind (e.g. workspace-editor, model-user).","type":"string","minLength":1,"maxLength":255,"isRequired":true,"uniqueKey":"manifest.oneOf.110.permissions.items.[INDEX].role","typeLabel":"string"}},"title":"RoleBindingPermission","x-fern-type-name":"RoleBindingPermission","uniqueKey":"manifest.oneOf.110.permissions.items.[INDEX]","typeLabel":"RoleBindingPermission · object"},"isRequired":true,"uniqueKey":"manifest.oneOf.110.permissions","typeLabel":"RoleBindingPermission · object[]"}},"isRequired":true,"uniqueKey":"manifest.oneOf.110","typeLabel":"RoleBindingManifest · object"},{"type":"object","title":"AgentChannelManifest","description":"Manifest of the resource to be created or updated","required":["type","name","agent","channel"],"x-fern-type-name":"AgentChannelManifest","properties":{"type":{"description":"+value=agent-channel","type":"string","enum":["agent-channel"],"default":"agent-channel","isRequired":true,"uniqueKey":"manifest.oneOf.111.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the agent channel.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.111.name","typeLabel":"string"},"agent":{"description":"Agent","type":"object","required":["name"],"properties":{"name":{"description":"The name of the agent this channel routes messages to.","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"manifest.oneOf.111.agent.name","typeLabel":"string"}},"title":"AgentChannelAgent","x-fern-type-name":"AgentChannelAgent","isRequired":true,"uniqueKey":"manifest.oneOf.111.agent","typeLabel":"AgentChannelAgent · object"},"channel":{"description":"Reach the agent from a Slack app (one Slack app per channel).","type":"object","required":["type","app_id","signing_secret","auth"],"properties":{"type":{"description":"+uiType=Hidden\n+value=slack","type":"string","enum":["slack"],"default":"slack","isRequired":true,"uniqueKey":"manifest.oneOf.111.channel.type","typeLabel":"enum\u003cstring>"},"app_id":{"description":"The Slack app id (api_app_id). Inbound events are routed to this channel by app id.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.111.channel.app_id","typeLabel":"string"},"signing_secret":{"description":"Slack app signing secret, used to verify inbound event request signatures. App-level; common to all auth methods.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.111.channel.signing_secret","typeLabel":"string"},"auth":{"description":"Provide the Slack bot token directly.","type":"object","required":["type","bot_token"],"properties":{"type":{"description":"+value=bot-token\n+uiType=Hidden","type":"string","enum":["bot-token"],"default":"bot-token","isRequired":true,"uniqueKey":"manifest.oneOf.111.channel.auth.type","typeLabel":"enum\u003cstring>"},"bot_token":{"description":"Slack bot token (xoxb-…) used to post replies. Requires chat:write, chat:write.public.","type":"string","isRequired":true,"uniqueKey":"manifest.oneOf.111.channel.auth.bot_token","typeLabel":"string"}},"title":"AgentChannelSlackAuth","x-fern-type-name":"AgentChannelSlackAuth","isRequired":true,"uniqueKey":"manifest.oneOf.111.channel.auth","typeLabel":"AgentChannelSlackAuth · object"}},"title":"AgentChannelConfig","x-fern-type-name":"AgentChannelConfig","isRequired":true,"uniqueKey":"manifest.oneOf.111.channel","typeLabel":"AgentChannelConfig · object"}},"isRequired":true,"uniqueKey":"manifest.oneOf.111","typeLabel":"AgentChannelManifest · object"},{"type":"object","title":"OidcClientManifest","description":"Manifest of the resource to be created or updated","required":["type","name","client_type","redirect_uris","allowed_scopes","allowed_grant_types","token_endpoint_auth_method","pkce","application_type","access_token_ttl","refresh_token_ttl","refresh_token_max_uses"],"x-fern-type-name":"OidcClientManifest","properties":{"type":{"description":"+value=oidc-client","type":"string","enum":["oidc-client"],"default":"oidc-client","isRequired":true,"uniqueKey":"manifest.oneOf.112.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique name of the OAuth app within the tenant. At most 63 characters, so the fqn built from it fits the column that holds it.","type":"string","pattern":"^[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])?$","isRequired":true,"uniqueKey":"manifest.oneOf.112.name","typeLabel":"string"},"client_type":{"description":"confidential clients hold a secret; public clients rely on PKCE","type":"string","enum":["confidential","public"],"default":"confidential","isRequired":true,"uniqueKey":"manifest.oneOf.112.client_type","typeLabel":"enum\u003cstring>"},"redirect_uris":{"description":"Absolute URIs the authorization code may be returned to. No fragments.","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.112.redirect_uris.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.112.redirect_uris","typeLabel":"string[]"},"allowed_scopes":{"description":"Scopes this client may request","type":"array","items":{"type":"string","uniqueKey":"manifest.oneOf.112.allowed_scopes.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"manifest.oneOf.112.allowed_scopes","typeLabel":"string[]"},"allowed_grant_types":{"description":"OAuth2 grants this client may use at the token endpoint","type":"array","items":{"type":"string","enum":["authorization_code","refresh_token","client_credentials"],"uniqueKey":"manifest.oneOf.112.allowed_grant_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"isRequired":true,"uniqueKey":"manifest.oneOf.112.allowed_grant_types","typeLabel":"enum\u003cstring>[]"},"token_endpoint_auth_method":{"description":"How the client authenticates at the token endpoint. Must be none for a public client.","type":"string","enum":["client_secret_basic","client_secret_post","none"],"default":"client_secret_basic","isRequired":true,"uniqueKey":"manifest.oneOf.112.token_endpoint_auth_method","typeLabel":"enum\u003cstring>"},"pkce":{"description":"required is the OAuth 2.1 default and is enforced for public clients","type":"string","enum":["required","not_required","not_required_with_client_auth"],"default":"required","isRequired":true,"uniqueKey":"manifest.oneOf.112.pkce","typeLabel":"enum\u003cstring>"},"application_type":{"description":"web allows https redirect URIs only; native additionally allows loopback and custom schemes","type":"string","enum":["web","native"],"default":"web","isRequired":true,"uniqueKey":"manifest.oneOf.112.application_type","typeLabel":"enum\u003cstring>"},"access_token_ttl":{"description":"How long an issued access token stays valid. This is the revocation lag, so keep it short.","type":"string","default":"1h","pattern":"^[1-9][0-9]{0,4}[smhd]$","isRequired":true,"uniqueKey":"manifest.oneOf.112.access_token_ttl","typeLabel":"string"},"refresh_token_ttl":{"description":"How long a refresh token session may be resumed for","type":"string","default":"30d","pattern":"^[1-9][0-9]{0,4}[smhd]$","isRequired":true,"uniqueKey":"manifest.oneOf.112.refresh_token_ttl","typeLabel":"string"},"refresh_token_max_uses":{"description":"0 for unlimited, 1 for single use. Must be 1 for a public client.","type":"integer","enum":[1,0],"default":1,"isRequired":true,"uniqueKey":"manifest.oneOf.112.refresh_token_max_uses","typeLabel":"enum\u003cinteger>"},"display_name":{"description":"Human-readable label shown in the UI. Metadata only — never used for lookup or uniqueness. Omit it and the key is simply absent.","type":"string","uniqueKey":"manifest.oneOf.112.display_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"manifest.oneOf.112","typeLabel":"OidcClientManifest · object"}],"isRequired":true,"uniqueKey":"manifest","typeLabel":"MLRepoManifest · object | ArtifactManifest · object | ModelManifest · object | ChatPromptManifest · object | DataDirectoryManifest · object | Service · object | ApplicationSet · object | AwsProviderAccount · object | SnowflakeProviderAccount · object | AzureProviderAccount · object | GcpProviderAccount · object | DockerhubProviderAccount · object | BitbucketProviderAccount · object | CustomProviderAccount · object | GithubProviderAccount · object | GitlabProviderAccount · object | JfrogProviderAccount · object | TTLProviderAccount · object | TrueFoundryProviderAccount · object | QuayProviderAccount · object | SlackProviderAccount · object | WebhookProviderAccount · object | PagerDutyProviderAccount · object | MSTeamsProviderAccount · object | HashicorpProviderAccount · object | AwsBedrockProviderAccount · object | GoogleVertexProviderAccount · object | GoogleGeminiProviderAccount · object | AzureOpenAIProviderAccount · object | AzureFoundryProviderAccount · object | MicrosoftFoundryProviderAccount · object | CohereProviderAccount · object | AI21ProviderAccount · object | AnthropicProviderAccount · object | DeepinfraProviderAccount · object | GroqProviderAccount · object | MistralAIProviderAccount · object | PerplexityAIProviderAccount · object | TogetherAIProviderAccount · object | NomicProviderAccount · object | PalmProviderAccount · object | OllamaProviderAccount · object | OpenaiProviderAccount · object | DatabricksProviderAccount · object | ClouderaProviderAccount · object | SelfHostedModelProviderAccount · object | OpenRouterProviderAccount · object | SambaNovaProviderAccount · object | XAIProviderAccount · object | BasetenProviderAccount · object | AwsSagemakerProviderAccount · object | CerebrasProviderAccount · object | WaferProviderAccount · object | FireworksAIProviderAccount · object | TypeSafeProviderAccount · object | SnowflakeCortexProviderAccount · object | ElevenLabsProviderAccount · object | DeepgramProviderAccount · object | CartesiaProviderAccount · object | SmallestAiProviderAccount · object | AWSClaudePlatformProviderAccount · object | AwsBedrockMantleProviderAccount · object | VirtualModelProviderAccount · object | CustomEndpointProviderAccount · object | TrueFoundryManagedProviderAccount · object | MCPServerProviderAccount · object | GuardrailConfigGroup · object | ClusterManifest · object | WorkspaceManifest · object | Job · object | Helm · object | Volume · object | Notebook · object | RStudio · object | Workflow · object | AsyncService · object | SSHServer · object | SparkJob · object | TenantModelRateLimitConfig · object | TenantMCPRateLimitConfig · object | RateLimitConfig · object | LoadBalancingConfig · object | GuardrailsConfig · object | BudgetConfig · object | TenantBudgetConfig · object | TeamBudgetConfig · object | GatewayOTELConfig · object | GatewayMetadataConfig · object | GlobalSettings · object | GatewayDataAccessConfig · object | GatewayDataRoutingConfig · object | GatewayLoggingConfig · object | TeamManifest · object | PolicyManifest · object | RoleManifest · object | AlertConfig · object | VirtualAccountManifest · object | CommonToolsSettings · object | MCPGatewaySettings · object | AIFeaturesSettings · object | SecuritySettings · object | SecretGroupManifest · object | AgentManifestV2 · object | EnvironmentManifest · object | TracingProjectManifest · object | RemoteMCPServerManifest · object | VirtualMCPServerManifest · object | OpenAPIMCPServerManifest · object | StdioMCPServerManifest · object | TfyManagedMCPServerManifest · object | RoleBindingManifest · object | AgentChannelManifest · object | OidcClientManifest · object"},"dryRun":{"oneOf":[{"type":"boolean","default":false,"description":"Dry run the apply operation without actually applying","uniqueKey":"dryRun.oneOf.0","typeLabel":"boolean"},{"type":"null","default":false,"description":"Dry run the apply operation without actually applying","uniqueKey":"dryRun.oneOf.1","typeLabel":"null"}],"uniqueKey":"dryRun","typeLabel":"boolean | null"},"force":{"oneOf":[{"type":"boolean","description":"When `true`, acknowledges that updating this manifest may delete existing per-subject auth records. Currently used for MCP server apply.","uniqueKey":"force.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"When `true`, acknowledges that updating this manifest may delete existing per-subject auth records. Currently used for MCP server apply.","uniqueKey":"force.oneOf.1","typeLabel":"null"}],"uniqueKey":"force","typeLabel":"boolean | null"}},"required":["manifest"],"title":"TrueFoundryApplyRequest","x-fern-type-name":"TrueFoundryApplyRequest","uniqueKey":"","typeLabel":"TrueFoundryApplyRequest · object"},"examples":{"Example":{"title":"Example","value":{"manifest":{"type":"ml-repo","name":"\u003cstring>","storage_integration_fqn":"\u003cstring>","description":"\u003cstring>","collaborators":[{"subject":"\u003cstring>","role_id":"\u003cstring>"}]},"dryRun":false,"force":true}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"3b0c68ca-f131-4300-8ea3-be6d38c17898":{"description":"The created or updated resource, and the action that was performed.","content":{"application/json":{"schema":{"type":"object","properties":{"existingManifest":{"oneOf":[{"type":"object","title":"MLRepoManifest","description":"The existing manifest of the resource","required":["type","name","storage_integration_fqn"],"x-fern-type-name":"MLRepoManifest","properties":{"type":{"description":"+value=ml-repo","type":"string","enum":["ml-repo"],"default":"ml-repo","isRequired":true,"uniqueKey":"existingManifest.oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the ML Repo.","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,98}[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.0.name","typeLabel":"string"},"storage_integration_fqn":{"description":"Storage Integration to store artifacts and models. A storage integration represents a connected blob storage like AWS S3 / Azure Blob Storage / Google Cloud Storage.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.0.storage_integration_fqn","typeLabel":"string"},"description":{"description":"Description for the ML Repo.","type":"string","pattern":"^.{0,500}$","uniqueKey":"existingManifest.oneOf.0.description","typeLabel":"string"},"collaborators":{"description":"Users and Teams that have access to MLRepo","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.0.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.0.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.0.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.0.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.0.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.0.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.0","typeLabel":"MLRepoManifest · object"},{"type":"object","title":"ArtifactManifest","description":"The existing manifest of the resource","required":["type","source","step","metadata"],"x-fern-type-name":"ArtifactManifest","properties":{"metadata":{"description":"Key value metadata. Should be valid JSON. For e.g. `{\"business-unit\": \"sales\", \"quality\": \"good\", \"rating\": 4.5}`","type":"object","isRequired":true,"uniqueKey":"existingManifest.oneOf.1.metadata","typeLabel":"object"},"type":{"description":"Artifact Version","type":"string","enum":["artifact-version"],"default":"artifact-version","isRequired":true,"uniqueKey":"existingManifest.oneOf.1.type","typeLabel":"enum\u003cstring>"},"source":{"oneOf":[{"type":"object","title":"TrueFoundryManagedSource","description":"TrueFoundry Managed Source","required":["type"],"x-fern-type-name":"TrueFoundryManagedSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["truefoundry"],"default":"truefoundry","isRequired":true,"uniqueKey":"existingManifest.oneOf.1.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"uri":{"description":"URI","type":"string","pattern":"^(s3|gs|wasbs)://.*","uniqueKey":"existingManifest.oneOf.1.source.oneOf.0.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.1.source.oneOf.0","typeLabel":"TrueFoundryManagedSource · object"},{"type":"object","title":"ExternalBlobStorageSource","description":"External Blob Storage Source","required":["type","uri"],"x-fern-type-name":"ExternalBlobStorageSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["external"],"default":"external","isRequired":true,"uniqueKey":"existingManifest.oneOf.1.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uri":{"description":"URI referencing a path in the blob storage bucket linked to the MLRepo","type":"string","pattern":"^(s3|gs|wasbs)://.*","isRequired":true,"uniqueKey":"existingManifest.oneOf.1.source.oneOf.1.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.1.source.oneOf.1","typeLabel":"ExternalBlobStorageSource · object"},{"type":"object","title":"LocalArtifactSource","description":"Artifact Source","required":["type","paths"],"x-fern-type-name":"LocalArtifactSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"existingManifest.oneOf.1.source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"paths":{"description":"Array of ArtifactPath objects representing the source and destination paths","type":"array","items":{"type":"object","required":["src"],"properties":{"src":{"description":"Local file or folder path","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.1.source.oneOf.2.paths.items.[INDEX].src","typeLabel":"string"},"dest":{"description":"Relative path where the file or folder will be uploaded to in the artifact","type":"string","uniqueKey":"existingManifest.oneOf.1.source.oneOf.2.paths.items.[INDEX].dest","typeLabel":"string"}},"title":"ArtifactPath","x-fern-type-name":"ArtifactPath","uniqueKey":"existingManifest.oneOf.1.source.oneOf.2.paths.items.[INDEX]","typeLabel":"ArtifactPath · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.1.source.oneOf.2.paths","typeLabel":"ArtifactPath · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.1.source.oneOf.2","typeLabel":"LocalArtifactSource · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.1.source","typeLabel":"TrueFoundryManagedSource · object | ExternalBlobStorageSource · object | LocalArtifactSource · object"},"step":{"description":"Step/Epoch number in an iterative training loop the artifact version was created. Generally useful when logging a model version from a MLRepo Run","type":"integer","minimum":0,"default":0,"isRequired":true,"uniqueKey":"existingManifest.oneOf.1.step","typeLabel":"integer"},"name":{"description":"Name of the entity","type":"string","maxLength":256,"pattern":"^[A-Za-z0-9_\\-]+$","uniqueKey":"existingManifest.oneOf.1.name","typeLabel":"string"},"ml_repo":{"description":"Name of the ML Repo","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,98}[a-zA-Z0-9]$","uniqueKey":"existingManifest.oneOf.1.ml_repo","typeLabel":"string"},"version":{"description":"Version of the entity","type":"integer","minimum":1,"uniqueKey":"existingManifest.oneOf.1.version","typeLabel":"integer"},"description":{"oneOf":[{"description":"Description","type":"string","maxLength":512,"uniqueKey":"existingManifest.oneOf.1.description.oneOf.0","typeLabel":"string"},{"description":"Description","type":"null","maxLength":512,"uniqueKey":"existingManifest.oneOf.1.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.1.description","typeLabel":"string | null"},"version_alias":{"description":"Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)","type":"string","maxLength":128,"pattern":"^v[a-zA-Z0-9.-]*([a-zA-Z0-9]+)$","uniqueKey":"existingManifest.oneOf.1.version_alias","typeLabel":"string"},"run_id":{"description":"ID of the MLRepo Run that generated the artifact version","type":"string","uniqueKey":"existingManifest.oneOf.1.run_id","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.1","typeLabel":"ArtifactManifest · object"},{"type":"object","title":"ModelManifest","description":"The existing manifest of the resource","required":["type","source","step","metadata"],"x-fern-type-name":"ModelManifest","properties":{"metadata":{"description":"Key value metadata. Should be valid JSON. For e.g. `{\"business-unit\": \"sales\", \"quality\": \"good\", \"rating\": 4.5}`","type":"object","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.metadata","typeLabel":"object"},"type":{"description":"Model Version","type":"string","enum":["model-version"],"default":"model-version","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.type","typeLabel":"enum\u003cstring>"},"source":{"oneOf":[{"type":"object","title":"TrueFoundryManagedSource","description":"TrueFoundry Managed Source","required":["type"],"x-fern-type-name":"TrueFoundryManagedSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["truefoundry"],"default":"truefoundry","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"uri":{"description":"URI","type":"string","pattern":"^(s3|gs|wasbs)://.*","uniqueKey":"existingManifest.oneOf.2.source.oneOf.0.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.2.source.oneOf.0","typeLabel":"TrueFoundryManagedSource · object"},{"type":"object","title":"ExternalBlobStorageSource","description":"External Blob Storage Source","required":["type","uri"],"x-fern-type-name":"ExternalBlobStorageSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["external"],"default":"external","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uri":{"description":"URI referencing a path in the blob storage bucket linked to the MLRepo","type":"string","pattern":"^(s3|gs|wasbs)://.*","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.source.oneOf.1.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.2.source.oneOf.1","typeLabel":"ExternalBlobStorageSource · object"},{"type":"object","title":"LocalModelSource","description":"Model Source","required":["type","file_or_folder"],"x-fern-type-name":"LocalModelSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"file_or_folder":{"description":"Path to the model file or folder","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.source.oneOf.2.file_or_folder","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.2.source.oneOf.2","typeLabel":"LocalModelSource · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.2.source","typeLabel":"TrueFoundryManagedSource · object | ExternalBlobStorageSource · object | LocalModelSource · object"},"step":{"description":"Step/Epoch number in an iterative training loop the model version was created. Generally useful when logging a model version from a MLRepo Run","type":"integer","minimum":0,"default":0,"isRequired":true,"uniqueKey":"existingManifest.oneOf.2.step","typeLabel":"integer"},"name":{"description":"Name of the entity","type":"string","maxLength":256,"pattern":"^[A-Za-z0-9_\\-]+$","uniqueKey":"existingManifest.oneOf.2.name","typeLabel":"string"},"ml_repo":{"description":"Name of the ML Repo","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,98}[a-zA-Z0-9]$","uniqueKey":"existingManifest.oneOf.2.ml_repo","typeLabel":"string"},"version":{"description":"Version of the entity","type":"integer","minimum":1,"uniqueKey":"existingManifest.oneOf.2.version","typeLabel":"integer"},"description":{"oneOf":[{"description":"Description","type":"string","maxLength":512,"uniqueKey":"existingManifest.oneOf.2.description.oneOf.0","typeLabel":"string"},{"description":"Description","type":"null","maxLength":512,"uniqueKey":"existingManifest.oneOf.2.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.2.description","typeLabel":"string | null"},"version_alias":{"description":"Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)","type":"string","maxLength":128,"pattern":"^v[a-zA-Z0-9.-]*([a-zA-Z0-9]+)$","uniqueKey":"existingManifest.oneOf.2.version_alias","typeLabel":"string"},"framework":{"oneOf":[{"type":"object","title":"TransformersFramework","description":"Transformers","required":["type"],"x-fern-type-name":"TransformersFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["transformers"],"default":"transformers","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.0.type","typeLabel":"enum\u003cstring>"},"library_name":{"oneOf":[{"description":"Name of the library for the framework","type":"string","enum":["transformers","sentence-transformers","diffusers"],"default":"transformers","title":"LibraryName","x-fern-type-name":"LibraryName","uniqueKey":"existingManifest.oneOf.2.framework.oneOf.0.library_name.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"Name of the library for the framework","type":"null","enum":["transformers","sentence-transformers","diffusers"],"default":"transformers","title":"LibraryName","x-fern-type-name":"LibraryName","uniqueKey":"existingManifest.oneOf.2.framework.oneOf.0.library_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.0.library_name","typeLabel":"enum\u003cstring> | null"},"pipeline_tag":{"oneOf":[{"description":"The `pipeline()` task this model can be used with e.g. `text-generation`. See [huggingface docs](https://huggingface.co/docs/transformers/main/en/main_classes/pipelines#transformers.pipeline.task) for all possible values","type":"string","default":null,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.0.pipeline_tag.oneOf.0","typeLabel":"string"},{"description":"The `pipeline()` task this model can be used with e.g. `text-generation`. See [huggingface docs](https://huggingface.co/docs/transformers/main/en/main_classes/pipelines#transformers.pipeline.task) for all possible values","type":"null","default":null,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.0.pipeline_tag.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.0.pipeline_tag","typeLabel":"string | null"},"base_model":{"oneOf":[{"description":"Base model Id from HuggingFace Hub. If this is a finetuned model, this points to the base model id used for finetuning.","type":"string","default":null,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.0.base_model.oneOf.0","typeLabel":"string"},{"description":"Base model Id from HuggingFace Hub. If this is a finetuned model, this points to the base model id used for finetuning.","type":"null","default":null,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.0.base_model.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.0.base_model","typeLabel":"string | null"}},"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.0","typeLabel":"TransformersFramework · object"},{"type":"object","title":"TensorFlowFramework","description":"Tensorflow","required":["type"],"x-fern-type-name":"TensorFlowFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["tensorflow"],"default":"tensorflow","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.1","typeLabel":"TensorFlowFramework · object"},{"type":"object","title":"SklearnFramework","description":"Sklearn","required":["type"],"x-fern-type-name":"SklearnFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["sklearn"],"default":"sklearn","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.2.type","typeLabel":"enum\u003cstring>"},"model_filepath":{"description":"Relative path to the model file in the model version contents","type":"string","uniqueKey":"existingManifest.oneOf.2.framework.oneOf.2.model_filepath","typeLabel":"string"},"serialization_format":{"description":"Serialization format used to save the sklearn model","type":"string","enum":["cloudpickle","joblib","pickle"],"title":"SklearnSerializationFormat","x-fern-type-name":"SklearnSerializationFormat","uniqueKey":"existingManifest.oneOf.2.framework.oneOf.2.serialization_format","typeLabel":"enum\u003cstring>"},"model_schema":{"description":"Scikit Learn Model Schema","type":"object","required":["infer_method_name","inputs","outputs"],"properties":{"infer_method_name":{"description":"Name of the method used for inference","type":"string","enum":["predict","predict_proba"],"title":"InferMethodName","x-fern-type-name":"InferMethodName","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.2.model_schema.infer_method_name","typeLabel":"enum\u003cstring>"},"inputs":{"description":"Schema of the input","type":"array","items":{"type":"object","uniqueKey":"existingManifest.oneOf.2.framework.oneOf.2.model_schema.inputs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.2.model_schema.inputs","typeLabel":"object[]"},"outputs":{"description":"Schema of the output","type":"array","items":{"type":"object","uniqueKey":"existingManifest.oneOf.2.framework.oneOf.2.model_schema.outputs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.2.model_schema.outputs","typeLabel":"object[]"}},"title":"SklearnModelSchema","x-fern-type-name":"SklearnModelSchema","uniqueKey":"existingManifest.oneOf.2.framework.oneOf.2.model_schema","typeLabel":"SklearnModelSchema · object"}},"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.2","typeLabel":"SklearnFramework · object"},{"type":"object","title":"PyTorchFramework","description":"PyTorch","required":["type"],"x-fern-type-name":"PyTorchFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["pytorch"],"default":"pytorch","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.3","typeLabel":"PyTorchFramework · object"},{"type":"object","title":"KerasFramework","description":"Keras","required":["type"],"x-fern-type-name":"KerasFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["keras"],"default":"keras","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.4.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.4","typeLabel":"KerasFramework · object"},{"type":"object","title":"XGBoostFramework","description":"XGBoost","required":["type"],"x-fern-type-name":"XGBoostFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["xgboost"],"default":"xgboost","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.5.type","typeLabel":"enum\u003cstring>"},"serialization_format":{"description":"Serialization format used to save the xgboost model","type":"string","enum":["cloudpickle","joblib","pickle","json"],"title":"XGBoostSerializationFormat","x-fern-type-name":"XGBoostSerializationFormat","uniqueKey":"existingManifest.oneOf.2.framework.oneOf.5.serialization_format","typeLabel":"enum\u003cstring>"},"model_filepath":{"description":"Relative path to the model file in the model version contents","type":"string","uniqueKey":"existingManifest.oneOf.2.framework.oneOf.5.model_filepath","typeLabel":"string"},"model_schema":{"description":"Schema of the XGBoost model","type":"object","required":["infer_method_name","inputs","outputs"],"properties":{"infer_method_name":{"description":"Name of the method used for inference","type":"string","enum":["predict"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.5.model_schema.infer_method_name","typeLabel":"enum\u003cstring>"},"inputs":{"description":"Schema of the input","type":"array","items":{"type":"object","uniqueKey":"existingManifest.oneOf.2.framework.oneOf.5.model_schema.inputs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.5.model_schema.inputs","typeLabel":"object[]"},"outputs":{"description":"Schema of the output","type":"array","items":{"type":"object","uniqueKey":"existingManifest.oneOf.2.framework.oneOf.5.model_schema.outputs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.5.model_schema.outputs","typeLabel":"object[]"}},"title":"XGBoostModelSchema","x-fern-type-name":"XGBoostModelSchema","uniqueKey":"existingManifest.oneOf.2.framework.oneOf.5.model_schema","typeLabel":"XGBoostModelSchema · object"}},"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.5","typeLabel":"XGBoostFramework · object"},{"type":"object","title":"LightGBMFramework","description":"LightGBM","required":["type"],"x-fern-type-name":"LightGBMFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["lightgbm"],"default":"lightgbm","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.6.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.6","typeLabel":"LightGBMFramework · object"},{"type":"object","title":"FastAIFramework","description":"FastAI","required":["type"],"x-fern-type-name":"FastAIFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["fastai"],"default":"fastai","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.7.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.7","typeLabel":"FastAIFramework · object"},{"type":"object","title":"H2OFramework","description":"H2O","required":["type"],"x-fern-type-name":"H2OFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["h2o"],"default":"h2o","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.8.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.8","typeLabel":"H2OFramework · object"},{"type":"object","title":"ONNXFramework","description":"ONNX","required":["type"],"x-fern-type-name":"ONNXFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["onnx"],"default":"onnx","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.9.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.9","typeLabel":"ONNXFramework · object"},{"type":"object","title":"SpaCyFramework","description":"SpaCy","required":["type"],"x-fern-type-name":"SpaCyFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["spacy"],"default":"spacy","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.10.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.10","typeLabel":"SpaCyFramework · object"},{"type":"object","title":"StatsModelsFramework","description":"StatsModels","required":["type"],"x-fern-type-name":"StatsModelsFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["statsmodels"],"default":"statsmodels","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.11.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.11","typeLabel":"StatsModelsFramework · object"},{"type":"object","title":"GluonFramework","description":"Gluon","required":["type"],"x-fern-type-name":"GluonFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["gluon"],"default":"gluon","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.12.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.12","typeLabel":"GluonFramework · object"},{"type":"object","title":"PaddleFramework","description":"Paddle","required":["type"],"x-fern-type-name":"PaddleFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["paddle"],"default":"paddle","isRequired":true,"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.13.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.2.framework.oneOf.13","typeLabel":"PaddleFramework · object"}],"uniqueKey":"existingManifest.oneOf.2.framework","typeLabel":"TransformersFramework · object | TensorFlowFramework · object | SklearnFramework · object | PyTorchFramework · object | KerasFramework · object | XGBoostFramework · object | LightGBMFramework · object | FastAIFramework · object | H2OFramework · object | ONNXFramework · object | SpaCyFramework · object | StatsModelsFramework · object | GluonFramework · object | PaddleFramework · object"},"environment":{"description":"Runtime environment describing python version and dependencies for running the model","type":"object","properties":{"python_version":{"description":"Python version to use when running the model","type":"string","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"existingManifest.oneOf.2.environment.python_version","typeLabel":"string"},"pip_packages":{"description":"pip dependencies needed for running the model","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.2.environment.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.2.environment.pip_packages","typeLabel":"string[]"}},"title":"ModelVersionEnvironment","x-fern-type-name":"ModelVersionEnvironment","uniqueKey":"existingManifest.oneOf.2.environment","typeLabel":"ModelVersionEnvironment · object"},"run_id":{"description":"ID of the MLRepo Run that generated the model version","type":"string","uniqueKey":"existingManifest.oneOf.2.run_id","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.2","typeLabel":"ModelManifest · object"},{"type":"object","title":"ChatPromptManifest","description":"The existing manifest of the resource","required":["type","messages","metadata"],"x-fern-type-name":"ChatPromptManifest","properties":{"metadata":{"description":"Key value metadata. Should be valid JSON. For e.g. `{\"business-unit\": \"sales\", \"quality\": \"good\", \"rating\": 4.5}`","type":"object","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.metadata","typeLabel":"object"},"type":{"description":"Type of the prompt","type":"string","enum":["chat_prompt"],"default":"chat_prompt","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.type","typeLabel":"enum\u003cstring>"},"messages":{"description":"List of messages in the chat conversation, must be non-empty","type":"array","items":{"oneOf":[{"type":"object","title":"SystemMessage","description":"System message for the chat","required":["role","content"],"x-fern-type-name":"ChatMessageTurn","properties":{"role":{"description":"Role of the message","type":"string","enum":["system"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"oneOf":[{"type":"string","description":"Text content for the system message","pattern":"^.[\\s\\S]*$","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.0.content.oneOf.0","typeLabel":"string"},{"type":"object","title":"BlobStorageReference","description":"Text content for the system message","required":["type","path","mime_type"],"x-fern-type-name":"BlobStorageReference","properties":{"type":{"description":"+value=blob-storage","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.0.content.oneOf.1.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the content in blob storage","type":"string","pattern":"^.{1,}$","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.0.content.oneOf.1.path","typeLabel":"string"},"mime_type":{"description":"MIME type of the content","type":"string","enum":["text/plain","application/json","image/png","image/jpeg","application/x-directory"],"title":"MimeType","x-fern-type-name":"MimeType","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.0.content.oneOf.1.mime_type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.0.content.oneOf.1","typeLabel":"BlobStorageReference · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.0.content","typeLabel":"string | BlobStorageReference · object"},"name":{"description":"Name of the system","type":"string","uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.0","typeLabel":"SystemMessage · object"},{"type":"object","title":"AssistantMessage","description":"Assistant message turn","required":["role"],"x-fern-type-name":"ChatMessageTurn","properties":{"role":{"description":"Role of the message","type":"string","enum":["assistant"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"content":{"oneOf":[{"type":"string","description":"Text content for the assistant message","uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.0","typeLabel":"string"},{"type":"array","items":{"oneOf":[{"type":"object","title":"TextContentPart","description":"Text content for the message","required":["type","text"],"x-fern-type-name":"TextContentPart","properties":{"type":{"description":"Type of the content part","type":"string","enum":["text"],"default":"text","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"any","description":"Text content for the message","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.0.text","typeLabel":"any"}},"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.0","typeLabel":"TextContentPart · object"},{"type":"object","title":"RefusalContentPart","required":["type","refusal"],"x-fern-type-name":"RefusalContentPart","properties":{"type":{"description":"Type of the content part","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.1.type","typeLabel":"string"},"refusal":{"description":"Reason","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.1.refusal","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.1","typeLabel":"RefusalContentPart · object"}],"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX]","typeLabel":"TextContentPart · object | RefusalContentPart · object"},"description":"Text content for the assistant message","uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.1","typeLabel":"(TextContentPart · object | RefusalContentPart · object)[]"},{"type":"object","title":"BlobStorageReference","description":"Text content for the assistant message","required":["type","path","mime_type"],"x-fern-type-name":"BlobStorageReference","properties":{"type":{"description":"+value=blob-storage","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.2.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the content in blob storage","type":"string","pattern":"^.{1,}$","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.2.path","typeLabel":"string"},"mime_type":{"description":"MIME type of the content","type":"string","enum":["text/plain","application/json","image/png","image/jpeg","application/x-directory"],"title":"MimeType","x-fern-type-name":"MimeType","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.2.mime_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.content.oneOf.2","typeLabel":"BlobStorageReference · object"}],"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.content","typeLabel":"string | (TextContentPart · object | RefusalContentPart · object)[] | BlobStorageReference · object"},"tool_calls":{"description":"List of tool calls made by the assistant","type":"array","items":{"type":"object","required":["type","id","function"],"properties":{"type":{"description":"Type of the tool call","type":"string","enum":["function"],"default":"function","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"id":{"description":"Unique identifier for the tool call","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].id","typeLabel":"string"},"function":{"type":"object","required":["name","arguments"],"properties":{"name":{"description":"Name of the tool/function being called","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].function.name","typeLabel":"string"},"arguments":{"description":"Arguments passed to the tool/function","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].function.arguments","typeLabel":"string"}},"title":"Function","x-fern-type-name":"Function","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].function","typeLabel":"Function · object"}},"title":"ToolCall","x-fern-type-name":"ToolCall","uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.tool_calls.items.[INDEX]","typeLabel":"ToolCall · object"},"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.tool_calls","typeLabel":"ToolCall · object[]"},"name":{"description":"Name of the assistant this message is from","type":"string","uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.1","typeLabel":"AssistantMessage · object"},{"type":"object","title":"UserMessage","description":"User message turn","required":["role","content"],"x-fern-type-name":"ChatMessageTurn","properties":{"role":{"description":"Role of the message","type":"string","enum":["user"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"content":{"oneOf":[{"type":"string","description":"Content of the user message. can be a mix of text and images","pattern":"^.[\\s\\S]*$","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.0","typeLabel":"string"},{"type":"array","items":{"oneOf":[{"type":"object","title":"TextContentPart","description":"Text content for the message","required":["type","text"],"x-fern-type-name":"TextContentPart","properties":{"type":{"description":"Type of the content part","type":"string","enum":["text"],"default":"text","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"any","description":"Text content for the message","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.0.text","typeLabel":"any"}},"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.0","typeLabel":"TextContentPart · object"},{"type":"object","title":"ImageContentPart","description":"Image content for the message","required":["type","image_url"],"x-fern-type-name":"ImageContentPart","properties":{"type":{"description":"Type of the content part","type":"string","enum":["image_url"],"default":"image_url","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"image_url":{"description":"Image URL linking to the image","type":"object","required":["url"],"properties":{"url":{"type":"any","description":"Image URL linking to the image","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1.image_url.url","typeLabel":"any"},"detail":{"description":"Details","type":"string","uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1.image_url.detail","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1.image_url","typeLabel":"object"}},"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1","typeLabel":"ImageContentPart · object"}],"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX]","typeLabel":"TextContentPart · object | ImageContentPart · object"},"description":"Content of the user message. can be a mix of text and images","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.1","typeLabel":"(TextContentPart · object | ImageContentPart · object)[]"},{"type":"object","title":"BlobStorageReference","description":"Content of the user message. can be a mix of text and images","required":["type","path","mime_type"],"x-fern-type-name":"BlobStorageReference","properties":{"type":{"description":"+value=blob-storage","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.2.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the content in blob storage","type":"string","pattern":"^.{1,}$","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.2.path","typeLabel":"string"},"mime_type":{"description":"MIME type of the content","type":"string","enum":["text/plain","application/json","image/png","image/jpeg","application/x-directory"],"title":"MimeType","x-fern-type-name":"MimeType","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.2.mime_type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2.content.oneOf.2","typeLabel":"BlobStorageReference · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2.content","typeLabel":"string | (TextContentPart · object | ImageContentPart · object)[] | BlobStorageReference · object"},"name":{"description":"Name of the user this message is from","type":"string","uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.2","typeLabel":"UserMessage · object"},{"type":"object","title":"ToolMessage","description":"Tool message for the chat","required":["role","content","tool_call_id"],"x-fern-type-name":"ChatMessageTurn","properties":{"role":{"description":"Role of the message","type":"string","enum":["tool"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.3.role","typeLabel":"enum\u003cstring>"},"content":{"oneOf":[{"type":"string","description":"Content of the tool call result","pattern":"^.[\\s\\S]*$","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.3.content.oneOf.0","typeLabel":"string"},{"type":"object","title":"BlobStorageReference","description":"Content of the tool call result","required":["type","path","mime_type"],"x-fern-type-name":"BlobStorageReference","properties":{"type":{"description":"+value=blob-storage","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.3.content.oneOf.1.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the content in blob storage","type":"string","pattern":"^.{1,}$","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.3.content.oneOf.1.path","typeLabel":"string"},"mime_type":{"description":"MIME type of the content","type":"string","enum":["text/plain","application/json","image/png","image/jpeg","application/x-directory"],"title":"MimeType","x-fern-type-name":"MimeType","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.3.content.oneOf.1.mime_type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.3.content.oneOf.1","typeLabel":"BlobStorageReference · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.3.content","typeLabel":"string | BlobStorageReference · object"},"tool_call_id":{"description":"Unique identifier for the tool call","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.3.tool_call_id","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.3","typeLabel":"ToolMessage · object"},{"type":"object","title":"DeveloperMessage","description":"Developer message for the chat","required":["role","content"],"x-fern-type-name":"ChatMessageTurn","properties":{"role":{"description":"The role of the messages author, in this case developer.","type":"string","enum":["developer"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.4.role","typeLabel":"enum\u003cstring>"},"content":{"oneOf":[{"type":"string","description":"The contents of the developer message.","pattern":"^.[\\s\\S]*$","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.4.content.oneOf.0","typeLabel":"string"},{"type":"object","title":"BlobStorageReference","description":"The contents of the developer message.","required":["type","path","mime_type"],"x-fern-type-name":"BlobStorageReference","properties":{"type":{"description":"+value=blob-storage","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.4.content.oneOf.1.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the content in blob storage","type":"string","pattern":"^.{1,}$","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.4.content.oneOf.1.path","typeLabel":"string"},"mime_type":{"description":"MIME type of the content","type":"string","enum":["text/plain","application/json","image/png","image/jpeg","application/x-directory"],"title":"MimeType","x-fern-type-name":"MimeType","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.4.content.oneOf.1.mime_type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.4.content.oneOf.1","typeLabel":"BlobStorageReference · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.4.content","typeLabel":"string | BlobStorageReference · object"},"name":{"description":"An optional name for the participant.","type":"string","uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.4.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX].oneOf.4","typeLabel":"DeveloperMessage · object"}],"uniqueKey":"existingManifest.oneOf.3.messages.items.[INDEX]","typeLabel":"SystemMessage · object | AssistantMessage · object | UserMessage · object | ToolMessage · object | DeveloperMessage · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.messages","typeLabel":"(SystemMessage · object | AssistantMessage · object | UserMessage · object | ToolMessage · object | DeveloperMessage · object)[]"},"name":{"description":"Name of the entity","type":"string","maxLength":256,"pattern":"^[A-Za-z0-9_\\-]+$","uniqueKey":"existingManifest.oneOf.3.name","typeLabel":"string"},"ml_repo":{"description":"Name of the ML Repo","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,98}[a-zA-Z0-9]$","uniqueKey":"existingManifest.oneOf.3.ml_repo","typeLabel":"string"},"version":{"description":"Version of the entity","type":"integer","minimum":1,"uniqueKey":"existingManifest.oneOf.3.version","typeLabel":"integer"},"description":{"oneOf":[{"description":"Description","type":"string","maxLength":512,"uniqueKey":"existingManifest.oneOf.3.description.oneOf.0","typeLabel":"string"},{"description":"Description","type":"null","maxLength":512,"uniqueKey":"existingManifest.oneOf.3.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.3.description","typeLabel":"string | null"},"version_alias":{"description":"Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)","type":"string","maxLength":128,"pattern":"^v[a-zA-Z0-9.-]*([a-zA-Z0-9]+)$","uniqueKey":"existingManifest.oneOf.3.version_alias","typeLabel":"string"},"variables":{"description":"Variables referenced in messages and that can be replaced when running generation","type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"existingManifest.oneOf.3.variables.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"existingManifest.oneOf.3.variables.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.3.variables.additionalProperties","typeLabel":"string | null"},"uniqueKey":"existingManifest.oneOf.3.variables","typeLabel":"object"},"model_configuration":{"description":"Add a model from Gateway along with parameters to be used for chat completion","type":"object","required":["provider","model"],"properties":{"provider":{"description":"Name of the provider, must be one of the integration providers configured for the Gateway","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.model_configuration.provider","typeLabel":"string"},"model":{"description":"Name of the model to be used for generations. This model should be available in the provider","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-.]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.model_configuration.model","typeLabel":"string"},"parameters":{"description":"Parameters to pass to the model when generating","type":"object","properties":{"max_tokens":{"type":"integer","uniqueKey":"existingManifest.oneOf.3.model_configuration.parameters.max_tokens","typeLabel":"integer"},"temperature":{"type":"number","uniqueKey":"existingManifest.oneOf.3.model_configuration.parameters.temperature","typeLabel":"number"},"top_k":{"type":"number","uniqueKey":"existingManifest.oneOf.3.model_configuration.parameters.top_k","typeLabel":"number"},"top_p":{"type":"number","uniqueKey":"existingManifest.oneOf.3.model_configuration.parameters.top_p","typeLabel":"number"},"stop":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.3.model_configuration.parameters.stop.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.3.model_configuration.parameters.stop.oneOf.0","typeLabel":"string[]"},{"type":"string","uniqueKey":"existingManifest.oneOf.3.model_configuration.parameters.stop.oneOf.1","typeLabel":"string"}],"uniqueKey":"existingManifest.oneOf.3.model_configuration.parameters.stop","typeLabel":"string[] | string"}},"title":"Parameters","x-fern-type-name":"Parameters","uniqueKey":"existingManifest.oneOf.3.model_configuration.parameters","typeLabel":"Parameters · object"},"extra_parameters":{"description":"Arbitrary extra parameters to pass to the model when generating","type":"object","uniqueKey":"existingManifest.oneOf.3.model_configuration.extra_parameters","typeLabel":"object"}},"title":"ModelConfiguration","x-fern-type-name":"ModelConfiguration","uniqueKey":"existingManifest.oneOf.3.model_configuration","typeLabel":"ModelConfiguration · object"},"tools":{"description":"List of tools to be used in the chat prompt","type":"array","items":{"description":"Schema defining a tool for the chat prompt","type":"object","required":["type","function"],"properties":{"type":{"description":"Type of the tool","type":"string","enum":["function"],"default":"function","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.tools.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"function":{"description":"Schema defining a function for tool calls","type":"object","required":["name"],"properties":{"name":{"description":"Name of the function","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.tools.items.[INDEX].function.name","typeLabel":"string"},"description":{"description":"Description of the function","type":"string","uniqueKey":"existingManifest.oneOf.3.tools.items.[INDEX].function.description","typeLabel":"string"},"parameters":{"description":"Parameters schema for the function","type":"object","uniqueKey":"existingManifest.oneOf.3.tools.items.[INDEX].function.parameters","typeLabel":"object"},"strict":{"description":"Indicates if the function should be called strictly","type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.3.tools.items.[INDEX].function.strict","typeLabel":"boolean"}},"title":"FunctionSchema","x-fern-type-name":"FunctionSchema","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.tools.items.[INDEX].function","typeLabel":"FunctionSchema · object"}},"title":"ToolSchema","x-fern-type-name":"ToolSchema","uniqueKey":"existingManifest.oneOf.3.tools.items.[INDEX]","typeLabel":"ToolSchema · object"},"uniqueKey":"existingManifest.oneOf.3.tools","typeLabel":"ToolSchema · object[]"},"guardrails":{"description":"Guardrails","type":"object","properties":{"input_guardrails":{"description":"List of guardrail names to apply to user input messages before processing.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.3.guardrails.input_guardrails.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.3.guardrails.input_guardrails","typeLabel":"string[]"},"output_guardrails":{"description":"List of guardrail names to apply to AI response messages before returning to user.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.3.guardrails.output_guardrails.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.3.guardrails.output_guardrails","typeLabel":"string[]"}},"title":"Guardrails","x-fern-type-name":"Guardrails","uniqueKey":"existingManifest.oneOf.3.guardrails","typeLabel":"Guardrails · object"},"response_format":{"oneOf":[{"type":"object","title":"JsonObjectResponseFormat","description":"Simple JSON mode response format","required":["type"],"x-fern-type-name":"JsonObjectResponseFormat","properties":{"type":{"description":"Type of response format","type":"string","enum":["json_object"],"default":"json_object","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.response_format.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.3.response_format.oneOf.0","typeLabel":"JsonObjectResponseFormat · object"},{"type":"object","title":"JsonSchemaResponseFormat","description":"Structured JSON response format with schema validation","required":["type","json_schema"],"x-fern-type-name":"JsonSchemaResponseFormat","properties":{"type":{"description":"Type of response format","type":"string","enum":["json_schema"],"default":"json_schema","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.response_format.oneOf.1.type","typeLabel":"enum\u003cstring>"},"json_schema":{"description":"JSON schema for structured output","type":"object","required":["name","schema"],"properties":{"name":{"description":"Name of the schema","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.response_format.oneOf.1.json_schema.name","typeLabel":"string"},"schema":{"description":"JSON schema object defining the expected structure","type":"object","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.response_format.oneOf.1.json_schema.schema","typeLabel":"object"}},"title":"JsonSchema","x-fern-type-name":"JsonSchema","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.response_format.oneOf.1.json_schema","typeLabel":"JsonSchema · object"}},"uniqueKey":"existingManifest.oneOf.3.response_format.oneOf.1","typeLabel":"JsonSchemaResponseFormat · object"}],"uniqueKey":"existingManifest.oneOf.3.response_format","typeLabel":"JsonObjectResponseFormat · object | JsonSchemaResponseFormat · object"},"routing_config":{"oneOf":[{"type":"object","title":"WeightBasedLoadBalancing","description":"Weight-based Load Balancing","required":["type","load_balance_targets"],"x-fern-type-name":"WeightBasedLoadBalancing","properties":{"type":{"description":"Routing Type","type":"string","enum":["weight-based-routing"],"default":"weight-based-routing","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"load_balance_targets":{"description":"List of targets for load balancing with weights","type":"array","items":{"description":"Weight-based Target","type":"object","required":["target","weight"],"properties":{"target":{"description":"Target model or provider FQN","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].target","typeLabel":"string"},"weight":{"description":"Relative weight for routing decisions (higher values mean more traffic)","type":"integer","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].weight","typeLabel":"integer"},"retry_config":{"type":"object","required":["attempts"],"properties":{"attempts":{"description":"Number of attempts to retry the request","type":"integer","minimum":0,"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].retry_config.attempts","typeLabel":"integer"},"delay":{"description":"Delay between retries in milliseconds","type":"integer","minimum":0,"exclusiveMinimum":true,"default":100,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].retry_config.delay","typeLabel":"integer"},"on_status_codes":{"description":"Status codes to retry on","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].retry_config.on_status_codes.items.[INDEX]","typeLabel":"string"},"default":["429","500","502","503"],"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].retry_config.on_status_codes","typeLabel":"string[]"}},"title":"RetryConfig","x-fern-type-name":"RetryConfig","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].retry_config","typeLabel":"RetryConfig · object"},"fallback_status_codes":{"description":"Status Codes for which the request will fallback to other targets. If the status code is not present in fallback_status_codes, it fails immediately.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].fallback_status_codes.items.[INDEX]","typeLabel":"string"},"default":["401","403","404","408","429","500","502","503"],"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].fallback_status_codes","typeLabel":"string[]"},"fallback_candidate":{"description":"Whether this target is a fallback candidate. If set to false, this model will not be considered as a fallback option for targets of this load-balance-rule","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].fallback_candidate","typeLabel":"boolean"},"override_params":{"description":"Optional parameters to override in the request","type":"object","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].override_params","typeLabel":"object"},"headers_override":{"description":"Headers Override","type":"object","properties":{"remove":{"description":"List of headers to remove from upstream request","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].headers_override.remove.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].headers_override.remove","typeLabel":"string[]"},"set":{"description":"Headers to add or overwrite in upstream request","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].headers_override.set.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].headers_override.set","typeLabel":"object"}},"title":"HeadersOverride","x-fern-type-name":"HeadersOverride","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].headers_override","typeLabel":"HeadersOverride · object"},"metadata_match":{"description":"Optional metadata key-value pairs that must match incoming request metadata headers for this target to be considered for routing.","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].metadata_match.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX].metadata_match","typeLabel":"object"}},"title":"LoadBalanceTarget","x-fern-type-name":"LoadBalanceTarget","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets.items.[INDEX]","typeLabel":"LoadBalanceTarget · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.load_balance_targets","typeLabel":"LoadBalanceTarget · object[]"},"sticky_routing":{"description":"Sticky Routing","type":"object","required":["ttl_seconds","session_identifiers"],"properties":{"ttl_seconds":{"description":"Sticky mapping TTL in seconds","type":"integer","minimum":1800,"maximum":86400,"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.sticky_routing.ttl_seconds","typeLabel":"integer"},"session_identifiers":{"description":"List of identifier selectors used to build sticky key","type":"array","items":{"description":"Sticky Session Identifier","type":"object","required":["source","key"],"properties":{"source":{"description":"Source from which session identifier value will be extracted","type":"string","enum":["headers","metadata"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.sticky_routing.session_identifiers.items.[INDEX].source","typeLabel":"enum\u003cstring>"},"key":{"description":"Key to read from selected source","type":"string","pattern":"^[!#$%\u0026'*+.^_`|~0-9A-Za-z-]{1,128}$","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.sticky_routing.session_identifiers.items.[INDEX].key","typeLabel":"string"}},"title":"StickySessionIdentifier","x-fern-type-name":"StickySessionIdentifier","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.sticky_routing.session_identifiers.items.[INDEX]","typeLabel":"StickySessionIdentifier · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.sticky_routing.session_identifiers","typeLabel":"StickySessionIdentifier · object[]"}},"title":"StickyRouting","x-fern-type-name":"StickyRouting","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0.sticky_routing","typeLabel":"StickyRouting · object"}},"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.0","typeLabel":"WeightBasedLoadBalancing · object"},{"type":"object","title":"LatencyBasedLoadBalancing","description":"Latency-based Load Balancing","required":["type","load_balance_targets"],"x-fern-type-name":"LatencyBasedLoadBalancing","properties":{"type":{"description":"Routing Type","type":"string","enum":["latency-based-routing"],"default":"latency-based-routing","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"load_balance_targets":{"description":"List of targets for latency-based load balancing","type":"array","items":{"description":"Latency-based Target","type":"object","required":["target"],"properties":{"target":{"description":"Target model or provider FQN","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].target","typeLabel":"string"},"retry_config":{"type":"object","required":["attempts"],"properties":{"attempts":{"description":"Number of attempts to retry the request","type":"integer","minimum":0,"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].retry_config.attempts","typeLabel":"integer"},"delay":{"description":"Delay between retries in milliseconds","type":"integer","minimum":0,"exclusiveMinimum":true,"default":100,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].retry_config.delay","typeLabel":"integer"},"on_status_codes":{"description":"Status codes to retry on","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].retry_config.on_status_codes.items.[INDEX]","typeLabel":"string"},"default":["429","500","502","503"],"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].retry_config.on_status_codes","typeLabel":"string[]"}},"title":"RetryConfig","x-fern-type-name":"RetryConfig","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].retry_config","typeLabel":"RetryConfig · object"},"fallback_status_codes":{"description":"Status Codes for which the request will fallback to other targets. If the status code is not present in fallback_status_codes, it fails immediately.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].fallback_status_codes.items.[INDEX]","typeLabel":"string"},"default":["401","403","404","408","429","500","502","503"],"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].fallback_status_codes","typeLabel":"string[]"},"fallback_candidate":{"description":"Whether this target is a fallback candidate. If set to false, this model will not be considered as a fallback option for targets of this load-balance-rule","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].fallback_candidate","typeLabel":"boolean"},"override_params":{"description":"Optional parameters to override in the request","type":"object","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].override_params","typeLabel":"object"},"headers_override":{"description":"Headers Override","type":"object","properties":{"remove":{"description":"List of headers to remove from upstream request","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].headers_override.remove.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].headers_override.remove","typeLabel":"string[]"},"set":{"description":"Headers to add or overwrite in upstream request","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].headers_override.set.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].headers_override.set","typeLabel":"object"}},"title":"HeadersOverride","x-fern-type-name":"HeadersOverride","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].headers_override","typeLabel":"HeadersOverride · object"},"metadata_match":{"description":"Optional metadata key-value pairs that must match incoming request metadata headers for this target to be considered for routing.","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].metadata_match.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX].metadata_match","typeLabel":"object"}},"title":"LatencyBasedLoadBalanceTarget","x-fern-type-name":"LatencyBasedLoadBalanceTarget","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets.items.[INDEX]","typeLabel":"LatencyBasedLoadBalanceTarget · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1.load_balance_targets","typeLabel":"LatencyBasedLoadBalanceTarget · object[]"}},"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.1","typeLabel":"LatencyBasedLoadBalancing · object"},{"type":"object","title":"PriorityBasedLoadBalancing","description":"Priority-based Load Balancing","required":["type","load_balance_targets"],"x-fern-type-name":"PriorityBasedLoadBalancing","properties":{"type":{"description":"Routing Type","type":"string","enum":["priority-based-routing"],"default":"priority-based-routing","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.type","typeLabel":"enum\u003cstring>"},"load_balance_targets":{"description":"List of targets for priority-based load balancing","type":"array","items":{"type":"object","required":["target","priority"],"properties":{"target":{"description":"Target model or provider FQN","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].target","typeLabel":"string"},"priority":{"description":"Priority for the target, Lower the number, higher the priority (0 is the highest priority)","type":"integer","minimum":0,"default":0,"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].priority","typeLabel":"integer"},"sla_cutoff":{"type":"object","properties":{"time_per_output_token_ms":{"description":"Time per output token threshold in milliseconds. If time per output token exceeds this value, the target will be marked as unhealthy","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].sla_cutoff.time_per_output_token_ms","typeLabel":"integer"},"time_to_first_token_ms":{"description":"Time to first token threshold in milliseconds. If time to first token exceeds this value, the target will be marked as unhealthy","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].sla_cutoff.time_to_first_token_ms","typeLabel":"integer"}},"title":"SLACutoff","x-fern-type-name":"SLACutoff","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].sla_cutoff","typeLabel":"SLACutoff · object"},"retry_config":{"type":"object","required":["attempts"],"properties":{"attempts":{"description":"Number of attempts to retry the request","type":"integer","minimum":0,"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].retry_config.attempts","typeLabel":"integer"},"delay":{"description":"Delay between retries in milliseconds","type":"integer","minimum":0,"exclusiveMinimum":true,"default":100,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].retry_config.delay","typeLabel":"integer"},"on_status_codes":{"description":"Status codes to retry on","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].retry_config.on_status_codes.items.[INDEX]","typeLabel":"string"},"default":["429","500","502","503"],"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].retry_config.on_status_codes","typeLabel":"string[]"}},"title":"RetryConfig","x-fern-type-name":"RetryConfig","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].retry_config","typeLabel":"RetryConfig · object"},"fallback_status_codes":{"description":"Status Codes for which the request will fallback to other targets. If the status code is not present in fallback_status_codes, it fails immediately.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].fallback_status_codes.items.[INDEX]","typeLabel":"string"},"default":["401","403","404","408","429","500","502","503"],"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].fallback_status_codes","typeLabel":"string[]"},"fallback_candidate":{"description":"Whether this target is a fallback candidate. If set to false, this model will not be considered as a fallback option for targets of this load-balance-rule","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].fallback_candidate","typeLabel":"boolean"},"override_params":{"description":"Optional parameters to override in the request","type":"object","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].override_params","typeLabel":"object"},"headers_override":{"description":"Headers Override","type":"object","properties":{"remove":{"description":"List of headers to remove from upstream request","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].headers_override.remove.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].headers_override.remove","typeLabel":"string[]"},"set":{"description":"Headers to add or overwrite in upstream request","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].headers_override.set.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].headers_override.set","typeLabel":"object"}},"title":"HeadersOverride","x-fern-type-name":"HeadersOverride","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].headers_override","typeLabel":"HeadersOverride · object"},"metadata_match":{"description":"Optional metadata key-value pairs that must match incoming request metadata headers for this target to be considered for routing.","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].metadata_match.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX].metadata_match","typeLabel":"object"}},"title":"PriorityBasedLoadBalanceTarget","x-fern-type-name":"PriorityBasedLoadBalanceTarget","uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets.items.[INDEX]","typeLabel":"PriorityBasedLoadBalanceTarget · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2.load_balance_targets","typeLabel":"PriorityBasedLoadBalanceTarget · object[]"}},"uniqueKey":"existingManifest.oneOf.3.routing_config.oneOf.2","typeLabel":"PriorityBasedLoadBalancing · object"}],"uniqueKey":"existingManifest.oneOf.3.routing_config","typeLabel":"WeightBasedLoadBalancing · object | LatencyBasedLoadBalancing · object | PriorityBasedLoadBalancing · object"},"cache_config":{"oneOf":[{"type":"object","title":"SemanticCacheConfig","description":"Semantic Cache Configuration","required":["type","similarity_threshold","ttl"],"x-fern-type-name":"SemanticCacheConfig","properties":{"type":{"description":"Cache type","type":"string","enum":["semantic"],"default":"semantic","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.cache_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"similarity_threshold":{"description":"Similarity threshold for semantic matching (between 0 and 1)","type":"number","minimum":0,"exclusiveMinimum":true,"maximum":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.cache_config.oneOf.0.similarity_threshold","typeLabel":"number"},"ttl":{"description":"Time-to-live for cached entries in seconds (max 3 days)","type":"number","minimum":0,"exclusiveMinimum":true,"maximum":259200,"default":3600,"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.cache_config.oneOf.0.ttl","typeLabel":"number"},"namespace":{"description":"Cache namespace (defaults to 'default' if not provided)","type":"string","uniqueKey":"existingManifest.oneOf.3.cache_config.oneOf.0.namespace","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.3.cache_config.oneOf.0","typeLabel":"SemanticCacheConfig · object"},{"type":"object","title":"ExactMatchCacheConfig","description":"Exact Match Cache Configuration","required":["type","ttl"],"x-fern-type-name":"ExactMatchCacheConfig","properties":{"type":{"description":"Cache type","type":"string","enum":["exact-match"],"default":"exact-match","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.cache_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"ttl":{"description":"Time-to-live for cached entries in seconds (max 3 days)","type":"number","minimum":0,"exclusiveMinimum":true,"maximum":259200,"default":3600,"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.cache_config.oneOf.1.ttl","typeLabel":"number"},"namespace":{"description":"Cache namespace (defaults to 'default' if not provided)","type":"string","uniqueKey":"existingManifest.oneOf.3.cache_config.oneOf.1.namespace","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.3.cache_config.oneOf.1","typeLabel":"ExactMatchCacheConfig · object"}],"uniqueKey":"existingManifest.oneOf.3.cache_config","typeLabel":"SemanticCacheConfig · object | ExactMatchCacheConfig · object"},"logging_config":{"description":"Logging configuration for the chat prompt","type":"object","required":["enabled"],"properties":{"enabled":{"description":"Whether logging is enabled for the chat prompt","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.3.logging_config.enabled","typeLabel":"boolean"},"tracing_project_fqn":{"description":"The FQN of the tracing project where the logs will be stored","type":"string","uniqueKey":"existingManifest.oneOf.3.logging_config.tracing_project_fqn","typeLabel":"string"}},"title":"LoggingConfig","x-fern-type-name":"LoggingConfig","uniqueKey":"existingManifest.oneOf.3.logging_config","typeLabel":"LoggingConfig · object"},"sub_agents":{"description":"Sub agents to be used in the chat prompt","type":"array","items":{"description":"Sub agent configuration for the chat prompt","type":"object","required":["name"],"properties":{"name":{"description":"Name of the sub agent","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.3.sub_agents.items.[INDEX].name","typeLabel":"string"}},"title":"SubAgent","x-fern-type-name":"SubAgent","uniqueKey":"existingManifest.oneOf.3.sub_agents.items.[INDEX]","typeLabel":"SubAgent · object"},"uniqueKey":"existingManifest.oneOf.3.sub_agents","typeLabel":"SubAgent · object[]"}},"uniqueKey":"existingManifest.oneOf.3","typeLabel":"ChatPromptManifest · object"},{"type":"object","title":"DataDirectoryManifest","description":"The existing manifest of the resource","required":["type","name","ml_repo","metadata","source"],"x-fern-type-name":"DataDirectoryManifest","properties":{"type":{"description":"Type","type":"string","enum":["data-dir"],"default":"data-dir","isRequired":true,"uniqueKey":"existingManifest.oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the data directory","type":"string","maxLength":256,"pattern":"^[A-Za-z0-9_\\-]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.4.name","typeLabel":"string"},"ml_repo":{"description":"Name of the ML Repo to create the data directory under","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,98}[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.4.ml_repo","typeLabel":"string"},"metadata":{"description":"Key Value metadata. Should be valid JSON. For e.g. `{\"business-unit\": \"sales\", \"quality\": \"good\", \"rating\": 4.5}`","type":"object","isRequired":true,"uniqueKey":"existingManifest.oneOf.4.metadata","typeLabel":"object"},"source":{"oneOf":[{"type":"object","title":"TrueFoundryManagedSource","description":"TrueFoundry Managed Source","required":["type"],"x-fern-type-name":"TrueFoundryManagedSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["truefoundry"],"default":"truefoundry","isRequired":true,"uniqueKey":"existingManifest.oneOf.4.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"uri":{"description":"URI","type":"string","pattern":"^(s3|gs|wasbs)://.*","uniqueKey":"existingManifest.oneOf.4.source.oneOf.0.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.4.source.oneOf.0","typeLabel":"TrueFoundryManagedSource · object"},{"type":"object","title":"ExternalBlobStorageSource","description":"External Blob Storage Source","required":["type","uri"],"x-fern-type-name":"ExternalBlobStorageSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["external"],"default":"external","isRequired":true,"uniqueKey":"existingManifest.oneOf.4.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uri":{"description":"URI referencing a path in the blob storage bucket linked to the MLRepo","type":"string","pattern":"^(s3|gs|wasbs)://.*","isRequired":true,"uniqueKey":"existingManifest.oneOf.4.source.oneOf.1.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.4.source.oneOf.1","typeLabel":"ExternalBlobStorageSource · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.4.source","typeLabel":"TrueFoundryManagedSource · object | ExternalBlobStorageSource · object"},"description":{"oneOf":[{"description":"Description for the data directory","type":"string","maxLength":512,"uniqueKey":"existingManifest.oneOf.4.description.oneOf.0","typeLabel":"string"},{"description":"Description for the data directory","type":"null","maxLength":512,"uniqueKey":"existingManifest.oneOf.4.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.4.description","typeLabel":"string | null"}},"uniqueKey":"existingManifest.oneOf.4","typeLabel":"DataDirectoryManifest · object"},{"type":"object","title":"Service","description":"The existing manifest of the resource","required":["type","replicas","name","image","ports"],"x-fern-type-name":"Service","properties":{"name":{"description":"Name of the service. This uniquely identifies this service in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.name","typeLabel":"string"},"image":{"oneOf":[{"type":"object","title":"Build","description":"Describes how we build our code into a Docker image.","required":["type","build_source","build_spec"],"x-fern-type-name":"Build","properties":{"type":{"description":"+value=build","type":"string","enum":["build"],"default":"build","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.type","typeLabel":"enum\u003cstring>"},"build_source":{"oneOf":[{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_source.oneOf.0.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_source.oneOf.0","typeLabel":"RemoteSource · object"},{"type":"object","title":"GitSource","description":"Describes that we are using code stored in a git repository to build our image","required":["type","repo_url","ref"],"x-fern-type-name":"GitSource","properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"The repository URL.","type":"string","pattern":"^(https?://)\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_source.oneOf.1.repo_url","typeLabel":"string"},"ref":{"description":"The commit SHA.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_source.oneOf.1.ref","typeLabel":"string"},"branch_name":{"description":"Selecting branch will select latest commit SHA of the branch.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_source.oneOf.1.branch_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_source.oneOf.1","typeLabel":"GitSource · object"},{"type":"object","title":"LocalSource","description":"Describes that we are using code stored in a local developement environment to build our image","required":["type","project_root_path","local_build"],"x-fern-type-name":"LocalSource","properties":{"type":{"description":"+value=local","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"project_root_path":{"description":"Local project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_source.oneOf.2.project_root_path","typeLabel":"string"},"local_build":{"description":"run docker build locally","type":"boolean","default":false,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_source.oneOf.2.local_build","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_source.oneOf.2","typeLabel":"LocalSource · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_source","typeLabel":"RemoteSource · object | GitSource · object | LocalSource · object"},"build_spec":{"oneOf":[{"type":"object","title":"DockerFileBuild","description":"Describes that we are using a dockerfile to build our image","required":["type","dockerfile_path","build_context_path"],"x-fern-type-name":"DockerFileBuild","properties":{"type":{"description":"+value=dockerfile","type":"string","enum":["dockerfile"],"default":"dockerfile","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.type","typeLabel":"enum\u003cstring>"},"dockerfile_path":{"description":"The file path of the Dockerfile relative to project root path.","type":"string","default":"./Dockerfile","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.dockerfile_path","typeLabel":"string"},"build_context_path":{"description":"Build context path for the Dockerfile relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.command","typeLabel":"string | string[]"},"build_args":{"description":"Build arguments to pass to docker build","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.build_args.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.build_args","typeLabel":"object"},"build_secrets":{"description":"Build secrets you can use in run statements inside dockerfile like RUN --mount=type=secret,id=pip_index_url ... you can learn more about build secrets here https://www.truefoundry.com/docs/docker-build-secrets","type":"array","items":{"type":"object","required":["id","value"],"properties":{"id":{"description":"The ID of the build secret.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].id","typeLabel":"string"},"value":{"description":"The value of the build secret.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].value","typeLabel":"string"},"env":{"description":"The name of the environment variable to inject the secret into.","type":"string","pattern":"^[_a-zA-Z0-9][_a-zA-Z0-9]{1,31}$","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].env","typeLabel":"string"}},"title":"BuildSecret","x-fern-type-name":"BuildSecret","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX]","typeLabel":"BuildSecret · object"},"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0.build_secrets","typeLabel":"BuildSecret · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.0","typeLabel":"DockerFileBuild · object"},{"type":"object","title":"PythonBuild","description":"Describes that we are using python to build a container image with a specific python version and pip packages installed.","required":["type","build_context_path","command"],"x-fern-type-name":"PythonBuild","properties":{"type":{"description":"+value=tfy-python-buildpack","type":"string","enum":["tfy-python-buildpack"],"default":"tfy-python-buildpack","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.type","typeLabel":"enum\u003cstring>"},"build_context_path":{"description":"Build path relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.command","typeLabel":"string | string[]"},"python_version":{"description":"Python version to run your application. Should be one of the tags listed on [Official Python Docker Page](https://hub.docker.com/_/python)","type":"string","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_version","typeLabel":"string"},"requirements_path":{"description":"Path to `requirements.txt` relative to\n`Path to build context`","type":"string","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.pip_packages","typeLabel":"string[]"},"python_dependencies":{"oneOf":[{"type":"object","title":"Pip","description":"Use pip to install requirements files and packages","required":["type"],"x-fern-type-name":"Pip","properties":{"type":{"description":"+value=pip","type":"string","enum":["pip"],"default":"pip","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.type","typeLabel":"enum\u003cstring>"},"requirements_path":{"description":"Path to `requirements.txt` relative to `Path to build context`","type":"string","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0","typeLabel":"Pip · object"},{"type":"object","title":"UV","description":"Use `uv` to setup env.\nYour build context root must contain `pyproject.toml` and `uv.lock`","required":["type"],"x-fern-type-name":"UV","properties":{"type":{"description":"+value=uv","type":"string","enum":["uv"],"default":"uv","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uv_version":{"description":"UV version to use","type":"string","default":"latest","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.uv_version","typeLabel":"string"},"sync_options":{"description":"Sync options to pass to uv command","type":"string","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.sync_options","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1","typeLabel":"UV · object"},{"type":"object","title":"Poetry","description":"Use `poetry` to setup env.\nYour build context root must contain `pyproject.toml` and `poetry.lock`","required":["type"],"x-fern-type-name":"Poetry","properties":{"type":{"description":"+value=poetry","type":"string","enum":["poetry"],"default":"poetry","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.type","typeLabel":"enum\u003cstring>"},"poetry_version":{"oneOf":[{"type":"string","description":"Poetry version to use","default":"latest","enum":["latest"],"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","description":"Poetry version to use","default":"latest","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version.oneOf.1","typeLabel":"string"}],"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version","typeLabel":"enum\u003cstring> | string"},"install_options":{"description":"install options to pass to poetry command","type":"string","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.install_options","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2","typeLabel":"Poetry · object"}],"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.python_dependencies","typeLabel":"Pip · object | UV · object | Poetry · object"},"apt_packages":{"description":"Debian packages to install via `apt get`.\nIn Python/YAML E.g. [\"git\", \"ffmpeg\", \"htop\"]","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.apt_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.apt_packages","typeLabel":"string[]"},"cuda_version":{"description":"Version of CUDA Toolkit and CUDNN to install in the image\nThese combinations are based off of publically available docker images on docker hub\nYou can also specify a valid tag of the form {cuda_version_number}-cudnn{cudnn_version_number}-{runtime|devel}-ubuntu{ubuntu_version}\nRefer https://hub.docker.com/r/nvidia/cuda/tags for valid set of values\nNote: We use deadsnakes ubuntu ppa to add Python that currently supports only Ubuntu 18.04, 20.04 and 22.04","type":"string","pattern":"^((\\d+\\.\\d+(\\.\\d+)?-cudnn(\\d+)?-(runtime|devel)-ubuntu\\d+\\.\\d+)|11\\.0-cudnn8|11\\.1-cudnn8|11\\.2-cudnn8|11\\.3-cudnn8|11\\.4-cudnn8|11\\.5-cudnn8|11\\.6-cudnn8|11\\.7-cudnn8|11\\.8-cudnn8|12\\.0-cudnn8|12\\.1-cudnn8|12\\.2-cudnn8|12\\.3-cudnn9|12\\.4-cudnn9|12\\.5-cudnn9|12\\.6-cudnn9|12\\.8-cudnn9|12\\.9-cudnn9)$","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1.cuda_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec.oneOf.1","typeLabel":"PythonBuild · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.build_spec","typeLabel":"DockerFileBuild · object | PythonBuild · object"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.5.image.oneOf.0.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.0","typeLabel":"Build · object"},{"type":"object","title":"Image","description":"Describes that we are using a pre-built image stored in a Docker Image registry","required":["type","image_uri"],"x-fern-type-name":"Image","properties":{"type":{"description":"+value=image","type":"string","enum":["image"],"default":"image","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.1.type","typeLabel":"enum\u003cstring>"},"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.1.image_uri","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.5.image.oneOf.1.docker_registry","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.5.image.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.5.image.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.5.image.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"existingManifest.oneOf.5.image.oneOf.1.command","typeLabel":"string | string[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image.oneOf.1","typeLabel":"Image · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.image","typeLabel":"Build · object | Image · object"},"ports":{"description":"Expose the deployment to make it accessible over the internet or keep it private. Implement authentication to restrict access. [Docs](https://docs.truefoundry.com/docs/define-ports-and-domains)","type":"array","items":{"description":"Describes the ports the service should be exposed to.","type":"object","required":["port","protocol","expose"],"properties":{"port":{"description":"Port number to expose.","type":"integer","minimum":1,"maximum":65535,"default":80,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].port","typeLabel":"integer"},"protocol":{"description":"Protocol for the port.","type":"string","enum":["TCP","UDP"],"default":"TCP","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].protocol","typeLabel":"enum\u003cstring>"},"expose":{"description":"Expose the port","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].expose","typeLabel":"boolean"},"app_protocol":{"description":"Application Protocol for the port.\nSelect the application protocol used by your service. For most use cases, this should be `http`(HTTP/1.1).\nIf you are running a gRPC server, select the `grpc` option.\nThis is only applicable if `expose=true`.","type":"string","enum":["http","grpc","tcp"],"default":"http","uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].app_protocol","typeLabel":"enum\u003cstring>"},"host":{"description":"Host e.g. ai.example.com, app.truefoundry.com","type":"string","pattern":"^((([a-zA-Z0-9\\-]{1,63}\\.)([a-zA-Z0-9\\-]{1,63}\\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$","uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].host","typeLabel":"string"},"path":{"description":"Path e.g. /v1/api/ml/, /v2/docs/","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].path","typeLabel":"string"},"rewrite_path_to":{"description":"Rewrite the path prefix to a different path.\nIf `path` is `/v1/api` and `rewrite_path_to` is `/api`. The URI in the HTTP request `http://0.0.0.0:8080/v1/api/houses` will be rewritten to `http://0.0.0.0:8080/api/houses` before the request is forwarded your service.\nDefaults to `/`.\nThis is only applicable if `path` is given.","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].rewrite_path_to","typeLabel":"string"},"auth":{"oneOf":[{"type":"object","title":"BasicAuthCreds","description":"Username and password","required":["type","username","password"],"x-fern-type-name":"BasicAuthCreds","properties":{"type":{"description":"+value=basic_auth","type":"string","enum":["basic_auth"],"default":"basic_auth","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"username":{"description":"Username for service auth - Username for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.0.username","typeLabel":"string"},"password":{"description":"Password for service auth - Password for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.0.password","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.0","typeLabel":"BasicAuthCreds · object"},{"type":"object","title":"JwtAuthConfig","description":"Configure JWT-based authentication using JWKS","required":["type","integration_fqn"],"x-fern-type-name":"JwtAuthConfig","properties":{"type":{"description":"+value=jwt_auth","type":"string","enum":["jwt_auth"],"default":"jwt_auth","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"integration_fqn":{"description":"FQN of the JWT Auth integration. If you can't find your integration here,\nadd it through the [Integrations](/integrations) page","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.integration_fqn","typeLabel":"string"},"enable_login":{"description":"Enable login for the service","type":"boolean","uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.enable_login","typeLabel":"boolean"},"claims":{"description":"List of key-value pairs of claims to verify in the JWT token","type":"array","items":{"type":"object","required":["key","values"],"properties":{"key":{"type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].key","typeLabel":"string"},"values":{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX]","typeLabel":"object"},"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.claims","typeLabel":"object[]"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.1","typeLabel":"JwtAuthConfig · object"},{"type":"object","title":"TrueFoundryInteractiveLogin","description":"Login with truefoundry","required":["type"],"x-fern-type-name":"TrueFoundryInteractiveLogin","properties":{"type":{"description":"+value=truefoundry_oauth","type":"string","enum":["truefoundry_oauth"],"default":"truefoundry_oauth","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.2.type","typeLabel":"enum\u003cstring>"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth.oneOf.2","typeLabel":"TrueFoundryInteractiveLogin · object"}],"uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX].auth","typeLabel":"BasicAuthCreds · object | JwtAuthConfig · object | TrueFoundryInteractiveLogin · object"}},"title":"Port","x-fern-type-name":"Port","uniqueKey":"existingManifest.oneOf.5.ports.items.[INDEX]","typeLabel":"Port · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.ports","typeLabel":"Port · object[]"},"type":{"description":"+value=service","type":"string","enum":["service"],"default":"service","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.type","typeLabel":"enum\u003cstring>"},"replicas":{"oneOf":[{"type":"number","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"maximum":500,"minimum":0,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.replicas.oneOf.0","typeLabel":"number"},{"type":"object","title":"ServiceAutoscaling","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"required":["metrics","min_replicas","max_replicas"],"x-fern-type-name":"ServiceAutoscaling","properties":{"min_replicas":{"description":"Minimum number of replicas to keep available","type":"integer","minimum":0,"default":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.replicas.oneOf.1.min_replicas","typeLabel":"integer"},"max_replicas":{"description":"Maximum number of replicas allowed for the component.","type":"integer","minimum":1,"maximum":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.replicas.oneOf.1.max_replicas","typeLabel":"integer"},"metrics":{"oneOf":[{"type":"object","title":"CPUUtilizationMetric","description":"Metrics to use for the autoscaler","required":["type","value"],"x-fern-type-name":"CPUUtilizationMetric","properties":{"type":{"description":"+value=cpu_utilization","type":"string","enum":["cpu_utilization"],"default":"cpu_utilization","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.0.type","typeLabel":"enum\u003cstring>"},"value":{"description":"Percentage of cpu request averaged over all replicas which the autoscaler should try to maintain","type":"integer","minimum":1,"maximum":100,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.0.value","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.0","typeLabel":"CPUUtilizationMetric · object"},{"type":"object","title":"RPSMetric","description":"Metrics to use for the autoscaler","required":["type","value"],"x-fern-type-name":"RPSMetric","properties":{"type":{"description":"+value=rps","type":"string","enum":["rps"],"default":"rps","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.1.type","typeLabel":"enum\u003cstring>"},"value":{"description":"Average request per second averaged over all replicas that autoscaler should try to maintain","type":"number","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.1.value","typeLabel":"number"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.1","typeLabel":"RPSMetric · object"},{"type":"object","title":"CronMetric","description":"Metrics to use for the autoscaler","required":["type","start","end","timezone"],"x-fern-type-name":"CronMetric","properties":{"type":{"description":"+value=cron","type":"string","enum":["cron"],"default":"cron","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.2.type","typeLabel":"enum\u003cstring>"},"start":{"description":"Cron expression indicating the start of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.2.start","typeLabel":"string"},"end":{"description":"Cron expression indicating the end of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.2.end","typeLabel":"string"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","default":"UTC","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.2.timezone","typeLabel":"string"},"desired_replicas":{"description":"Desired number of replicas during the given interval. Default value is max_replicas.","type":"integer","minimum":1,"uniqueKey":"existingManifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.2.desired_replicas","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.replicas.oneOf.1.metrics.oneOf.2","typeLabel":"CronMetric · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.replicas.oneOf.1.metrics","typeLabel":"CPUUtilizationMetric · object | RPSMetric · object | CronMetric · object"},"polling_interval":{"description":"This is the interval to check each trigger on.","type":"integer","minimum":0,"default":30,"uniqueKey":"existingManifest.oneOf.5.replicas.oneOf.1.polling_interval","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.replicas.oneOf.1","typeLabel":"ServiceAutoscaling · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.replicas","typeLabel":"number | ServiceAutoscaling · object"},"artifacts_download":{"description":"Download and cache models in a volume to enhance loading speeds and reduce costs by avoiding repeated downloads. [Docs](https://docs.truefoundry.com/docs/download-and-cache-models)","type":"object","required":["artifacts"],"properties":{"artifacts":{"description":"List of artifacts to be cached","type":"array","items":{"oneOf":[{"type":"object","title":"TrueFoundryArtifactSource","description":"Input for Artifact from TrueFoundry Artifact Registry","required":["type","artifact_version_fqn","download_path_env_variable"],"x-fern-type-name":"TrueFoundryArtifactSource","properties":{"type":{"description":"+value=truefoundry-artifact","type":"string","enum":["truefoundry-artifact"],"default":"truefoundry-artifact","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"artifact_version_fqn":{"description":"Artifact or Model Version FQN of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.0.artifact_version_fqn","typeLabel":"string"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.0.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.0","typeLabel":"TrueFoundryArtifactSource · object"},{"type":"object","title":"HuggingfaceArtifactSource","description":"Input for Artifact from Huggingface Model Hub","required":["type","model_id","revision","ignore_patterns","download_path_env_variable"],"x-fern-type-name":"HuggingfaceArtifactSource","properties":{"type":{"description":"+value=huggingface-hub","type":"string","enum":["huggingface-hub"],"default":"huggingface-hub","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"model_id":{"description":"Model ID of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.1.model_id","typeLabel":"string"},"revision":{"description":"Revision of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.1.revision","typeLabel":"string"},"ignore_patterns":{"description":"List of patterns to ignore while downloading the artifact","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns.items.[INDEX]","typeLabel":"string"},"default":["*.h5","*.ot","*.tflite","*.msgpack"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns","typeLabel":"string[]"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.1.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.5.artifacts_download.artifacts.items.[INDEX].oneOf.1","typeLabel":"HuggingfaceArtifactSource · object"}],"uniqueKey":"existingManifest.oneOf.5.artifacts_download.artifacts.items.[INDEX]","typeLabel":"TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.artifacts_download.artifacts","typeLabel":"(TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object)[]"},"cache_volume":{"description":"Describes the volume that will be used to cache the models","type":"object","required":["storage_class","cache_size"],"properties":{"storage_class":{"description":"Storage class of the Volume where artifacts will be cached","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.artifacts_download.cache_volume.storage_class","typeLabel":"string"},"cache_size":{"description":"Size of the Volume (in GB) where artifacts will be cached. Should be greater than twice the size of artifacts getting cached","type":"integer","minimum":1,"maximum":10000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.artifacts_download.cache_volume.cache_size","typeLabel":"integer"}},"title":"ArtifactsCacheVolume","x-fern-type-name":"ArtifactsCacheVolume","uniqueKey":"existingManifest.oneOf.5.artifacts_download.cache_volume","typeLabel":"ArtifactsCacheVolume · object"}},"title":"ArtifactsDownload","x-fern-type-name":"ArtifactsDownload","uniqueKey":"existingManifest.oneOf.5.artifacts_download","typeLabel":"ArtifactsDownload · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"existingManifest.oneOf.5.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.5.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.5.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"existingManifest.oneOf.5.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.5.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.5.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.5.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.5.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"existingManifest.oneOf.5.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"existingManifest.oneOf.5.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"existingManifest.oneOf.5.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"existingManifest.oneOf.5.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.5.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.5.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.5.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.5.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.5.env","typeLabel":"object | null"},"service_account":{"type":"string","uniqueKey":"existingManifest.oneOf.5.service_account","typeLabel":"string"},"mounts":{"description":"Configure data to be mounted to service pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-service)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.5.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.5.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"existingManifest.oneOf.5.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.5.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"existingManifest.oneOf.5.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"existingManifest.oneOf.5.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"labels":{"description":"Labels","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.5.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.5.labels","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"existingManifest.oneOf.5.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"existingManifest.oneOf.5.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"existingManifest.oneOf.5.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"existingManifest.oneOf.5.kustomize","typeLabel":"Kustomize · object"},"liveness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.liveness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.liveness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.liveness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"existingManifest.oneOf.5.liveness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"existingManifest.oneOf.5.liveness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.liveness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"existingManifest.oneOf.5.liveness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"existingManifest.oneOf.5.liveness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"existingManifest.oneOf.5.liveness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"existingManifest.oneOf.5.liveness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"existingManifest.oneOf.5.liveness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"existingManifest.oneOf.5.liveness_probe","typeLabel":"HealthProbe · object"},"readiness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.readiness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.readiness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.readiness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"existingManifest.oneOf.5.readiness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"existingManifest.oneOf.5.readiness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.readiness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"existingManifest.oneOf.5.readiness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"existingManifest.oneOf.5.readiness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"existingManifest.oneOf.5.readiness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"existingManifest.oneOf.5.readiness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"existingManifest.oneOf.5.readiness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"existingManifest.oneOf.5.readiness_probe","typeLabel":"HealthProbe · object"},"startup_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.startup_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.startup_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.startup_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"existingManifest.oneOf.5.startup_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"existingManifest.oneOf.5.startup_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.startup_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"existingManifest.oneOf.5.startup_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"existingManifest.oneOf.5.startup_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"existingManifest.oneOf.5.startup_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"existingManifest.oneOf.5.startup_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"existingManifest.oneOf.5.startup_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"existingManifest.oneOf.5.startup_probe","typeLabel":"HealthProbe · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"existingManifest.oneOf.5.workspace_fqn","typeLabel":"string"},"auto_shutdown":{"type":"object","required":["wait_time"],"properties":{"wait_time":{"description":"The period to wait after the last received request before scaling the replicas to 0. This value should be high enough to allow for the replicas of the service to come up to avoid premature scaling down.","type":"integer","minimum":0,"maximum":604800,"default":900,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.auto_shutdown.wait_time","typeLabel":"integer"}},"title":"Autoshutdown","x-fern-type-name":"Autoshutdown","uniqueKey":"existingManifest.oneOf.5.auto_shutdown","typeLabel":"Autoshutdown · object"},"allow_interception":{"description":"Whether to allow intercepts to be applied for this service.\nThis would inject an additional sidecar in each pod of the service. Not recommended on production","type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.5.allow_interception","typeLabel":"boolean"},"rollout_strategy":{"oneOf":[{"type":"object","title":"Rolling","description":"This strategy updates the pods in a rolling fashion such that a subset of the\ntotal pods are replaced with new version at one time.\nA commonly used strategy can be to have maxUnavailablePercentage close to 0 so that there\nis no downtime and keep the maxSurgePercentage to around 25%. If you are anyways running\na large number of pods, the service can often tolerate a few pods going down - so you\nmax maxUnavailablePercentage = 10 and maxSurgePercentage=0. You can read about it more\n[here](https://spot.io/resources/kubernetes-autoscaling/5-kubernetes-deployment-strategies-roll-out-like-the-pros/)","required":["type","max_unavailable_percentage","max_surge_percentage"],"x-fern-type-name":"Rolling","properties":{"type":{"description":"+value=rolling_update","type":"string","enum":["rolling_update"],"default":"rolling_update","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.rollout_strategy.oneOf.0.type","typeLabel":"enum\u003cstring>"},"max_unavailable_percentage":{"description":"Percentage of total replicas that can be brought down at one time.\nFor a value of 25 when replicas are set to 12 this would mean minimum (25% of 12) = 3 pods might be unavailable during the deployment.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.rollout_strategy.oneOf.0.max_unavailable_percentage","typeLabel":"integer"},"max_surge_percentage":{"description":"Percentage of total replicas of updated image that can be brought up over the total replicas count.\nFor a value of 25 when replicas are set to 12 this would mean (12+(25% of 12) = 15) pods might be running at one time.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.rollout_strategy.oneOf.0.max_surge_percentage","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.5.rollout_strategy.oneOf.0","typeLabel":"Rolling · object"},{"type":"object","title":"Canary","description":"This strategy brings up the new release without bringing the older release down. Traffic is shifted from the older release to the newer release in a staged manner.\nThis can help with verifying the health of the new release without shifting complete traffic.","required":["type","steps"],"x-fern-type-name":"Canary","properties":{"type":{"description":"+value=canary","type":"string","enum":["canary"],"default":"canary","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.rollout_strategy.oneOf.1.type","typeLabel":"enum\u003cstring>"},"steps":{"description":"These steps would be executed in order to enable shifting of traffic slowly from stable to canary version","type":"array","items":{"type":"object","required":["weight_percentage"],"properties":{"weight_percentage":{"description":"Percentage of total traffic to be shifted to the canary release.\nThe rest will continue to go to the existing deployment","type":"integer","minimum":0,"maximum":100,"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.rollout_strategy.oneOf.1.steps.items.[INDEX].weight_percentage","typeLabel":"integer"},"pause_duration":{"description":"Duration for which to pause the release. The release process will wait for these seconds before proceeding to the next step.\nIf this is not set, the step will pause indefinitely on this step","type":"integer","minimum":0,"uniqueKey":"existingManifest.oneOf.5.rollout_strategy.oneOf.1.steps.items.[INDEX].pause_duration","typeLabel":"integer"}},"title":"CanaryStep","x-fern-type-name":"CanaryStep","uniqueKey":"existingManifest.oneOf.5.rollout_strategy.oneOf.1.steps.items.[INDEX]","typeLabel":"CanaryStep · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.5.rollout_strategy.oneOf.1.steps","typeLabel":"CanaryStep · object[]"}},"uniqueKey":"existingManifest.oneOf.5.rollout_strategy.oneOf.1","typeLabel":"Canary · object"},{"type":"object","title":"BlueGreen","description":"This strategy brings up the new release completely before switching the complete load to the new release.\nThis minimizes the time that two versions are serving traffic at the same time.","required":["type"],"x-fern-type-name":"BlueGreen","properties":{"type":{"description":"+value=blue_green","type":"string","enum":["blue_green"],"default":"blue_green","isRequired":true,"uniqueKey":"existingManifest.oneOf.5.rollout_strategy.oneOf.2.type","typeLabel":"enum\u003cstring>"},"enable_auto_promotion":{"description":"Promote the new release to handle the complete traffic. A manual promotion would be needed if this is disabled","type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.5.rollout_strategy.oneOf.2.enable_auto_promotion","typeLabel":"boolean"},"auto_promotion_seconds":{"description":"Promote the new release to handle the complete traffic after waiting for these many seconds","type":"integer","minimum":0,"default":30,"uniqueKey":"existingManifest.oneOf.5.rollout_strategy.oneOf.2.auto_promotion_seconds","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.5.rollout_strategy.oneOf.2","typeLabel":"BlueGreen · object"}],"uniqueKey":"existingManifest.oneOf.5.rollout_strategy","typeLabel":"Rolling · object | Canary · object | BlueGreen · object"}},"uniqueKey":"existingManifest.oneOf.5","typeLabel":"Service · object"},{"type":"object","title":"ApplicationSet","description":"The existing manifest of the resource","required":["type","name"],"x-fern-type-name":"ApplicationSet","properties":{"type":{"description":"+value=application-set","type":"string","enum":["application-set"],"default":"application-set","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the application set.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.name","typeLabel":"string"},"components":{"description":"Array of components with their specifications.","type":"array","items":{"oneOf":[{"type":"object","title":"Service","description":"Describes the configuration for the service","required":["type","replicas","name","image","ports"],"x-fern-type-name":"Service","properties":{"name":{"description":"Name of the service. This uniquely identifies this service in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.name","typeLabel":"string"},"image":{"oneOf":[{"type":"object","title":"Build","description":"Describes how we build our code into a Docker image.","required":["type","build_source","build_spec"],"x-fern-type-name":"Build","properties":{"type":{"description":"+value=build","type":"string","enum":["build"],"default":"build","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.type","typeLabel":"enum\u003cstring>"},"build_source":{"oneOf":[{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.0.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.0","typeLabel":"RemoteSource · object"},{"type":"object","title":"GitSource","description":"Describes that we are using code stored in a git repository to build our image","required":["type","repo_url","ref"],"x-fern-type-name":"GitSource","properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"The repository URL.","type":"string","pattern":"^(https?://)\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.1.repo_url","typeLabel":"string"},"ref":{"description":"The commit SHA.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.1.ref","typeLabel":"string"},"branch_name":{"description":"Selecting branch will select latest commit SHA of the branch.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.1.branch_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.1","typeLabel":"GitSource · object"},{"type":"object","title":"LocalSource","description":"Describes that we are using code stored in a local developement environment to build our image","required":["type","project_root_path","local_build"],"x-fern-type-name":"LocalSource","properties":{"type":{"description":"+value=local","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"project_root_path":{"description":"Local project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.2.project_root_path","typeLabel":"string"},"local_build":{"description":"run docker build locally","type":"boolean","default":false,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.2.local_build","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source.oneOf.2","typeLabel":"LocalSource · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_source","typeLabel":"RemoteSource · object | GitSource · object | LocalSource · object"},"build_spec":{"oneOf":[{"type":"object","title":"DockerFileBuild","description":"Describes that we are using a dockerfile to build our image","required":["type","dockerfile_path","build_context_path"],"x-fern-type-name":"DockerFileBuild","properties":{"type":{"description":"+value=dockerfile","type":"string","enum":["dockerfile"],"default":"dockerfile","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.type","typeLabel":"enum\u003cstring>"},"dockerfile_path":{"description":"The file path of the Dockerfile relative to project root path.","type":"string","default":"./Dockerfile","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.dockerfile_path","typeLabel":"string"},"build_context_path":{"description":"Build context path for the Dockerfile relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.command","typeLabel":"string | string[]"},"build_args":{"description":"Build arguments to pass to docker build","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_args.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_args","typeLabel":"object"},"build_secrets":{"description":"Build secrets you can use in run statements inside dockerfile like RUN --mount=type=secret,id=pip_index_url ... you can learn more about build secrets here https://www.truefoundry.com/docs/docker-build-secrets","type":"array","items":{"type":"object","required":["id","value"],"properties":{"id":{"description":"The ID of the build secret.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].id","typeLabel":"string"},"value":{"description":"The value of the build secret.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].value","typeLabel":"string"},"env":{"description":"The name of the environment variable to inject the secret into.","type":"string","pattern":"^[_a-zA-Z0-9][_a-zA-Z0-9]{1,31}$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].env","typeLabel":"string"}},"title":"BuildSecret","x-fern-type-name":"BuildSecret","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX]","typeLabel":"BuildSecret · object"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_secrets","typeLabel":"BuildSecret · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.0","typeLabel":"DockerFileBuild · object"},{"type":"object","title":"PythonBuild","description":"Describes that we are using python to build a container image with a specific python version and pip packages installed.","required":["type","build_context_path","command"],"x-fern-type-name":"PythonBuild","properties":{"type":{"description":"+value=tfy-python-buildpack","type":"string","enum":["tfy-python-buildpack"],"default":"tfy-python-buildpack","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.type","typeLabel":"enum\u003cstring>"},"build_context_path":{"description":"Build path relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.command","typeLabel":"string | string[]"},"python_version":{"description":"Python version to run your application. Should be one of the tags listed on [Official Python Docker Page](https://hub.docker.com/_/python)","type":"string","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_version","typeLabel":"string"},"requirements_path":{"description":"Path to `requirements.txt` relative to\n`Path to build context`","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.pip_packages","typeLabel":"string[]"},"python_dependencies":{"oneOf":[{"type":"object","title":"Pip","description":"Use pip to install requirements files and packages","required":["type"],"x-fern-type-name":"Pip","properties":{"type":{"description":"+value=pip","type":"string","enum":["pip"],"default":"pip","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.type","typeLabel":"enum\u003cstring>"},"requirements_path":{"description":"Path to `requirements.txt` relative to `Path to build context`","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0","typeLabel":"Pip · object"},{"type":"object","title":"UV","description":"Use `uv` to setup env.\nYour build context root must contain `pyproject.toml` and `uv.lock`","required":["type"],"x-fern-type-name":"UV","properties":{"type":{"description":"+value=uv","type":"string","enum":["uv"],"default":"uv","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uv_version":{"description":"UV version to use","type":"string","default":"latest","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.uv_version","typeLabel":"string"},"sync_options":{"description":"Sync options to pass to uv command","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.sync_options","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1","typeLabel":"UV · object"},{"type":"object","title":"Poetry","description":"Use `poetry` to setup env.\nYour build context root must contain `pyproject.toml` and `poetry.lock`","required":["type"],"x-fern-type-name":"Poetry","properties":{"type":{"description":"+value=poetry","type":"string","enum":["poetry"],"default":"poetry","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.type","typeLabel":"enum\u003cstring>"},"poetry_version":{"type":"any","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version","typeLabel":"any"},"install_options":{"description":"install options to pass to poetry command","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.install_options","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2","typeLabel":"Poetry · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies","typeLabel":"Pip · object | UV · object | Poetry · object"},"apt_packages":{"description":"Debian packages to install via `apt get`.\nIn Python/YAML E.g. [\"git\", \"ffmpeg\", \"htop\"]","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.apt_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.apt_packages","typeLabel":"string[]"},"cuda_version":{"description":"Version of CUDA Toolkit and CUDNN to install in the image\nThese combinations are based off of publically available docker images on docker hub\nYou can also specify a valid tag of the form {cuda_version_number}-cudnn{cudnn_version_number}-{runtime|devel}-ubuntu{ubuntu_version}\nRefer https://hub.docker.com/r/nvidia/cuda/tags for valid set of values\nNote: We use deadsnakes ubuntu ppa to add Python that currently supports only Ubuntu 18.04, 20.04 and 22.04","type":"string","pattern":"^((\\d+\\.\\d+(\\.\\d+)?-cudnn(\\d+)?-(runtime|devel)-ubuntu\\d+\\.\\d+)|11\\.0-cudnn8|11\\.1-cudnn8|11\\.2-cudnn8|11\\.3-cudnn8|11\\.4-cudnn8|11\\.5-cudnn8|11\\.6-cudnn8|11\\.7-cudnn8|11\\.8-cudnn8|12\\.0-cudnn8|12\\.1-cudnn8|12\\.2-cudnn8|12\\.3-cudnn9|12\\.4-cudnn9|12\\.5-cudnn9|12\\.6-cudnn9|12\\.8-cudnn9|12\\.9-cudnn9)$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1.cuda_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec.oneOf.1","typeLabel":"PythonBuild · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.build_spec","typeLabel":"DockerFileBuild · object | PythonBuild · object"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.0","typeLabel":"Build · object"},{"type":"object","title":"Image","description":"Describes that we are using a pre-built image stored in a Docker Image registry","required":["type","image_uri"],"x-fern-type-name":"Image","properties":{"type":{"description":"+value=image","type":"string","enum":["image"],"default":"image","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.1.type","typeLabel":"enum\u003cstring>"},"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.1.image_uri","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.1.docker_registry","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.1.command","typeLabel":"string | string[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image.oneOf.1","typeLabel":"Image · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.image","typeLabel":"Build · object | Image · object"},"ports":{"description":"Expose the deployment to make it accessible over the internet or keep it private. Implement authentication to restrict access. [Docs](https://docs.truefoundry.com/docs/define-ports-and-domains)","type":"array","items":{"description":"Describes the ports the service should be exposed to.","type":"object","required":["port","protocol","expose"],"properties":{"port":{"description":"Port number to expose.","type":"integer","minimum":1,"maximum":65535,"default":80,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].port","typeLabel":"integer"},"protocol":{"description":"Protocol for the port.","type":"string","enum":["TCP","UDP"],"default":"TCP","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].protocol","typeLabel":"enum\u003cstring>"},"expose":{"description":"Expose the port","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].expose","typeLabel":"boolean"},"app_protocol":{"description":"Application Protocol for the port.\nSelect the application protocol used by your service. For most use cases, this should be `http`(HTTP/1.1).\nIf you are running a gRPC server, select the `grpc` option.\nThis is only applicable if `expose=true`.","type":"string","enum":["http","grpc","tcp"],"default":"http","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].app_protocol","typeLabel":"enum\u003cstring>"},"host":{"description":"Host e.g. ai.example.com, app.truefoundry.com","type":"string","pattern":"^((([a-zA-Z0-9\\-]{1,63}\\.)([a-zA-Z0-9\\-]{1,63}\\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].host","typeLabel":"string"},"path":{"description":"Path e.g. /v1/api/ml/, /v2/docs/","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].path","typeLabel":"string"},"rewrite_path_to":{"description":"Rewrite the path prefix to a different path.\nIf `path` is `/v1/api` and `rewrite_path_to` is `/api`. The URI in the HTTP request `http://0.0.0.0:8080/v1/api/houses` will be rewritten to `http://0.0.0.0:8080/api/houses` before the request is forwarded your service.\nDefaults to `/`.\nThis is only applicable if `path` is given.","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].rewrite_path_to","typeLabel":"string"},"auth":{"oneOf":[{"type":"object","title":"BasicAuthCreds","description":"Username and password","required":["type","username","password"],"x-fern-type-name":"BasicAuthCreds","properties":{"type":{"description":"+value=basic_auth","type":"string","enum":["basic_auth"],"default":"basic_auth","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"username":{"description":"Username for service auth - Username for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.0.username","typeLabel":"string"},"password":{"description":"Password for service auth - Password for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.0.password","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.0","typeLabel":"BasicAuthCreds · object"},{"type":"object","title":"JwtAuthConfig","description":"Configure JWT-based authentication using JWKS","required":["type","integration_fqn"],"x-fern-type-name":"JwtAuthConfig","properties":{"type":{"description":"+value=jwt_auth","type":"string","enum":["jwt_auth"],"default":"jwt_auth","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"integration_fqn":{"description":"FQN of the JWT Auth integration. If you can't find your integration here,\nadd it through the [Integrations](/integrations) page","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.integration_fqn","typeLabel":"string"},"enable_login":{"description":"Enable login for the service","type":"boolean","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.enable_login","typeLabel":"boolean"},"claims":{"description":"List of key-value pairs of claims to verify in the JWT token","type":"array","items":{"type":"object","required":["key","values"],"properties":{"key":{"type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].key","typeLabel":"string"},"values":{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX]","typeLabel":"object"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.claims","typeLabel":"object[]"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.1","typeLabel":"JwtAuthConfig · object"},{"type":"object","title":"TrueFoundryInteractiveLogin","description":"Login with truefoundry","required":["type"],"x-fern-type-name":"TrueFoundryInteractiveLogin","properties":{"type":{"description":"+value=truefoundry_oauth","type":"string","enum":["truefoundry_oauth"],"default":"truefoundry_oauth","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.2.type","typeLabel":"enum\u003cstring>"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth.oneOf.2","typeLabel":"TrueFoundryInteractiveLogin · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth","typeLabel":"BasicAuthCreds · object | JwtAuthConfig · object | TrueFoundryInteractiveLogin · object"}},"title":"Port","x-fern-type-name":"Port","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports.items.[INDEX]","typeLabel":"Port · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.ports","typeLabel":"Port · object[]"},"type":{"description":"+value=service","type":"string","enum":["service"],"default":"service","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"replicas":{"oneOf":[{"type":"number","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"maximum":500,"minimum":0,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.0","typeLabel":"number"},{"type":"object","title":"ServiceAutoscaling","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"required":["metrics","min_replicas","max_replicas"],"x-fern-type-name":"ServiceAutoscaling","properties":{"min_replicas":{"description":"Minimum number of replicas to keep available","type":"integer","minimum":0,"default":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.min_replicas","typeLabel":"integer"},"max_replicas":{"description":"Maximum number of replicas allowed for the component.","type":"integer","minimum":1,"maximum":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.max_replicas","typeLabel":"integer"},"metrics":{"oneOf":[{"type":"object","title":"CPUUtilizationMetric","description":"Metrics to use for the autoscaler","required":["type","value"],"x-fern-type-name":"CPUUtilizationMetric","properties":{"type":{"description":"+value=cpu_utilization","type":"string","enum":["cpu_utilization"],"default":"cpu_utilization","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.0.type","typeLabel":"enum\u003cstring>"},"value":{"description":"Percentage of cpu request averaged over all replicas which the autoscaler should try to maintain","type":"integer","minimum":1,"maximum":100,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.0.value","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.0","typeLabel":"CPUUtilizationMetric · object"},{"type":"object","title":"RPSMetric","description":"Metrics to use for the autoscaler","required":["type","value"],"x-fern-type-name":"RPSMetric","properties":{"type":{"description":"+value=rps","type":"string","enum":["rps"],"default":"rps","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.1.type","typeLabel":"enum\u003cstring>"},"value":{"description":"Average request per second averaged over all replicas that autoscaler should try to maintain","type":"number","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.1.value","typeLabel":"number"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.1","typeLabel":"RPSMetric · object"},{"type":"object","title":"CronMetric","description":"Metrics to use for the autoscaler","required":["type","start","end","timezone"],"x-fern-type-name":"CronMetric","properties":{"type":{"description":"+value=cron","type":"string","enum":["cron"],"default":"cron","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.2.type","typeLabel":"enum\u003cstring>"},"start":{"description":"Cron expression indicating the start of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.2.start","typeLabel":"string"},"end":{"description":"Cron expression indicating the end of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.2.end","typeLabel":"string"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","default":"UTC","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.2.timezone","typeLabel":"string"},"desired_replicas":{"description":"Desired number of replicas during the given interval. Default value is max_replicas.","type":"integer","minimum":1,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.2.desired_replicas","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics.oneOf.2","typeLabel":"CronMetric · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.metrics","typeLabel":"CPUUtilizationMetric · object | RPSMetric · object | CronMetric · object"},"polling_interval":{"description":"This is the interval to check each trigger on.","type":"integer","minimum":0,"default":30,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1.polling_interval","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas.oneOf.1","typeLabel":"ServiceAutoscaling · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.replicas","typeLabel":"number | ServiceAutoscaling · object"},"artifacts_download":{"description":"Download and cache models in a volume to enhance loading speeds and reduce costs by avoiding repeated downloads. [Docs](https://docs.truefoundry.com/docs/download-and-cache-models)","type":"object","required":["artifacts"],"properties":{"artifacts":{"description":"List of artifacts to be cached","type":"array","items":{"oneOf":[{"type":"object","title":"TrueFoundryArtifactSource","description":"Input for Artifact from TrueFoundry Artifact Registry","required":["type","artifact_version_fqn","download_path_env_variable"],"x-fern-type-name":"TrueFoundryArtifactSource","properties":{"type":{"description":"+value=truefoundry-artifact","type":"string","enum":["truefoundry-artifact"],"default":"truefoundry-artifact","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"artifact_version_fqn":{"description":"Artifact or Model Version FQN of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.0.artifact_version_fqn","typeLabel":"string"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.0.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.0","typeLabel":"TrueFoundryArtifactSource · object"},{"type":"object","title":"HuggingfaceArtifactSource","description":"Input for Artifact from Huggingface Model Hub","required":["type","model_id","revision","ignore_patterns","download_path_env_variable"],"x-fern-type-name":"HuggingfaceArtifactSource","properties":{"type":{"description":"+value=huggingface-hub","type":"string","enum":["huggingface-hub"],"default":"huggingface-hub","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"model_id":{"description":"Model ID of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1.model_id","typeLabel":"string"},"revision":{"description":"Revision of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1.revision","typeLabel":"string"},"ignore_patterns":{"description":"List of patterns to ignore while downloading the artifact","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns.items.[INDEX]","typeLabel":"string"},"default":["*.h5","*.ot","*.tflite","*.msgpack"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns","typeLabel":"string[]"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1","typeLabel":"HuggingfaceArtifactSource · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX]","typeLabel":"TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.artifacts","typeLabel":"(TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object)[]"},"cache_volume":{"description":"Describes the volume that will be used to cache the models","type":"object","required":["storage_class","cache_size"],"properties":{"storage_class":{"description":"Storage class of the Volume where artifacts will be cached","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.cache_volume.storage_class","typeLabel":"string"},"cache_size":{"description":"Size of the Volume (in GB) where artifacts will be cached. Should be greater than twice the size of artifacts getting cached","type":"integer","minimum":1,"maximum":10000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.cache_volume.cache_size","typeLabel":"integer"}},"title":"ArtifactsCacheVolume","x-fern-type-name":"ArtifactsCacheVolume","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download.cache_volume","typeLabel":"ArtifactsCacheVolume · object"}},"title":"ArtifactsDownload","x-fern-type-name":"ArtifactsDownload","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.artifacts_download","typeLabel":"ArtifactsDownload · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.env","typeLabel":"object | null"},"service_account":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.service_account","typeLabel":"string"},"mounts":{"description":"Configure data to be mounted to service pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-service)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"labels":{"description":"Labels","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.labels","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.kustomize","typeLabel":"Kustomize · object"},"liveness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.liveness_probe","typeLabel":"HealthProbe · object"},"readiness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.readiness_probe","typeLabel":"HealthProbe · object"},"startup_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.startup_probe","typeLabel":"HealthProbe · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.workspace_fqn","typeLabel":"string"},"auto_shutdown":{"type":"object","required":["wait_time"],"properties":{"wait_time":{"description":"The period to wait after the last received request before scaling the replicas to 0. This value should be high enough to allow for the replicas of the service to come up to avoid premature scaling down.","type":"integer","minimum":0,"maximum":604800,"default":900,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.auto_shutdown.wait_time","typeLabel":"integer"}},"title":"Autoshutdown","x-fern-type-name":"Autoshutdown","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.auto_shutdown","typeLabel":"Autoshutdown · object"},"allow_interception":{"description":"Whether to allow intercepts to be applied for this service.\nThis would inject an additional sidecar in each pod of the service. Not recommended on production","type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.allow_interception","typeLabel":"boolean"},"rollout_strategy":{"oneOf":[{"type":"object","title":"Rolling","description":"This strategy updates the pods in a rolling fashion such that a subset of the\ntotal pods are replaced with new version at one time.\nA commonly used strategy can be to have maxUnavailablePercentage close to 0 so that there\nis no downtime and keep the maxSurgePercentage to around 25%. If you are anyways running\na large number of pods, the service can often tolerate a few pods going down - so you\nmax maxUnavailablePercentage = 10 and maxSurgePercentage=0. You can read about it more\n[here](https://spot.io/resources/kubernetes-autoscaling/5-kubernetes-deployment-strategies-roll-out-like-the-pros/)","required":["type","max_unavailable_percentage","max_surge_percentage"],"x-fern-type-name":"Rolling","properties":{"type":{"description":"+value=rolling_update","type":"string","enum":["rolling_update"],"default":"rolling_update","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.0.type","typeLabel":"enum\u003cstring>"},"max_unavailable_percentage":{"description":"Percentage of total replicas that can be brought down at one time.\nFor a value of 25 when replicas are set to 12 this would mean minimum (25% of 12) = 3 pods might be unavailable during the deployment.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.0.max_unavailable_percentage","typeLabel":"integer"},"max_surge_percentage":{"description":"Percentage of total replicas of updated image that can be brought up over the total replicas count.\nFor a value of 25 when replicas are set to 12 this would mean (12+(25% of 12) = 15) pods might be running at one time.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.0.max_surge_percentage","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.0","typeLabel":"Rolling · object"},{"type":"object","title":"Canary","description":"This strategy brings up the new release without bringing the older release down. Traffic is shifted from the older release to the newer release in a staged manner.\nThis can help with verifying the health of the new release without shifting complete traffic.","required":["type","steps"],"x-fern-type-name":"Canary","properties":{"type":{"description":"+value=canary","type":"string","enum":["canary"],"default":"canary","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.1.type","typeLabel":"enum\u003cstring>"},"steps":{"description":"These steps would be executed in order to enable shifting of traffic slowly from stable to canary version","type":"array","items":{"type":"object","required":["weight_percentage"],"properties":{"weight_percentage":{"description":"Percentage of total traffic to be shifted to the canary release.\nThe rest will continue to go to the existing deployment","type":"integer","minimum":0,"maximum":100,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.1.steps.items.[INDEX].weight_percentage","typeLabel":"integer"},"pause_duration":{"description":"Duration for which to pause the release. The release process will wait for these seconds before proceeding to the next step.\nIf this is not set, the step will pause indefinitely on this step","type":"integer","minimum":0,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.1.steps.items.[INDEX].pause_duration","typeLabel":"integer"}},"title":"CanaryStep","x-fern-type-name":"CanaryStep","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.1.steps.items.[INDEX]","typeLabel":"CanaryStep · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.1.steps","typeLabel":"CanaryStep · object[]"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.1","typeLabel":"Canary · object"},{"type":"object","title":"BlueGreen","description":"This strategy brings up the new release completely before switching the complete load to the new release.\nThis minimizes the time that two versions are serving traffic at the same time.","required":["type"],"x-fern-type-name":"BlueGreen","properties":{"type":{"description":"+value=blue_green","type":"string","enum":["blue_green"],"default":"blue_green","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.2.type","typeLabel":"enum\u003cstring>"},"enable_auto_promotion":{"description":"Promote the new release to handle the complete traffic. A manual promotion would be needed if this is disabled","type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.2.enable_auto_promotion","typeLabel":"boolean"},"auto_promotion_seconds":{"description":"Promote the new release to handle the complete traffic after waiting for these many seconds","type":"integer","minimum":0,"default":30,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.2.auto_promotion_seconds","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy.oneOf.2","typeLabel":"BlueGreen · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0.rollout_strategy","typeLabel":"Rolling · object | Canary · object | BlueGreen · object"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.0","typeLabel":"Service · object"},{"type":"object","title":"AsyncService","description":"Describes the configuration for the async-service","required":["type","replicas","worker_config","name","image","ports"],"x-fern-type-name":"AsyncService","properties":{"name":{"description":"Name of the service. This uniquely identifies this service in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.name","typeLabel":"string"},"image":{"oneOf":[{"type":"object","title":"Build","description":"Describes how we build our code into a Docker image.","required":["type","build_source","build_spec"],"x-fern-type-name":"Build","properties":{"type":{"description":"+value=build","type":"string","enum":["build"],"default":"build","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.type","typeLabel":"enum\u003cstring>"},"build_source":{"oneOf":[{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.0.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.0","typeLabel":"RemoteSource · object"},{"type":"object","title":"GitSource","description":"Describes that we are using code stored in a git repository to build our image","required":["type","repo_url","ref"],"x-fern-type-name":"GitSource","properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"The repository URL.","type":"string","pattern":"^(https?://)\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.1.repo_url","typeLabel":"string"},"ref":{"description":"The commit SHA.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.1.ref","typeLabel":"string"},"branch_name":{"description":"Selecting branch will select latest commit SHA of the branch.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.1.branch_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.1","typeLabel":"GitSource · object"},{"type":"object","title":"LocalSource","description":"Describes that we are using code stored in a local developement environment to build our image","required":["type","project_root_path","local_build"],"x-fern-type-name":"LocalSource","properties":{"type":{"description":"+value=local","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"project_root_path":{"description":"Local project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.2.project_root_path","typeLabel":"string"},"local_build":{"description":"run docker build locally","type":"boolean","default":false,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.2.local_build","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source.oneOf.2","typeLabel":"LocalSource · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_source","typeLabel":"RemoteSource · object | GitSource · object | LocalSource · object"},"build_spec":{"oneOf":[{"type":"object","title":"DockerFileBuild","description":"Describes that we are using a dockerfile to build our image","required":["type","dockerfile_path","build_context_path"],"x-fern-type-name":"DockerFileBuild","properties":{"type":{"description":"+value=dockerfile","type":"string","enum":["dockerfile"],"default":"dockerfile","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.type","typeLabel":"enum\u003cstring>"},"dockerfile_path":{"description":"The file path of the Dockerfile relative to project root path.","type":"string","default":"./Dockerfile","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.dockerfile_path","typeLabel":"string"},"build_context_path":{"description":"Build context path for the Dockerfile relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.command","typeLabel":"string | string[]"},"build_args":{"description":"Build arguments to pass to docker build","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_args.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_args","typeLabel":"object"},"build_secrets":{"description":"Build secrets you can use in run statements inside dockerfile like RUN --mount=type=secret,id=pip_index_url ... you can learn more about build secrets here https://www.truefoundry.com/docs/docker-build-secrets","type":"array","items":{"type":"object","required":["id","value"],"properties":{"id":{"description":"The ID of the build secret.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].id","typeLabel":"string"},"value":{"description":"The value of the build secret.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].value","typeLabel":"string"},"env":{"description":"The name of the environment variable to inject the secret into.","type":"string","pattern":"^[_a-zA-Z0-9][_a-zA-Z0-9]{1,31}$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].env","typeLabel":"string"}},"title":"BuildSecret","x-fern-type-name":"BuildSecret","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX]","typeLabel":"BuildSecret · object"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_secrets","typeLabel":"BuildSecret · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.0","typeLabel":"DockerFileBuild · object"},{"type":"object","title":"PythonBuild","description":"Describes that we are using python to build a container image with a specific python version and pip packages installed.","required":["type","build_context_path","command"],"x-fern-type-name":"PythonBuild","properties":{"type":{"description":"+value=tfy-python-buildpack","type":"string","enum":["tfy-python-buildpack"],"default":"tfy-python-buildpack","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.type","typeLabel":"enum\u003cstring>"},"build_context_path":{"description":"Build path relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.command","typeLabel":"string | string[]"},"python_version":{"description":"Python version to run your application. Should be one of the tags listed on [Official Python Docker Page](https://hub.docker.com/_/python)","type":"string","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_version","typeLabel":"string"},"requirements_path":{"description":"Path to `requirements.txt` relative to\n`Path to build context`","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.pip_packages","typeLabel":"string[]"},"python_dependencies":{"oneOf":[{"type":"object","title":"Pip","description":"Use pip to install requirements files and packages","required":["type"],"x-fern-type-name":"Pip","properties":{"type":{"description":"+value=pip","type":"string","enum":["pip"],"default":"pip","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.type","typeLabel":"enum\u003cstring>"},"requirements_path":{"description":"Path to `requirements.txt` relative to `Path to build context`","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0","typeLabel":"Pip · object"},{"type":"object","title":"UV","description":"Use `uv` to setup env.\nYour build context root must contain `pyproject.toml` and `uv.lock`","required":["type"],"x-fern-type-name":"UV","properties":{"type":{"description":"+value=uv","type":"string","enum":["uv"],"default":"uv","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uv_version":{"description":"UV version to use","type":"string","default":"latest","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.uv_version","typeLabel":"string"},"sync_options":{"description":"Sync options to pass to uv command","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.sync_options","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1","typeLabel":"UV · object"},{"type":"object","title":"Poetry","description":"Use `poetry` to setup env.\nYour build context root must contain `pyproject.toml` and `poetry.lock`","required":["type"],"x-fern-type-name":"Poetry","properties":{"type":{"description":"+value=poetry","type":"string","enum":["poetry"],"default":"poetry","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.type","typeLabel":"enum\u003cstring>"},"poetry_version":{"type":"any","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version","typeLabel":"any"},"install_options":{"description":"install options to pass to poetry command","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.install_options","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2","typeLabel":"Poetry · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies","typeLabel":"Pip · object | UV · object | Poetry · object"},"apt_packages":{"description":"Debian packages to install via `apt get`.\nIn Python/YAML E.g. [\"git\", \"ffmpeg\", \"htop\"]","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.apt_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.apt_packages","typeLabel":"string[]"},"cuda_version":{"description":"Version of CUDA Toolkit and CUDNN to install in the image\nThese combinations are based off of publically available docker images on docker hub\nYou can also specify a valid tag of the form {cuda_version_number}-cudnn{cudnn_version_number}-{runtime|devel}-ubuntu{ubuntu_version}\nRefer https://hub.docker.com/r/nvidia/cuda/tags for valid set of values\nNote: We use deadsnakes ubuntu ppa to add Python that currently supports only Ubuntu 18.04, 20.04 and 22.04","type":"string","pattern":"^((\\d+\\.\\d+(\\.\\d+)?-cudnn(\\d+)?-(runtime|devel)-ubuntu\\d+\\.\\d+)|11\\.0-cudnn8|11\\.1-cudnn8|11\\.2-cudnn8|11\\.3-cudnn8|11\\.4-cudnn8|11\\.5-cudnn8|11\\.6-cudnn8|11\\.7-cudnn8|11\\.8-cudnn8|12\\.0-cudnn8|12\\.1-cudnn8|12\\.2-cudnn8|12\\.3-cudnn9|12\\.4-cudnn9|12\\.5-cudnn9|12\\.6-cudnn9|12\\.8-cudnn9|12\\.9-cudnn9)$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1.cuda_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec.oneOf.1","typeLabel":"PythonBuild · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.build_spec","typeLabel":"DockerFileBuild · object | PythonBuild · object"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.0","typeLabel":"Build · object"},{"type":"object","title":"Image","description":"Describes that we are using a pre-built image stored in a Docker Image registry","required":["type","image_uri"],"x-fern-type-name":"Image","properties":{"type":{"description":"+value=image","type":"string","enum":["image"],"default":"image","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.1.type","typeLabel":"enum\u003cstring>"},"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.1.image_uri","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.1.docker_registry","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.1.command","typeLabel":"string | string[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image.oneOf.1","typeLabel":"Image · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.image","typeLabel":"Build · object | Image · object"},"ports":{"description":"Expose the deployment to make it accessible over the internet or keep it private. Implement authentication to restrict access. [Docs](https://docs.truefoundry.com/docs/define-ports-and-domains)","type":"array","items":{"description":"Describes the ports the service should be exposed to.","type":"object","required":["port","protocol","expose"],"properties":{"port":{"description":"Port number to expose.","type":"integer","minimum":1,"maximum":65535,"default":80,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].port","typeLabel":"integer"},"protocol":{"description":"Protocol for the port.","type":"string","enum":["TCP","UDP"],"default":"TCP","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].protocol","typeLabel":"enum\u003cstring>"},"expose":{"description":"Expose the port","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].expose","typeLabel":"boolean"},"app_protocol":{"description":"Application Protocol for the port.\nSelect the application protocol used by your service. For most use cases, this should be `http`(HTTP/1.1).\nIf you are running a gRPC server, select the `grpc` option.\nThis is only applicable if `expose=true`.","type":"string","enum":["http","grpc","tcp"],"default":"http","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].app_protocol","typeLabel":"enum\u003cstring>"},"host":{"description":"Host e.g. ai.example.com, app.truefoundry.com","type":"string","pattern":"^((([a-zA-Z0-9\\-]{1,63}\\.)([a-zA-Z0-9\\-]{1,63}\\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].host","typeLabel":"string"},"path":{"description":"Path e.g. /v1/api/ml/, /v2/docs/","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].path","typeLabel":"string"},"rewrite_path_to":{"description":"Rewrite the path prefix to a different path.\nIf `path` is `/v1/api` and `rewrite_path_to` is `/api`. The URI in the HTTP request `http://0.0.0.0:8080/v1/api/houses` will be rewritten to `http://0.0.0.0:8080/api/houses` before the request is forwarded your service.\nDefaults to `/`.\nThis is only applicable if `path` is given.","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].rewrite_path_to","typeLabel":"string"},"auth":{"oneOf":[{"type":"object","title":"BasicAuthCreds","description":"Username and password","required":["type","username","password"],"x-fern-type-name":"BasicAuthCreds","properties":{"type":{"description":"+value=basic_auth","type":"string","enum":["basic_auth"],"default":"basic_auth","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"username":{"description":"Username for service auth - Username for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.0.username","typeLabel":"string"},"password":{"description":"Password for service auth - Password for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.0.password","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.0","typeLabel":"BasicAuthCreds · object"},{"type":"object","title":"JwtAuthConfig","description":"Configure JWT-based authentication using JWKS","required":["type","integration_fqn"],"x-fern-type-name":"JwtAuthConfig","properties":{"type":{"description":"+value=jwt_auth","type":"string","enum":["jwt_auth"],"default":"jwt_auth","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"integration_fqn":{"description":"FQN of the JWT Auth integration. If you can't find your integration here,\nadd it through the [Integrations](/integrations) page","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.integration_fqn","typeLabel":"string"},"enable_login":{"description":"Enable login for the service","type":"boolean","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.enable_login","typeLabel":"boolean"},"claims":{"description":"List of key-value pairs of claims to verify in the JWT token","type":"array","items":{"type":"object","required":["key","values"],"properties":{"key":{"type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].key","typeLabel":"string"},"values":{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX]","typeLabel":"object"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.claims","typeLabel":"object[]"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.1","typeLabel":"JwtAuthConfig · object"},{"type":"object","title":"TrueFoundryInteractiveLogin","description":"Login with truefoundry","required":["type"],"x-fern-type-name":"TrueFoundryInteractiveLogin","properties":{"type":{"description":"+value=truefoundry_oauth","type":"string","enum":["truefoundry_oauth"],"default":"truefoundry_oauth","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.2.type","typeLabel":"enum\u003cstring>"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth.oneOf.2","typeLabel":"TrueFoundryInteractiveLogin · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth","typeLabel":"BasicAuthCreds · object | JwtAuthConfig · object | TrueFoundryInteractiveLogin · object"}},"title":"Port","x-fern-type-name":"Port","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports.items.[INDEX]","typeLabel":"Port · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.ports","typeLabel":"Port · object[]"},"type":{"description":"+value=async-service","type":"string","enum":["async-service"],"default":"async-service","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"replicas":{"oneOf":[{"type":"number","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"maximum":500,"minimum":0,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.0","typeLabel":"number"},{"type":"object","title":"AsyncServiceAutoscaling","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"required":["metrics","min_replicas","max_replicas"],"x-fern-type-name":"AsyncServiceAutoscaling","properties":{"min_replicas":{"description":"Minimum number of replicas to keep available","type":"integer","minimum":0,"default":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.min_replicas","typeLabel":"integer"},"max_replicas":{"description":"Maximum number of replicas allowed for the component.","type":"integer","minimum":1,"maximum":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.max_replicas","typeLabel":"integer"},"metrics":{"oneOf":[{"type":"object","title":"SQSQueueMetricConfig","description":"Metrics to use for the autoscaler","required":["type","queue_length"],"x-fern-type-name":"SQSQueueMetricConfig","properties":{"type":{"description":"+value=sqs","type":"string","enum":["sqs"],"default":"sqs","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.0.type","typeLabel":"enum\u003cstring>"},"queue_length":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the queue and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.0.queue_length","typeLabel":"integer"},"auth":{"type":"any","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.0.auth","typeLabel":"any"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.0","typeLabel":"SQSQueueMetricConfig · object"},{"type":"object","title":"NATSMetricConfig","description":"Metrics to use for the autoscaler","required":["type","lag_threshold"],"x-fern-type-name":"NATSMetricConfig","properties":{"type":{"description":"+value=nats","type":"string","enum":["nats"],"default":"nats","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.1.type","typeLabel":"enum\u003cstring>"},"lag_threshold":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the stream and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.1.lag_threshold","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.1","typeLabel":"NATSMetricConfig · object"},{"type":"object","title":"KafkaMetricConfig","description":"Metrics to use for the autoscaler","required":["type","lag_threshold"],"x-fern-type-name":"KafkaMetricConfig","properties":{"type":{"description":"+value=kafka","type":"string","enum":["kafka"],"default":"kafka","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.2.type","typeLabel":"enum\u003cstring>"},"lag_threshold":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the stream and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.2.lag_threshold","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.2","typeLabel":"KafkaMetricConfig · object"},{"type":"object","title":"CronMetric","description":"Metrics to use for the autoscaler","required":["type","start","end","timezone"],"x-fern-type-name":"CronMetric","properties":{"type":{"description":"+value=cron","type":"string","enum":["cron"],"default":"cron","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.3.type","typeLabel":"enum\u003cstring>"},"start":{"description":"Cron expression indicating the start of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.3.start","typeLabel":"string"},"end":{"description":"Cron expression indicating the end of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.3.end","typeLabel":"string"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","default":"UTC","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.3.timezone","typeLabel":"string"},"desired_replicas":{"description":"Desired number of replicas during the given interval. Default value is max_replicas.","type":"integer","minimum":1,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.3.desired_replicas","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.3","typeLabel":"CronMetric · object"},{"type":"object","title":"AMQPMetricConfig","description":"Metrics to use for the autoscaler","required":["type","queue_length"],"x-fern-type-name":"AMQPMetricConfig","properties":{"type":{"description":"+value=amqp","type":"string","enum":["amqp"],"default":"amqp","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.4.type","typeLabel":"enum\u003cstring>"},"queue_length":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the stream and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.4.queue_length","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics.oneOf.4","typeLabel":"AMQPMetricConfig · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.metrics","typeLabel":"SQSQueueMetricConfig · object | NATSMetricConfig · object | KafkaMetricConfig · object | CronMetric · object | AMQPMetricConfig · object"},"polling_interval":{"description":"This is the interval to check each trigger on.","type":"integer","minimum":0,"default":30,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1.polling_interval","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas.oneOf.1","typeLabel":"AsyncServiceAutoscaling · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.replicas","typeLabel":"number | AsyncServiceAutoscaling · object"},"worker_config":{"type":"object","required":["input_config","num_concurrent_workers"],"properties":{"input_config":{"oneOf":[{"type":"object","title":"SQSInputConfig","description":"Describes the configuration for the input SQS worker","required":["type","queue_url","region_name","visibility_timeout","wait_time_seconds"],"x-fern-type-name":"SQSInputConfig","properties":{"type":{"description":"+value=sqs","type":"string","enum":["sqs"],"default":"sqs","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"queue_url":{"description":"AWS SQS Queue URL of Subscriber","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0.queue_url","typeLabel":"string"},"region_name":{"description":"AWS Region Name","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0.region_name","typeLabel":"string"},"visibility_timeout":{"description":"A period during which Amazon SQS prevents all consumers from receiving and processing the message. If one message takes 5 seconds to process, you can set this number to 7 or any number higher than 5. This will ensure that while the message is being processed, it will not be available to other replicas. For more information, see [here](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html)","type":"integer","minimum":1,"maximum":43200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0.visibility_timeout","typeLabel":"integer"},"wait_time_seconds":{"description":"Wait timeout for long polling. For more information, see [here](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html)","type":"integer","minimum":1,"maximum":20,"default":19,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0.wait_time_seconds","typeLabel":"integer"},"auth":{"type":"object","required":["aws_access_key_id","aws_secret_access_key"],"properties":{"aws_access_key_id":{"description":"AWS Access Key ID","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0.auth.aws_access_key_id","typeLabel":"string"},"aws_secret_access_key":{"description":"AWS Secret Access Key for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0.auth.aws_secret_access_key","typeLabel":"string"},"aws_session_token":{"description":"AWS Session Token, only required when using temporary credentials","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0.auth.aws_session_token","typeLabel":"string"}},"title":"AWSAccessKeyAuth","x-fern-type-name":"AWSAccessKeyAuth","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0.auth","typeLabel":"AWSAccessKeyAuth · object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.0","typeLabel":"SQSInputConfig · object"},{"type":"object","title":"NATSInputConfig","description":"Describes the configuration for the input NATS worker","required":["type","nats_url","stream_name","root_subject","consumer_name","wait_time_seconds"],"x-fern-type-name":"NATSInputConfig","properties":{"type":{"description":"+value=nats","type":"string","enum":["nats"],"default":"nats","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nats_url":{"description":"Input NATS URL","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.nats_url","typeLabel":"string"},"stream_name":{"description":"Name of the NATS stream","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.stream_name","typeLabel":"string"},"root_subject":{"description":"Root subject of input NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-.]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.root_subject","typeLabel":"string"},"consumer_name":{"description":"Consumer name of input NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-_]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.consumer_name","typeLabel":"string"},"wait_time_seconds":{"description":"Wait timeout for long polling.","type":"integer","minimum":1,"maximum":20,"default":19,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.wait_time_seconds","typeLabel":"integer"},"nats_metrics_url":{"description":"URL for the NATS metrics endpoint. It is compulsory if you want to use NATS autoscaling.","type":"string","pattern":"^(http(s?)://).*$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.nats_metrics_url","typeLabel":"string"},"auth":{"description":"NATS User Password Authentication","type":"object","required":["account_name","user","password"],"properties":{"account_name":{"description":"Name of the NATS account","type":"string","default":"$G","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.auth.account_name","typeLabel":"string"},"user":{"description":"User for NATS authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.auth.user","typeLabel":"string"},"password":{"description":"Password for NATS authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.auth.password","typeLabel":"string"}},"title":"NATSUserPasswordAuth","x-fern-type-name":"NATSUserPasswordAuth","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1.auth","typeLabel":"NATSUserPasswordAuth · object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.1","typeLabel":"NATSInputConfig · object"},{"type":"object","title":"KafkaInputConfig","description":"Describes the configuration for the input Kafka worker","required":["type","bootstrap_servers","topic_name","consumer_group","tls"],"x-fern-type-name":"KafkaInputConfig","properties":{"type":{"description":"+value=kafka","type":"string","enum":["kafka"],"default":"kafka","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2.type","typeLabel":"enum\u003cstring>"},"bootstrap_servers":{"description":"'Kafka Bootstrap servers - Comma separated list of Kafka brokers \"hostname:port\" to connect to for bootstrap'","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2.bootstrap_servers","typeLabel":"string"},"topic_name":{"description":"Kafka topic to subscribe to","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2.topic_name","typeLabel":"string"},"consumer_group":{"description":"The name of the consumer group to join for dynamic partition assignment","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2.consumer_group","typeLabel":"string"},"tls":{"description":"TLS configuration for SASL authentication","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2.tls","typeLabel":"boolean"},"wait_time_seconds":{"description":"Wait timeout for long polling.","type":"integer","minimum":1,"maximum":300,"default":10,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2.wait_time_seconds","typeLabel":"integer"},"auth":{"type":"object","required":["username","password"],"properties":{"username":{"description":"Username for SASL authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2.auth.username","typeLabel":"string"},"password":{"description":"Password for SASL authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2.auth.password","typeLabel":"string"}},"title":"KafkaSASLAuth","x-fern-type-name":"KafkaSASLAuth","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2.auth","typeLabel":"KafkaSASLAuth · object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.2","typeLabel":"KafkaInputConfig · object"},{"type":"object","title":"AMQPInputConfig","description":"Describes the configuration for the input AMQP worker","required":["type","url","queue_name","wait_time_seconds"],"x-fern-type-name":"AMQPInputConfig","properties":{"type":{"description":"+value=amqp","type":"string","enum":["amqp"],"default":"amqp","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.3.type","typeLabel":"enum\u003cstring>"},"url":{"description":"AMQP Queue URL of Subscriber","type":"string","pattern":"^(amqp|amqps?)://(?:[^:@]+(?::[^:@]+)?@)?([^/?]+)(?:/([^?]+))?/?([^?]+)?(?:\\?(.*))?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.3.url","typeLabel":"string"},"queue_name":{"description":"AMQP Queue Name","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.3.queue_name","typeLabel":"string"},"wait_time_seconds":{"description":"Wait timeout for long polling.","type":"integer","minimum":1,"default":5,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.3.wait_time_seconds","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config.oneOf.3","typeLabel":"AMQPInputConfig · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.input_config","typeLabel":"SQSInputConfig · object | NATSInputConfig · object | KafkaInputConfig · object | AMQPInputConfig · object"},"num_concurrent_workers":{"description":"Number of concurrent workers to spawn for the processor","type":"integer","minimum":1,"maximum":10,"default":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.num_concurrent_workers","typeLabel":"integer"},"output_config":{"oneOf":[{"type":"object","title":"SQSOutputConfig","description":"Describes the configuration for the output SQS worker","required":["type","queue_url","region_name"],"x-fern-type-name":"SQSOutputConfig","properties":{"type":{"description":"+value=sqs","type":"string","enum":["sqs"],"default":"sqs","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"queue_url":{"description":"AWS SQS Queue URL of Publisher","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.0.queue_url","typeLabel":"string"},"region_name":{"description":"AWS Region Name","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.0.region_name","typeLabel":"string"},"auth":{"type":"object","required":["aws_access_key_id","aws_secret_access_key"],"properties":{"aws_access_key_id":{"description":"AWS Access Key ID","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.0.auth.aws_access_key_id","typeLabel":"string"},"aws_secret_access_key":{"description":"AWS Secret Access Key for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.0.auth.aws_secret_access_key","typeLabel":"string"},"aws_session_token":{"description":"AWS Session Token, only required when using temporary credentials","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.0.auth.aws_session_token","typeLabel":"string"}},"title":"AWSAccessKeyAuth","x-fern-type-name":"AWSAccessKeyAuth","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.0.auth","typeLabel":"AWSAccessKeyAuth · object"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.0","typeLabel":"SQSOutputConfig · object"},{"type":"object","title":"NATSOutputConfig","description":"Describes the configuration for the output NATS worker","required":["type","nats_url","root_subject"],"x-fern-type-name":"NATSOutputConfig","properties":{"type":{"description":"+value=nats","type":"string","enum":["nats"],"default":"nats","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nats_url":{"description":"Output NATS URL","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.1.nats_url","typeLabel":"string"},"root_subject":{"description":"Root subject of output NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-.]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.1.root_subject","typeLabel":"string"},"auth":{"description":"NATS User Password Authentication","type":"object","required":["account_name","user","password"],"properties":{"account_name":{"description":"Name of the NATS account","type":"string","default":"$G","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.1.auth.account_name","typeLabel":"string"},"user":{"description":"User for NATS authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.1.auth.user","typeLabel":"string"},"password":{"description":"Password for NATS authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.1.auth.password","typeLabel":"string"}},"title":"NATSUserPasswordAuth","x-fern-type-name":"NATSUserPasswordAuth","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.1.auth","typeLabel":"NATSUserPasswordAuth · object"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.1","typeLabel":"NATSOutputConfig · object"},{"type":"object","title":"CoreNATSOutputConfig","description":"Describes the configuration for the output Core NATS worker","required":["type","nats_url","root_subject"],"x-fern-type-name":"CoreNATSOutputConfig","properties":{"type":{"description":"+value=core-nats","type":"string","enum":["core-nats"],"default":"core-nats","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.2.type","typeLabel":"enum\u003cstring>"},"nats_url":{"description":"Output NATS URL","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.2.nats_url","typeLabel":"string"},"root_subject":{"description":"Root subject of output NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-.]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.2.root_subject","typeLabel":"string"},"auth":{"description":"NATS User Password Authentication","type":"object","required":["account_name","user","password"],"properties":{"account_name":{"description":"Name of the NATS account","type":"string","default":"$G","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.2.auth.account_name","typeLabel":"string"},"user":{"description":"User for NATS authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.2.auth.user","typeLabel":"string"},"password":{"description":"Password for NATS authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.2.auth.password","typeLabel":"string"}},"title":"NATSUserPasswordAuth","x-fern-type-name":"NATSUserPasswordAuth","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.2.auth","typeLabel":"NATSUserPasswordAuth · object"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.2","typeLabel":"CoreNATSOutputConfig · object"},{"type":"object","title":"KafkaOutputConfig","description":"Describes the configuration for the output Kafka worker","required":["type","bootstrap_servers","topic_name","tls"],"x-fern-type-name":"KafkaOutputConfig","properties":{"type":{"description":"+value=kafka","type":"string","enum":["kafka"],"default":"kafka","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.3.type","typeLabel":"enum\u003cstring>"},"bootstrap_servers":{"description":"'Kafka Bootstrap servers - Comma separated list of Kafka brokers \"hostname:port\" to connect to for bootstrap'","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.3.bootstrap_servers","typeLabel":"string"},"topic_name":{"description":"Kafka topic to publish to","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.3.topic_name","typeLabel":"string"},"tls":{"description":"TLS configuration for SASL authentication","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.3.tls","typeLabel":"boolean"},"auth":{"type":"object","required":["username","password"],"properties":{"username":{"description":"Username for SASL authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.3.auth.username","typeLabel":"string"},"password":{"description":"Password for SASL authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.3.auth.password","typeLabel":"string"}},"title":"KafkaSASLAuth","x-fern-type-name":"KafkaSASLAuth","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.3.auth","typeLabel":"KafkaSASLAuth · object"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.3","typeLabel":"KafkaOutputConfig · object"},{"type":"object","title":"AMQPOutputConfig","description":"Describes the configuration for the output AMQP worker","required":["type","url","routing_key"],"x-fern-type-name":"AMQPOutputConfig","properties":{"type":{"description":"+value=amqp","type":"string","enum":["amqp"],"default":"amqp","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.4.type","typeLabel":"enum\u003cstring>"},"url":{"description":"AMQP Queue URL of Publisher","type":"string","pattern":"^(amqp|amqps?)://(?:[^:@]+(?::[^:@]+)?@)?([^/?]+)(?:/([^?]+))?/?([^?]+)?(?:\\?(.*))?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.4.url","typeLabel":"string"},"routing_key":{"description":"AMQP Routing Key to publish to.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.4.routing_key","typeLabel":"string"},"exchange_name":{"description":"AMQP Exchange Name","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.4.exchange_name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config.oneOf.4","typeLabel":"AMQPOutputConfig · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config.output_config","typeLabel":"SQSOutputConfig · object | NATSOutputConfig · object | CoreNATSOutputConfig · object | KafkaOutputConfig · object | AMQPOutputConfig · object"}},"title":"WorkerConfig","x-fern-type-name":"WorkerConfig","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.worker_config","typeLabel":"WorkerConfig · object"},"artifacts_download":{"description":"Download and cache models in a volume to enhance loading speeds and reduce costs by avoiding repeated downloads. [Docs](https://docs.truefoundry.com/docs/download-and-cache-models)","type":"object","required":["artifacts"],"properties":{"artifacts":{"description":"List of artifacts to be cached","type":"array","items":{"oneOf":[{"type":"object","title":"TrueFoundryArtifactSource","description":"Input for Artifact from TrueFoundry Artifact Registry","required":["type","artifact_version_fqn","download_path_env_variable"],"x-fern-type-name":"TrueFoundryArtifactSource","properties":{"type":{"description":"+value=truefoundry-artifact","type":"string","enum":["truefoundry-artifact"],"default":"truefoundry-artifact","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"artifact_version_fqn":{"description":"Artifact or Model Version FQN of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.0.artifact_version_fqn","typeLabel":"string"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.0.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.0","typeLabel":"TrueFoundryArtifactSource · object"},{"type":"object","title":"HuggingfaceArtifactSource","description":"Input for Artifact from Huggingface Model Hub","required":["type","model_id","revision","ignore_patterns","download_path_env_variable"],"x-fern-type-name":"HuggingfaceArtifactSource","properties":{"type":{"description":"+value=huggingface-hub","type":"string","enum":["huggingface-hub"],"default":"huggingface-hub","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"model_id":{"description":"Model ID of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1.model_id","typeLabel":"string"},"revision":{"description":"Revision of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1.revision","typeLabel":"string"},"ignore_patterns":{"description":"List of patterns to ignore while downloading the artifact","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns.items.[INDEX]","typeLabel":"string"},"default":["*.h5","*.ot","*.tflite","*.msgpack"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns","typeLabel":"string[]"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1","typeLabel":"HuggingfaceArtifactSource · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX]","typeLabel":"TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.artifacts","typeLabel":"(TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object)[]"},"cache_volume":{"description":"Describes the volume that will be used to cache the models","type":"object","required":["storage_class","cache_size"],"properties":{"storage_class":{"description":"Storage class of the Volume where artifacts will be cached","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.cache_volume.storage_class","typeLabel":"string"},"cache_size":{"description":"Size of the Volume (in GB) where artifacts will be cached. Should be greater than twice the size of artifacts getting cached","type":"integer","minimum":1,"maximum":10000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.cache_volume.cache_size","typeLabel":"integer"}},"title":"ArtifactsCacheVolume","x-fern-type-name":"ArtifactsCacheVolume","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download.cache_volume","typeLabel":"ArtifactsCacheVolume · object"}},"title":"ArtifactsDownload","x-fern-type-name":"ArtifactsDownload","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.artifacts_download","typeLabel":"ArtifactsDownload · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.env","typeLabel":"object | null"},"service_account":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.service_account","typeLabel":"string"},"mounts":{"description":"Configure data to be mounted to service pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-service)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"labels":{"description":"Labels","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.labels","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.kustomize","typeLabel":"Kustomize · object"},"liveness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.liveness_probe","typeLabel":"HealthProbe · object"},"readiness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.readiness_probe","typeLabel":"HealthProbe · object"},"startup_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.startup_probe","typeLabel":"HealthProbe · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.workspace_fqn","typeLabel":"string"},"rollout_strategy":{"description":"This strategy updates the pods in a rolling fashion such that a subset of the\ntotal pods are replaced with new version at one time.\nA commonly used strategy can be to have maxUnavailablePercentage close to 0 so that there\nis no downtime and keep the maxSurgePercentage to around 25%. If you are anyways running\na large number of pods, the service can often tolerate a few pods going down - so you\nmax maxUnavailablePercentage = 10 and maxSurgePercentage=0. You can read about it more\n[here](https://spot.io/resources/kubernetes-autoscaling/5-kubernetes-deployment-strategies-roll-out-like-the-pros/)","type":"object","required":["type","max_unavailable_percentage","max_surge_percentage"],"properties":{"type":{"description":"+value=rolling_update","type":"string","enum":["rolling_update"],"default":"rolling_update","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.rollout_strategy.type","typeLabel":"enum\u003cstring>"},"max_unavailable_percentage":{"description":"Percentage of total replicas that can be brought down at one time.\nFor a value of 25 when replicas are set to 12 this would mean minimum (25% of 12) = 3 pods might be unavailable during the deployment.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.rollout_strategy.max_unavailable_percentage","typeLabel":"integer"},"max_surge_percentage":{"description":"Percentage of total replicas of updated image that can be brought up over the total replicas count.\nFor a value of 25 when replicas are set to 12 this would mean (12+(25% of 12) = 15) pods might be running at one time.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.rollout_strategy.max_surge_percentage","typeLabel":"integer"}},"title":"Rolling","x-fern-type-name":"Rolling","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.rollout_strategy","typeLabel":"Rolling · object"},"sidecar":{"type":"object","required":["destination_url"],"properties":{"destination_url":{"description":"URL for the processor to invoke","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.sidecar.destination_url","typeLabel":"string"},"request_timeout":{"description":"Timeout for the invoke request in seconds","type":"integer","minimum":1,"default":10,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.sidecar.request_timeout","typeLabel":"integer"},"sidecar_image":{"description":"Image for the processor sidecar (This field will be deprecated in the future)","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.sidecar.sidecar_image","typeLabel":"string"}},"title":"AsyncProcessorSidecar","x-fern-type-name":"AsyncProcessorSidecar","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1.sidecar","typeLabel":"AsyncProcessorSidecar · object"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.1","typeLabel":"AsyncService · object"},{"type":"object","title":"Job","description":"Describes the configuration for the job","required":["type","name","image","trigger"],"x-fern-type-name":"Job","properties":{"type":{"description":"+value=job","type":"string","enum":["job"],"default":"job","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the job","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.name","typeLabel":"string"},"image":{"oneOf":[{"type":"object","title":"Build","description":"Describes how we build our code into a Docker image.","required":["type","build_source","build_spec"],"x-fern-type-name":"Build","properties":{"type":{"description":"+value=build","type":"string","enum":["build"],"default":"build","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.type","typeLabel":"enum\u003cstring>"},"build_source":{"oneOf":[{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.0.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.0","typeLabel":"RemoteSource · object"},{"type":"object","title":"GitSource","description":"Describes that we are using code stored in a git repository to build our image","required":["type","repo_url","ref"],"x-fern-type-name":"GitSource","properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"The repository URL.","type":"string","pattern":"^(https?://)\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.1.repo_url","typeLabel":"string"},"ref":{"description":"The commit SHA.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.1.ref","typeLabel":"string"},"branch_name":{"description":"Selecting branch will select latest commit SHA of the branch.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.1.branch_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.1","typeLabel":"GitSource · object"},{"type":"object","title":"LocalSource","description":"Describes that we are using code stored in a local developement environment to build our image","required":["type","project_root_path","local_build"],"x-fern-type-name":"LocalSource","properties":{"type":{"description":"+value=local","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"project_root_path":{"description":"Local project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.2.project_root_path","typeLabel":"string"},"local_build":{"description":"run docker build locally","type":"boolean","default":false,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.2.local_build","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source.oneOf.2","typeLabel":"LocalSource · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_source","typeLabel":"RemoteSource · object | GitSource · object | LocalSource · object"},"build_spec":{"oneOf":[{"type":"object","title":"DockerFileBuild","description":"Describes that we are using a dockerfile to build our image","required":["type","dockerfile_path","build_context_path"],"x-fern-type-name":"DockerFileBuild","properties":{"type":{"description":"+value=dockerfile","type":"string","enum":["dockerfile"],"default":"dockerfile","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.type","typeLabel":"enum\u003cstring>"},"dockerfile_path":{"description":"The file path of the Dockerfile relative to project root path.","type":"string","default":"./Dockerfile","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.dockerfile_path","typeLabel":"string"},"build_context_path":{"description":"Build context path for the Dockerfile relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.command","typeLabel":"string | string[]"},"build_args":{"description":"Build arguments to pass to docker build","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_args.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_args","typeLabel":"object"},"build_secrets":{"description":"Build secrets you can use in run statements inside dockerfile like RUN --mount=type=secret,id=pip_index_url ... you can learn more about build secrets here https://www.truefoundry.com/docs/docker-build-secrets","type":"array","items":{"type":"object","required":["id","value"],"properties":{"id":{"description":"The ID of the build secret.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].id","typeLabel":"string"},"value":{"description":"The value of the build secret.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].value","typeLabel":"string"},"env":{"description":"The name of the environment variable to inject the secret into.","type":"string","pattern":"^[_a-zA-Z0-9][_a-zA-Z0-9]{1,31}$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].env","typeLabel":"string"}},"title":"BuildSecret","x-fern-type-name":"BuildSecret","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX]","typeLabel":"BuildSecret · object"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_secrets","typeLabel":"BuildSecret · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.0","typeLabel":"DockerFileBuild · object"},{"type":"object","title":"PythonBuild","description":"Describes that we are using python to build a container image with a specific python version and pip packages installed.","required":["type","build_context_path","command"],"x-fern-type-name":"PythonBuild","properties":{"type":{"description":"+value=tfy-python-buildpack","type":"string","enum":["tfy-python-buildpack"],"default":"tfy-python-buildpack","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.type","typeLabel":"enum\u003cstring>"},"build_context_path":{"description":"Build path relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.command","typeLabel":"string | string[]"},"python_version":{"description":"Python version to run your application. Should be one of the tags listed on [Official Python Docker Page](https://hub.docker.com/_/python)","type":"string","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_version","typeLabel":"string"},"requirements_path":{"description":"Path to `requirements.txt` relative to\n`Path to build context`","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.pip_packages","typeLabel":"string[]"},"python_dependencies":{"oneOf":[{"type":"object","title":"Pip","description":"Use pip to install requirements files and packages","required":["type"],"x-fern-type-name":"Pip","properties":{"type":{"description":"+value=pip","type":"string","enum":["pip"],"default":"pip","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.type","typeLabel":"enum\u003cstring>"},"requirements_path":{"description":"Path to `requirements.txt` relative to `Path to build context`","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0","typeLabel":"Pip · object"},{"type":"object","title":"UV","description":"Use `uv` to setup env.\nYour build context root must contain `pyproject.toml` and `uv.lock`","required":["type"],"x-fern-type-name":"UV","properties":{"type":{"description":"+value=uv","type":"string","enum":["uv"],"default":"uv","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uv_version":{"description":"UV version to use","type":"string","default":"latest","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.uv_version","typeLabel":"string"},"sync_options":{"description":"Sync options to pass to uv command","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.sync_options","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1","typeLabel":"UV · object"},{"type":"object","title":"Poetry","description":"Use `poetry` to setup env.\nYour build context root must contain `pyproject.toml` and `poetry.lock`","required":["type"],"x-fern-type-name":"Poetry","properties":{"type":{"description":"+value=poetry","type":"string","enum":["poetry"],"default":"poetry","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.type","typeLabel":"enum\u003cstring>"},"poetry_version":{"type":"any","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version","typeLabel":"any"},"install_options":{"description":"install options to pass to poetry command","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.install_options","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2","typeLabel":"Poetry · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies","typeLabel":"Pip · object | UV · object | Poetry · object"},"apt_packages":{"description":"Debian packages to install via `apt get`.\nIn Python/YAML E.g. [\"git\", \"ffmpeg\", \"htop\"]","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.apt_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.apt_packages","typeLabel":"string[]"},"cuda_version":{"description":"Version of CUDA Toolkit and CUDNN to install in the image\nThese combinations are based off of publically available docker images on docker hub\nYou can also specify a valid tag of the form {cuda_version_number}-cudnn{cudnn_version_number}-{runtime|devel}-ubuntu{ubuntu_version}\nRefer https://hub.docker.com/r/nvidia/cuda/tags for valid set of values\nNote: We use deadsnakes ubuntu ppa to add Python that currently supports only Ubuntu 18.04, 20.04 and 22.04","type":"string","pattern":"^((\\d+\\.\\d+(\\.\\d+)?-cudnn(\\d+)?-(runtime|devel)-ubuntu\\d+\\.\\d+)|11\\.0-cudnn8|11\\.1-cudnn8|11\\.2-cudnn8|11\\.3-cudnn8|11\\.4-cudnn8|11\\.5-cudnn8|11\\.6-cudnn8|11\\.7-cudnn8|11\\.8-cudnn8|12\\.0-cudnn8|12\\.1-cudnn8|12\\.2-cudnn8|12\\.3-cudnn9|12\\.4-cudnn9|12\\.5-cudnn9|12\\.6-cudnn9|12\\.8-cudnn9|12\\.9-cudnn9)$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1.cuda_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec.oneOf.1","typeLabel":"PythonBuild · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.build_spec","typeLabel":"DockerFileBuild · object | PythonBuild · object"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.0","typeLabel":"Build · object"},{"type":"object","title":"Image","description":"Describes that we are using a pre-built image stored in a Docker Image registry","required":["type","image_uri"],"x-fern-type-name":"Image","properties":{"type":{"description":"+value=image","type":"string","enum":["image"],"default":"image","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.1.type","typeLabel":"enum\u003cstring>"},"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.1.image_uri","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.1.docker_registry","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.1.command","typeLabel":"string | string[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image.oneOf.1","typeLabel":"Image · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.image","typeLabel":"Build · object | Image · object"},"trigger":{"oneOf":[{"type":"object","title":"Manual","description":"Trigger the job manually. [Docs](https://docs.truefoundry.com/docs/deploy-a-cron-job)","default":{"type":"manual"},"required":["type"],"x-fern-type-name":"Manual","properties":{"type":{"description":"+value=manual","type":"string","enum":["manual"],"default":"manual","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.trigger.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.trigger.oneOf.0","typeLabel":"Manual · object"},{"type":"object","title":"Schedule","description":"Run the job on a schedule. [Docs](https://docs.truefoundry.com/docs/deploy-a-cron-job)","default":{"type":"manual"},"required":["type","schedule","concurrency_policy"],"x-fern-type-name":"Schedule","properties":{"type":{"description":"+value=scheduled","type":"string","enum":["scheduled"],"default":"scheduled","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.trigger.oneOf.1.type","typeLabel":"enum\u003cstring>"},"schedule":{"description":"Specify the schedule for this job to be run periodically in cron format.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.trigger.oneOf.1.schedule","typeLabel":"string"},"concurrency_policy":{"description":"Choose whether to allow this job to run while another instance of the job is running, or to replace the currently running instance. Allow\nwill enable multiple instances of this job to run. Forbid will keep the current instance of the job running and stop a new instance from being run.\nReplace will terminate any currently running instance of the job and start a new one.","type":"string","enum":["Forbid","Allow","Replace"],"default":"Forbid","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.trigger.oneOf.1.concurrency_policy","typeLabel":"enum\u003cstring>"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.trigger.oneOf.1.timezone","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.trigger.oneOf.1","typeLabel":"Schedule · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.trigger","typeLabel":"Manual · object | Schedule · object"},"trigger_on_deploy":{"description":"Trigger the job after deploy immediately","type":"boolean","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.trigger_on_deploy","typeLabel":"boolean"},"params":{"description":"Configure params and pass it to create different job runs","type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"description":"Name of the param","type":"string","pattern":"^[a-z][a-z0-9\\-_]{0,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.params.items.[INDEX].name","typeLabel":"string"},"description":{"description":"Description of param","type":"string","pattern":"^.{1,127}$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.params.items.[INDEX].description","typeLabel":"string"},"default":{"description":"Default value or placeholder","type":"string","pattern":"^.{0,127}$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.params.items.[INDEX].default","typeLabel":"string"},"param_type":{"type":"string","enum":["string","ml_repo"],"default":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.params.items.[INDEX].param_type","typeLabel":"enum\u003cstring>"}},"title":"Param","x-fern-type-name":"Param","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.params.items.[INDEX]","typeLabel":"Param · object"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.params","typeLabel":"Param · object[]"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.env","typeLabel":"object | null"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.resources","typeLabel":"Resources · object"},"alerts":{"description":"Configure alerts to be sent when the job starts/fails/completes","type":"array","items":{"description":"Describes the configuration for the job alerts","type":"object","properties":{"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].to_emails.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].to_emails","typeLabel":"string[]"},"notification_target":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBot","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.2.channels","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.2","typeLabel":"SlackBot · object"},{"type":"object","title":"PagerDuty","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target.oneOf.3","typeLabel":"PagerDuty · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target","typeLabel":"Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object"},"on_start":{"description":"Send an alert when the job starts","type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].on_start","typeLabel":"boolean"},"on_completion":{"type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].on_completion","typeLabel":"boolean"},"on_failure":{"description":"Send an alert when the job fails","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].on_failure","typeLabel":"boolean"}},"title":"JobAlert","x-fern-type-name":"JobAlert","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts.items.[INDEX]","typeLabel":"JobAlert · object"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.alerts","typeLabel":"JobAlert · object[]"},"retries":{"description":"Specify the maximum number of attempts to retry a job before it is marked as failed.","type":"integer","minimum":0,"maximum":10,"default":0,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.retries","typeLabel":"integer"},"timeout":{"description":"Job timeout in seconds.","type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":432000,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.timeout","typeLabel":"integer"},"concurrency_limit":{"description":"Number of runs that can run concurrently","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.concurrency_limit","typeLabel":"integer"},"service_account":{"description":"+sort=1000","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.service_account","typeLabel":"string"},"mounts":{"description":"Configure data to be mounted to job pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"labels":{"description":"Labels","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.labels","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.kustomize","typeLabel":"Kustomize · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2.workspace_fqn","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.2","typeLabel":"Job · object"},{"type":"object","title":"Helm","required":["type","name","source"],"x-fern-type-name":"Helm","properties":{"type":{"description":"+value=helm","type":"string","enum":["helm"],"default":"helm","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Helm deployment. This will be set as the release name of the chart you are deploying.","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.name","typeLabel":"string"},"source":{"oneOf":[{"type":"object","title":"HelmRepo","description":"Source helm repository","required":["type","repo_url","chart","version"],"x-fern-type-name":"HelmRepo","properties":{"type":{"description":"+value=helm-repo","type":"string","enum":["helm-repo"],"default":"helm-repo","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"Helm repository URL - Needs to be a valid URL.","type":"string","pattern":"^(((https?|wss):\\/\\/)?(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\\+.~#?\u0026\\/=]*))$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.0.repo_url","typeLabel":"string"},"chart":{"description":"The helm chart name","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._/-]*$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.0.chart","typeLabel":"string"},"version":{"description":"Helm chart version","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._+-]*$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.0.version","typeLabel":"string"},"integration_fqn":{"description":"FQN of the helm repo integration. If you can't find your integration here,\nadd it through the [Integrations](/integrations) page","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.0.integration_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.0","typeLabel":"HelmRepo · object"},{"type":"object","title":"OCIRepo","description":"OCIRepo","required":["type","oci_chart_url","version"],"x-fern-type-name":"OCIRepo","properties":{"type":{"description":"+value=oci-repo","type":"string","enum":["oci-repo"],"default":"oci-repo","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"oci_chart_url":{"description":"OCI chart URL - Need to be a valid URL.","type":"string","pattern":"^(((oci):\\/\\/)?(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\\+.~#?\u0026\\/=]*))$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.1.oci_chart_url","typeLabel":"string"},"version":{"description":"Helm chart version","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._+-]*$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.1.version","typeLabel":"string"},"integration_fqn":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations) page","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.1.integration_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.1","typeLabel":"OCIRepo · object"},{"type":"object","title":"GitHelmRepo","description":"Source helm repository","required":["type","repo_url","revision","path"],"x-fern-type-name":"GitHelmRepo","properties":{"type":{"description":"+value=git-helm-repo","type":"string","enum":["git-helm-repo"],"default":"git-helm-repo","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"Git repository URL - Needs to be a valid URL.","type":"string","pattern":"^(((https?|wss):\\/\\/)?(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\\+.~#?\u0026\\/=]*))$","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.2.repo_url","typeLabel":"string"},"revision":{"description":"Branch/Commit SHA/Tag of the git repo.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.2.revision","typeLabel":"string"},"path":{"description":"Path to the chart.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.2.path","typeLabel":"string"},"value_files":{"description":"Helm values files for overriding values in the helm chart.\nThe path is relative to the Path directory defined above","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.2.value_files.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.2.value_files","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source.oneOf.2","typeLabel":"GitHelmRepo · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.source","typeLabel":"HelmRepo · object | OCIRepo · object | GitHelmRepo · object"},"labels":{"description":"Add labels to base argo app","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.labels","typeLabel":"object"},"values":{"description":"Values file as block file","type":"object","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.values","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.kustomize","typeLabel":"Kustomize · object"},"ignoreDifferences":{"type":"array","items":{"type":"object","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.ignoreDifferences.items.[INDEX]","typeLabel":"object"},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.ignoreDifferences","typeLabel":"object[]"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3.workspace_fqn","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX].oneOf.3","typeLabel":"Helm · object"}],"uniqueKey":"existingManifest.oneOf.6.components.items.[INDEX]","typeLabel":"Service · object | AsyncService · object | Job · object | Helm · object"},"uniqueKey":"existingManifest.oneOf.6.components","typeLabel":"(Service · object | AsyncService · object | Job · object | Helm · object)[]"},"template":{"description":"Template to be used for the application set.","type":"string","uniqueKey":"existingManifest.oneOf.6.template","typeLabel":"string"},"values":{"description":"Values to be used to render components for the application set.","type":"object","uniqueKey":"existingManifest.oneOf.6.values","typeLabel":"object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"existingManifest.oneOf.6.workspace_fqn","typeLabel":"string"},"convert_template_manifest":{"description":"Flag to indicate if the template manifest should be converted to TrueFoundry manifest","type":"boolean","uniqueKey":"existingManifest.oneOf.6.convert_template_manifest","typeLabel":"boolean"}},"uniqueKey":"existingManifest.oneOf.6","typeLabel":"ApplicationSet · object"},{"type":"object","title":"AwsProviderAccount","description":"The existing manifest of the resource","required":["type","name","aws_account_id","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/aws","type":"string","enum":["provider-account/aws"],"default":"provider-account/aws","isRequired":true,"uniqueKey":"existingManifest.oneOf.7.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the AWS provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.7.name","typeLabel":"string"},"aws_account_id":{"description":"The AWS account ID.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.7.aws_account_id","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the AWS provider account.","type":"array","items":{"type":"any","uniqueKey":"existingManifest.oneOf.7.integrations.items.[INDEX]","typeLabel":"any"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.7.integrations","typeLabel":"any[]"},"auth_data":{"type":"any","uniqueKey":"existingManifest.oneOf.7.auth_data","typeLabel":"any"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.7.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.7.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.7","typeLabel":"AwsProviderAccount · object"},{"type":"object","title":"SnowflakeProviderAccount","description":"The existing manifest of the resource","required":["type","name","account_identifier","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/snowflake","type":"string","enum":["provider-account/snowflake"],"default":"provider-account/snowflake","isRequired":true,"uniqueKey":"existingManifest.oneOf.8.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Snowflake provider account","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.8.name","typeLabel":"string"},"account_identifier":{"description":"Snowflake account identifier, as in https://\u003caccount_identifier>.snowflakecomputing.com. Insert the identifier only, without the URL.","type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9\\-_.]*$","isRequired":true,"uniqueKey":"existingManifest.oneOf.8.account_identifier","typeLabel":"string"},"auth_data":{"description":"PAT","type":"object","required":["type","pat_token"],"properties":{"type":{"description":"+value=pat-token","type":"string","enum":["pat-token"],"default":"pat-token","isRequired":true,"uniqueKey":"existingManifest.oneOf.8.auth_data.type","typeLabel":"enum\u003cstring>"},"pat_token":{"description":"Snowflake programmatic access token. The account's network policy must allow the TrueFoundry control plane and gateway egress IPs.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.8.auth_data.pat_token","typeLabel":"string"}},"title":"SnowflakePatTokenAuth","x-fern-type-name":"SnowflakePatTokenAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.8.auth_data","typeLabel":"SnowflakePatTokenAuth · object"},"integrations":{"description":"List of integrations that are associated with the Snowflake provider account","type":"array","items":{"description":"Import agents from Snowflake Cortex into the TrueFoundry agent registry.","type":"object","required":["type","name"],"properties":{"type":{"description":"+value=integration/agent-registry/snowflake/cortex-agent","type":"string","enum":["integration/agent-registry/snowflake/cortex-agent"],"default":"integration/agent-registry/snowflake/cortex-agent","isRequired":true,"uniqueKey":"existingManifest.oneOf.8.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.8.integrations.items.[INDEX].name","typeLabel":"string"},"auth_data":{"description":"PAT","type":"object","required":["type","pat_token"],"properties":{"type":{"description":"+value=pat-token","type":"string","enum":["pat-token"],"default":"pat-token","isRequired":true,"uniqueKey":"existingManifest.oneOf.8.integrations.items.[INDEX].auth_data.type","typeLabel":"enum\u003cstring>"},"pat_token":{"description":"Snowflake programmatic access token. The account's network policy must allow the TrueFoundry control plane and gateway egress IPs.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.8.integrations.items.[INDEX].auth_data.pat_token","typeLabel":"string"}},"title":"SnowflakePatTokenAuth","x-fern-type-name":"SnowflakePatTokenAuth","uniqueKey":"existingManifest.oneOf.8.integrations.items.[INDEX].auth_data","typeLabel":"SnowflakePatTokenAuth · object"},"syncSchedule":{"description":"Cron Sync Schedule","type":"object","required":["type","expression"],"properties":{"type":{"description":"+value=cron","type":"string","enum":["cron"],"default":"cron","isRequired":true,"uniqueKey":"existingManifest.oneOf.8.integrations.items.[INDEX].syncSchedule.type","typeLabel":"enum\u003cstring>"},"expression":{"description":"Cron expression for when to run the sync. Minute cannot be configured.","type":"string","pattern":"^0 [^ ]+ [^ ]+ [^ ]+ [^ ]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.8.integrations.items.[INDEX].syncSchedule.expression","typeLabel":"string"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is UTC.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","default":"UTC","uniqueKey":"existingManifest.oneOf.8.integrations.items.[INDEX].syncSchedule.timezone","typeLabel":"string"}},"title":"CronSyncSchedule","x-fern-type-name":"CronSyncSchedule","uniqueKey":"existingManifest.oneOf.8.integrations.items.[INDEX].syncSchedule","typeLabel":"CronSyncSchedule · object"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.8.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.8.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"SnowflakeIntegrations","x-fern-type-name":"SnowflakeIntegrations","uniqueKey":"existingManifest.oneOf.8.integrations.items.[INDEX]","typeLabel":"SnowflakeIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.8.integrations","typeLabel":"SnowflakeIntegrations · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.8.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.8.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.8","typeLabel":"SnowflakeProviderAccount · object"},{"type":"object","title":"AzureProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/azure","type":"string","enum":["provider-account/azure"],"default":"provider-account/azure","isRequired":true,"uniqueKey":"existingManifest.oneOf.9.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Azure provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.9.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the Azure provider account.","type":"array","items":{"type":"any","uniqueKey":"existingManifest.oneOf.9.integrations.items.[INDEX]","typeLabel":"any"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.9.integrations","typeLabel":"any[]"},"subscription_id":{"description":"The ID of the target subscription. The value must be an UUID.","type":"string","uniqueKey":"existingManifest.oneOf.9.subscription_id","typeLabel":"string"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.9.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.9.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.9","typeLabel":"AzureProviderAccount · object"},{"type":"object","title":"GcpProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/gcp","type":"string","enum":["provider-account/gcp"],"default":"provider-account/gcp","isRequired":true,"uniqueKey":"existingManifest.oneOf.10.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the GCP provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.10.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the GCP provider account.","type":"array","items":{"type":"any","uniqueKey":"existingManifest.oneOf.10.integrations.items.[INDEX]","typeLabel":"any"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.10.integrations","typeLabel":"any[]"},"project_id":{"description":"The project id of the GCP account.","type":"string","uniqueKey":"existingManifest.oneOf.10.project_id","typeLabel":"string"},"auth_data":{"description":"GCP Key File Auth","type":"object","required":["type","key_file_content"],"properties":{"type":{"description":"+value=key-file","type":"string","enum":["key-file"],"default":"key-file","isRequired":true,"uniqueKey":"existingManifest.oneOf.10.auth_data.type","typeLabel":"enum\u003cstring>"},"key_file_content":{"type":"any","description":"Key File Content - Key file content must be valid JSON","isRequired":true,"uniqueKey":"existingManifest.oneOf.10.auth_data.key_file_content","typeLabel":"any"}},"title":"GcpKeyFileAuth","x-fern-type-name":"GcpKeyFileAuth","uniqueKey":"existingManifest.oneOf.10.auth_data","typeLabel":"GcpKeyFileAuth · object"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.10.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.10.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.10","typeLabel":"GcpProviderAccount · object"},{"type":"object","title":"DockerhubProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/dockerhub","type":"string","enum":["provider-account/dockerhub"],"default":"provider-account/dockerhub","isRequired":true,"uniqueKey":"existingManifest.oneOf.11.type","typeLabel":"enum\u003cstring>"},"name":{"description":"3 to 36 lower case characters long alphanumeric word, may contain - in between, cannot start with a number","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.11.name","typeLabel":"string"},"integrations":{"description":"+uiType=IntegrationsGroup","type":"array","items":{"description":"Dockerhub Registry","type":"object","required":["type","name","registry_url"],"properties":{"type":{"description":"+value=integration/docker-registry/dockerhub","type":"string","enum":["integration/docker-registry/dockerhub"],"default":"integration/docker-registry/dockerhub","isRequired":true,"uniqueKey":"existingManifest.oneOf.11.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.11.integrations.items.[INDEX].name","typeLabel":"string"},"registry_url":{"description":"Registry URL","type":"string","pattern":"^(https?:\\/\\/)?(index\\.docker\\.io|docker\\.io|registry\\.hub\\.docker\\.com)(\\/([\\w.-]+))?(\\/?)$","isRequired":true,"uniqueKey":"existingManifest.oneOf.11.integrations.items.[INDEX].registry_url","typeLabel":"string"},"auth_data":{"description":"Dockerhub Basic Auth","type":"object","required":["type","username","password"],"properties":{"type":{"description":"+value=basic-auth","type":"string","enum":["basic-auth"],"default":"basic-auth","isRequired":true,"uniqueKey":"existingManifest.oneOf.11.integrations.items.[INDEX].auth_data.type","typeLabel":"enum\u003cstring>"},"username":{"description":"+sort=100","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.11.integrations.items.[INDEX].auth_data.username","typeLabel":"string"},"password":{"description":"+sort=200\n+uiType=SecretSelect","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.11.integrations.items.[INDEX].auth_data.password","typeLabel":"string"}},"title":"DockerhubBasicAuth","x-fern-type-name":"DockerhubBasicAuth","uniqueKey":"existingManifest.oneOf.11.integrations.items.[INDEX].auth_data","typeLabel":"DockerhubBasicAuth · object"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.11.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.11.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"DockerhubIntegrations","x-fern-type-name":"DockerhubIntegrations","uniqueKey":"existingManifest.oneOf.11.integrations.items.[INDEX]","typeLabel":"DockerhubIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.11.integrations","typeLabel":"DockerhubIntegrations · object[]"},"account_name":{"description":"Account Name","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.11.account_name","typeLabel":"string"},"auth_data":{"description":"Dockerhub Basic Auth","type":"object","required":["type","username","password"],"properties":{"type":{"description":"+value=basic-auth","type":"string","enum":["basic-auth"],"default":"basic-auth","isRequired":true,"uniqueKey":"existingManifest.oneOf.11.auth_data.type","typeLabel":"enum\u003cstring>"},"username":{"description":"+sort=100","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.11.auth_data.username","typeLabel":"string"},"password":{"description":"+sort=200\n+uiType=SecretSelect","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.11.auth_data.password","typeLabel":"string"}},"title":"DockerhubBasicAuth","x-fern-type-name":"DockerhubBasicAuth","uniqueKey":"existingManifest.oneOf.11.auth_data","typeLabel":"DockerhubBasicAuth · object"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.11.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.11.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.11","typeLabel":"DockerhubProviderAccount · object"},{"type":"object","title":"BitbucketProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/bitbucket","type":"string","enum":["provider-account/bitbucket"],"default":"provider-account/bitbucket","isRequired":true,"uniqueKey":"existingManifest.oneOf.12.type","typeLabel":"enum\u003cstring>"},"name":{"description":"+uiProps={\"disableEdit\":true}","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.12.name","typeLabel":"string"},"integrations":{"description":"+uiType=IntegrationsGroup","type":"array","items":{"type":"any","uniqueKey":"existingManifest.oneOf.12.integrations.items.[INDEX]","typeLabel":"any"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.12.integrations","typeLabel":"any[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.12.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.12.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.12","typeLabel":"BitbucketProviderAccount · object"},{"type":"object","title":"CustomProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/custom","type":"string","enum":["provider-account/custom"],"default":"provider-account/custom","isRequired":true,"uniqueKey":"existingManifest.oneOf.13.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.13.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the provider account.","type":"array","items":{"type":"any","uniqueKey":"existingManifest.oneOf.13.integrations.items.[INDEX]","typeLabel":"any"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.13.integrations","typeLabel":"any[]"},"auth_data":{"description":"Custom Basic Auth","type":"object","required":["type","username","password"],"properties":{"type":{"description":"+value=basic-auth","type":"string","enum":["basic-auth"],"default":"basic-auth","isRequired":true,"uniqueKey":"existingManifest.oneOf.13.auth_data.type","typeLabel":"enum\u003cstring>"},"username":{"description":"The username for the basic authentication.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.13.auth_data.username","typeLabel":"string"},"password":{"description":"The password for the basic authentication.","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.13.auth_data.password","typeLabel":"string"}},"title":"CustomBasicAuth","x-fern-type-name":"CustomBasicAuth","uniqueKey":"existingManifest.oneOf.13.auth_data","typeLabel":"CustomBasicAuth · object"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.13.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.13.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.13","typeLabel":"CustomProviderAccount · object"},{"type":"object","title":"GithubProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/github","type":"string","enum":["provider-account/github"],"default":"provider-account/github","isRequired":true,"uniqueKey":"existingManifest.oneOf.14.type","typeLabel":"enum\u003cstring>"},"name":{"description":"+uiProps={\"disableEdit\":true}","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.14.name","typeLabel":"string"},"integrations":{"description":"+uiType=IntegrationsGroup","type":"array","items":{"description":"Github","type":"object","required":["type","name","account_name"],"properties":{"type":{"description":"+value=integration/vcs/github","type":"string","enum":["integration/vcs/github"],"default":"integration/vcs/github","isRequired":true,"uniqueKey":"existingManifest.oneOf.14.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"+sort=100","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.14.integrations.items.[INDEX].name","typeLabel":"string"},"account_name":{"description":"Account Name","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.14.integrations.items.[INDEX].account_name","typeLabel":"string"},"auth_data":{"type":"any","uniqueKey":"existingManifest.oneOf.14.integrations.items.[INDEX].auth_data","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.14.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.14.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"GithubIntegration","x-fern-type-name":"GithubIntegration","uniqueKey":"existingManifest.oneOf.14.integrations.items.[INDEX]","typeLabel":"GithubIntegration · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.14.integrations","typeLabel":"GithubIntegration · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.14.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.14.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.14","typeLabel":"GithubProviderAccount · object"},{"type":"object","title":"GitlabProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/gitlab","type":"string","enum":["provider-account/gitlab"],"default":"provider-account/gitlab","isRequired":true,"uniqueKey":"existingManifest.oneOf.15.type","typeLabel":"enum\u003cstring>"},"name":{"description":"+uiProps={\"disableEdit\":true}","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.15.name","typeLabel":"string"},"integrations":{"description":"+uiType=IntegrationsGroup","type":"array","items":{"description":"Gitlab","type":"object","required":["type","name","account_name"],"properties":{"type":{"description":"+value=integration/vcs/gitlab","type":"string","enum":["integration/vcs/gitlab"],"default":"integration/vcs/gitlab","isRequired":true,"uniqueKey":"existingManifest.oneOf.15.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"+sort=100","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.15.integrations.items.[INDEX].name","typeLabel":"string"},"account_name":{"description":"Account Name","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.15.integrations.items.[INDEX].account_name","typeLabel":"string"},"auth_data":{"type":"any","uniqueKey":"existingManifest.oneOf.15.integrations.items.[INDEX].auth_data","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.15.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.15.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"GitlabIntegration","x-fern-type-name":"GitlabIntegration","uniqueKey":"existingManifest.oneOf.15.integrations.items.[INDEX]","typeLabel":"GitlabIntegration · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.15.integrations","typeLabel":"GitlabIntegration · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.15.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.15.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.15","typeLabel":"GitlabProviderAccount · object"},{"type":"object","title":"JfrogProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/jfrog","type":"string","enum":["provider-account/jfrog"],"default":"provider-account/jfrog","isRequired":true,"uniqueKey":"existingManifest.oneOf.16.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.16.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the provider account.","type":"array","items":{"description":"Jfrog Artifacts Registry","type":"object","required":["type","name","registry_url"],"properties":{"type":{"description":"+value=integration/docker-registry/jfrog","type":"string","enum":["integration/docker-registry/jfrog"],"default":"integration/docker-registry/jfrog","isRequired":true,"uniqueKey":"existingManifest.oneOf.16.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.16.integrations.items.[INDEX].name","typeLabel":"string"},"registry_url":{"description":"The URL of the registry.","type":"string","pattern":"^(https?:\\/\\/)?([-a-zA-Z0-9._\\-+/]{1,256}\\.[a-zA-Z0-9()]{1,6})(\\/([\\w.-]+))?(\\/?)$","isRequired":true,"uniqueKey":"existingManifest.oneOf.16.integrations.items.[INDEX].registry_url","typeLabel":"string"},"auth_data":{"description":"Jfrog Basic Auth","type":"object","required":["type","username","password"],"properties":{"type":{"description":"+value=basic-auth","type":"string","enum":["basic-auth"],"default":"basic-auth","isRequired":true,"uniqueKey":"existingManifest.oneOf.16.integrations.items.[INDEX].auth_data.type","typeLabel":"enum\u003cstring>"},"username":{"description":"The username for the basic authentication.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.16.integrations.items.[INDEX].auth_data.username","typeLabel":"string"},"password":{"description":"The password for the basic authentication.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.16.integrations.items.[INDEX].auth_data.password","typeLabel":"string"}},"title":"JfrogBasicAuth","x-fern-type-name":"JfrogBasicAuth","uniqueKey":"existingManifest.oneOf.16.integrations.items.[INDEX].auth_data","typeLabel":"JfrogBasicAuth · object"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.16.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.16.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"JFrogIntegrations","x-fern-type-name":"JFrogIntegrations","uniqueKey":"existingManifest.oneOf.16.integrations.items.[INDEX]","typeLabel":"JFrogIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.16.integrations","typeLabel":"JFrogIntegrations · object[]"},"account_name":{"description":"The name of the JFrog account.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.16.account_name","typeLabel":"string"},"auth_data":{"description":"Jfrog Basic Auth","type":"object","required":["type","username","password"],"properties":{"type":{"description":"+value=basic-auth","type":"string","enum":["basic-auth"],"default":"basic-auth","isRequired":true,"uniqueKey":"existingManifest.oneOf.16.auth_data.type","typeLabel":"enum\u003cstring>"},"username":{"description":"The username for the basic authentication.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.16.auth_data.username","typeLabel":"string"},"password":{"description":"The password for the basic authentication.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.16.auth_data.password","typeLabel":"string"}},"title":"JfrogBasicAuth","x-fern-type-name":"JfrogBasicAuth","uniqueKey":"existingManifest.oneOf.16.auth_data","typeLabel":"JfrogBasicAuth · object"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.16.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.16.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.16","typeLabel":"JfrogProviderAccount · object"},{"type":"object","title":"TTLProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/ttl","type":"string","enum":["provider-account/ttl"],"default":"provider-account/ttl","isRequired":true,"uniqueKey":"existingManifest.oneOf.17.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.17.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the provider account.","type":"array","items":{"description":"TTL","type":"object","required":["type","name","registry_url"],"properties":{"type":{"description":"+value=integration/docker-registry/ttl","type":"string","enum":["integration/docker-registry/ttl"],"default":"integration/docker-registry/ttl","isRequired":true,"uniqueKey":"existingManifest.oneOf.17.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.17.integrations.items.[INDEX].name","typeLabel":"string"},"registry_url":{"description":"The URL of the registry.","type":"string","default":"https://ttl.sh","pattern":"^(https?:\\/\\/)?(ttl\\.sh)$","isRequired":true,"uniqueKey":"existingManifest.oneOf.17.integrations.items.[INDEX].registry_url","typeLabel":"string"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.17.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.17.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"TTLIntegrations","x-fern-type-name":"TTLIntegrations","uniqueKey":"existingManifest.oneOf.17.integrations.items.[INDEX]","typeLabel":"TTLIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.17.integrations","typeLabel":"TTLIntegrations · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.17.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.17.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.17","typeLabel":"TTLProviderAccount · object"},{"type":"object","title":"TrueFoundryProviderAccount","description":"The existing manifest of the resource","required":["type","name"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/truefoundry","type":"string","enum":["provider-account/truefoundry"],"default":"provider-account/truefoundry","isRequired":true,"uniqueKey":"existingManifest.oneOf.18.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.18.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the provider account.","type":"array","items":{"description":"TrueFoundry DBSSM","type":"object","required":["type","name"],"properties":{"type":{"description":"+value=integration/secret-store/truefoundry/db","type":"string","enum":["integration/secret-store/truefoundry/db"],"default":"integration/secret-store/truefoundry/db","isRequired":true,"uniqueKey":"existingManifest.oneOf.18.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.18.integrations.items.[INDEX].name","typeLabel":"string"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.18.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.18.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"TrueFoundryIntegrations","x-fern-type-name":"TrueFoundryIntegrations","uniqueKey":"existingManifest.oneOf.18.integrations.items.[INDEX]","typeLabel":"TrueFoundryIntegrations · object"},"uniqueKey":"existingManifest.oneOf.18.integrations","typeLabel":"TrueFoundryIntegrations · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.18.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.18.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.18","typeLabel":"TrueFoundryProviderAccount · object"},{"type":"object","title":"QuayProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/quay","type":"string","enum":["provider-account/quay"],"default":"provider-account/quay","isRequired":true,"uniqueKey":"existingManifest.oneOf.19.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.19.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the provider account.","type":"array","items":{"description":"Quay Artifacts Registry","type":"object","required":["type","name","registry_url"],"properties":{"type":{"description":"+value=integration/docker-registry/quay","type":"string","enum":["integration/docker-registry/quay"],"default":"integration/docker-registry/quay","isRequired":true,"uniqueKey":"existingManifest.oneOf.19.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.19.integrations.items.[INDEX].name","typeLabel":"string"},"registry_url":{"description":"The URL of the registry.","type":"string","pattern":"^(https?://)?(quay\\.io)(/([\\w.-]+))?(/?)$","isRequired":true,"uniqueKey":"existingManifest.oneOf.19.integrations.items.[INDEX].registry_url","typeLabel":"string"},"auth_data":{"description":"Quay Basic Auth","type":"object","required":["type","username","password"],"properties":{"type":{"description":"+value=basic-auth","type":"string","enum":["basic-auth"],"default":"basic-auth","isRequired":true,"uniqueKey":"existingManifest.oneOf.19.integrations.items.[INDEX].auth_data.type","typeLabel":"enum\u003cstring>"},"username":{"description":"The username for the basic authentication.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.19.integrations.items.[INDEX].auth_data.username","typeLabel":"string"},"password":{"description":"The password for the basic authentication.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.19.integrations.items.[INDEX].auth_data.password","typeLabel":"string"}},"title":"QuayBasicAuth","x-fern-type-name":"QuayBasicAuth","uniqueKey":"existingManifest.oneOf.19.integrations.items.[INDEX].auth_data","typeLabel":"QuayBasicAuth · object"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.19.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.19.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"QuayIntegrations","x-fern-type-name":"QuayIntegrations","uniqueKey":"existingManifest.oneOf.19.integrations.items.[INDEX]","typeLabel":"QuayIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.19.integrations","typeLabel":"QuayIntegrations · object[]"},"account_name":{"description":"The name of the account on Quay.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.19.account_name","typeLabel":"string"},"auth_data":{"description":"Quay Basic Auth","type":"object","required":["type","username","password"],"properties":{"type":{"description":"+value=basic-auth","type":"string","enum":["basic-auth"],"default":"basic-auth","isRequired":true,"uniqueKey":"existingManifest.oneOf.19.auth_data.type","typeLabel":"enum\u003cstring>"},"username":{"description":"The username for the basic authentication.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.19.auth_data.username","typeLabel":"string"},"password":{"description":"The password for the basic authentication.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.19.auth_data.password","typeLabel":"string"}},"title":"QuayBasicAuth","x-fern-type-name":"QuayBasicAuth","uniqueKey":"existingManifest.oneOf.19.auth_data","typeLabel":"QuayBasicAuth · object"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.19.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.19.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.19","typeLabel":"QuayProviderAccount · object"},{"type":"object","title":"SlackProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/slack","type":"string","enum":["provider-account/slack"],"default":"provider-account/slack","isRequired":true,"uniqueKey":"existingManifest.oneOf.20.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.20.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the provider account.","type":"array","items":{"type":"any","uniqueKey":"existingManifest.oneOf.20.integrations.items.[INDEX]","typeLabel":"any"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.20.integrations","typeLabel":"any[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.20.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.20.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.20","typeLabel":"SlackProviderAccount · object"},{"type":"object","title":"WebhookProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/webhook","type":"string","enum":["provider-account/webhook"],"default":"provider-account/webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.21.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.21.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the provider account.","type":"array","items":{"description":"Webhook Integration","type":"object","required":["type","name","webhook_url"],"properties":{"type":{"description":"+value=integration/gateway-request-logger/webhook","type":"string","enum":["integration/gateway-request-logger/webhook"],"default":"integration/gateway-request-logger/webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.21.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.21.integrations.items.[INDEX].name","typeLabel":"string"},"webhook_url":{"description":"The URL of the webhook endpoint","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.21.integrations.items.[INDEX].webhook_url","typeLabel":"string"},"auth_data":{"type":"any","uniqueKey":"existingManifest.oneOf.21.integrations.items.[INDEX].auth_data","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.21.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.21.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"WebhookIntegrations","x-fern-type-name":"WebhookIntegrations","uniqueKey":"existingManifest.oneOf.21.integrations.items.[INDEX]","typeLabel":"WebhookIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.21.integrations","typeLabel":"WebhookIntegrations · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.21.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.21.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.21","typeLabel":"WebhookProviderAccount · object"},{"type":"object","title":"PagerDutyProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/pagerduty","type":"string","enum":["provider-account/pagerduty"],"default":"provider-account/pagerduty","isRequired":true,"uniqueKey":"existingManifest.oneOf.22.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the PagerDuty provider account","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.22.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the PagerDuty provider account","type":"array","items":{"description":"PagerDuty Integration","type":"object","required":["type","name","auth_data"],"properties":{"type":{"description":"+value=integration/notification-channel/pagerduty","type":"string","enum":["integration/notification-channel/pagerduty"],"default":"integration/notification-channel/pagerduty","isRequired":true,"uniqueKey":"existingManifest.oneOf.22.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.22.integrations.items.[INDEX].name","typeLabel":"string"},"auth_data":{"description":"PagerDuty Credentails","type":"object","required":["type","integration_key","integration_url"],"properties":{"type":{"description":"+value=pagerduty-integration-auth","type":"string","enum":["pagerduty-integration-auth"],"default":"pagerduty-integration-auth","isRequired":true,"uniqueKey":"existingManifest.oneOf.22.integrations.items.[INDEX].auth_data.type","typeLabel":"enum\u003cstring>"},"integration_key":{"description":"The integration key for the PagerDuty integration","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.22.integrations.items.[INDEX].auth_data.integration_key","typeLabel":"string"},"integration_url":{"description":"The integration URL for the PagerDuty integration","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.22.integrations.items.[INDEX].auth_data.integration_url","typeLabel":"string"}},"title":"PagerDutyIntegrationKeyAuth","x-fern-type-name":"PagerDutyIntegrationKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.22.integrations.items.[INDEX].auth_data","typeLabel":"PagerDutyIntegrationKeyAuth · object"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.22.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.22.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"PagerDutyIntegrations","x-fern-type-name":"PagerDutyIntegrations","uniqueKey":"existingManifest.oneOf.22.integrations.items.[INDEX]","typeLabel":"PagerDutyIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.22.integrations","typeLabel":"PagerDutyIntegrations · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.22.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.22.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.22","typeLabel":"PagerDutyProviderAccount · object"},{"type":"object","title":"MSTeamsProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/ms-teams","type":"string","enum":["provider-account/ms-teams"],"default":"provider-account/ms-teams","isRequired":true,"uniqueKey":"existingManifest.oneOf.23.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the MS Teams provider account","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.23.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the MS Teams provider account","type":"array","items":{"description":"MS Teams Webhook Integration","type":"object","required":["type","name","auth_data"],"properties":{"type":{"description":"+value=integration/notification-channel/ms-teams-webhook","type":"string","enum":["integration/notification-channel/ms-teams-webhook"],"default":"integration/notification-channel/ms-teams-webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.23.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.23.integrations.items.[INDEX].name","typeLabel":"string"},"auth_data":{"description":"MS Teams Webhook Auth","type":"object","required":["type","webhook_url"],"properties":{"type":{"description":"+value=auth/ms-teams-webhook","type":"string","enum":["ms-teams-webhook"],"default":"ms-teams-webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.23.integrations.items.[INDEX].auth_data.type","typeLabel":"enum\u003cstring>"},"webhook_url":{"description":"The Microsoft Teams Incoming Webhook URL","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.23.integrations.items.[INDEX].auth_data.webhook_url","typeLabel":"string"}},"title":"MSTeamsWebhookAuth","x-fern-type-name":"MSTeamsWebhookAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.23.integrations.items.[INDEX].auth_data","typeLabel":"MSTeamsWebhookAuth · object"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.23.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.23.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"MSTeamsIntegrations","x-fern-type-name":"MSTeamsIntegrations","uniqueKey":"existingManifest.oneOf.23.integrations.items.[INDEX]","typeLabel":"MSTeamsIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.23.integrations","typeLabel":"MSTeamsIntegrations · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.23.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.23.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.23","typeLabel":"MSTeamsProviderAccount · object"},{"type":"object","title":"HashicorpProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/hashicorp","type":"string","enum":["provider-account/hashicorp"],"default":"provider-account/hashicorp","isRequired":true,"uniqueKey":"existingManifest.oneOf.24.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the HashiCorp Vault provider account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.24.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the HashiCorp Vault provider account.","type":"array","items":{"description":"HashiCorp Vault Integration","type":"object","required":["type","name","vault_url","kv_mount_path","auth_data"],"properties":{"type":{"description":"+value=integration/secret-store/hashicorp/vault","type":"string","enum":["integration/secret-store/hashicorp/vault"],"default":"integration/secret-store/hashicorp/vault","isRequired":true,"uniqueKey":"existingManifest.oneOf.24.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the integration that will be displayed in the TrueFoundry UI.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.24.integrations.items.[INDEX].name","typeLabel":"string"},"vault_url":{"description":"The URL of the HashiCorp Vault server (e.g., https://vault.example.com:8200).","type":"string","pattern":"^https?://[^\\s]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.24.integrations.items.[INDEX].vault_url","typeLabel":"string"},"kv_mount_path":{"description":"Mount path of the KV v2 engine vault to use for secrets.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.24.integrations.items.[INDEX].kv_mount_path","typeLabel":"string"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"existingManifest.oneOf.24.integrations.items.[INDEX].auth_data","typeLabel":"any"},"root_path":{"type":"string","pattern":"^[^/\\s]+(?:/[^/\\s]+)*$","uniqueKey":"existingManifest.oneOf.24.integrations.items.[INDEX].root_path","typeLabel":"string"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.24.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.24.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"},"namespace":{"description":"Namespace for vault operations, used for multi-tenancy in HashiCorp Vault Enterprise. Optional for open source Vault.","type":"string","uniqueKey":"existingManifest.oneOf.24.integrations.items.[INDEX].namespace","typeLabel":"string"}},"title":"HashicorpIntegrations","x-fern-type-name":"HashicorpIntegrations","uniqueKey":"existingManifest.oneOf.24.integrations.items.[INDEX]","typeLabel":"HashicorpIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.24.integrations","typeLabel":"HashicorpIntegrations · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.24.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.24.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.24","typeLabel":"HashicorpProviderAccount · object"},{"type":"object","title":"AwsBedrockProviderAccount","description":"The existing manifest of the resource","required":["type","name","region","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/aws-bedrock","type":"string","enum":["provider-account/aws-bedrock"],"default":"provider-account/aws-bedrock","isRequired":true,"uniqueKey":"existingManifest.oneOf.25.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the AWS Bedrock model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.25.name","typeLabel":"string"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"existingManifest.oneOf.25.region","typeLabel":"enum\u003cstring>"},"integrations":{"description":"List of integrations that are associated with the AWS Bedrock model account","type":"array","items":{"description":"Bedrock Model","type":"object","required":["name","model_id","type","model_types"],"properties":{"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.25.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The AWS Bedrock model identifier or inference profile. Can be a foundation model ID (e.g., anthropic.claude-3-5-sonnet-20240620-v1:0, amazon.titan-text-express-v1), an inference profile ID (e.g., us.anthropic.claude-3-5-sonnet-20240620-v1:0), or an inference profile ARN (e.g., arn:aws:bedrock:us-east-1:123456789012:inference-profile/my-profile).","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.25.integrations.items.[INDEX].model_id","typeLabel":"string"},"type":{"description":"+value=integration/model/bedrock","type":"string","enum":["integration/model/bedrock"],"default":"integration/model/bedrock","isRequired":true,"uniqueKey":"existingManifest.oneOf.25.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"model_types":{"description":"Specify the type of the Bedrock model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.25.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.25.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","uniqueKey":"existingManifest.oneOf.25.integrations.items.[INDEX].region","typeLabel":"enum\u003cstring>"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.25.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.25.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.25.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"BedrockModel","x-fern-type-name":"BedrockModel","uniqueKey":"existingManifest.oneOf.25.integrations.items.[INDEX]","typeLabel":"BedrockModel · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.25.integrations","typeLabel":"BedrockModel · object[]"},"base_url":{"description":"Optional custom base URL (e.g. a VPC/PrivateLink endpoint) for AWS Bedrock. When set, requests are sent here instead of the default bedrock-runtime.{region}.amazonaws.com host.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.25.base_url","typeLabel":"string"},"auth_data":{"type":"any","uniqueKey":"existingManifest.oneOf.25.auth_data","typeLabel":"any"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.25.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.25.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.25.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.25.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.25.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.25.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.25.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.25","typeLabel":"AwsBedrockProviderAccount · object"},{"type":"object","title":"GoogleVertexProviderAccount","description":"The existing manifest of the resource","required":["type","name","project_id","region","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/google-vertex","type":"string","enum":["provider-account/google-vertex"],"default":"provider-account/google-vertex","isRequired":true,"uniqueKey":"existingManifest.oneOf.26.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Google Vertex model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.26.name","typeLabel":"string"},"project_id":{"description":"The Google Cloud project ID where Vertex AI is enabled","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.26.project_id","typeLabel":"string"},"region":{"type":"string","enum":["global","africa-south1","asia-east1","asia-east2","asia-northeast1","asia-northeast2","asia-northeast3","asia-south1","asia-south2","asia-southeast1","asia-southeast2","asia-southeast3","australia-southeast1","australia-southeast2","europe-central2","europe-north1","europe-north2","europe-southwest1","europe-west1","europe-west2","europe-west3","europe-west4","europe-west6","europe-west8","europe-west9","europe-west10","europe-west12","me-central1","me-central2","me-west1","northamerica-northeast1","northamerica-northeast2","northamerica-south1","southamerica-east1","southamerica-west1","us-central1","us-east1","us-east4","us-east5","us-south1","us-west1","us-west2","us-west3","us-west4","eu","us"],"title":"VertexRegion","x-fern-type-name":"VertexRegion","isRequired":true,"uniqueKey":"existingManifest.oneOf.26.region","typeLabel":"enum\u003cstring>"},"integrations":{"description":"List of integrations that are associated with the Google Vertex model account","type":"array","items":{"description":"Vertex Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/vertex","type":"string","enum":["integration/model/vertex"],"default":"integration/model/vertex","isRequired":true,"uniqueKey":"existingManifest.oneOf.26.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.26.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Google Vertex AI model identifier (e.g., gemini-2.5-pro, anthropic/claude-sonnet-4-5@20250929). This is the model version name from Vertex AI's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.26.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Vertex AI model (e.g., chat, text, etc.)","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.26.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.26.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"region":{"type":"string","enum":["global","africa-south1","asia-east1","asia-east2","asia-northeast1","asia-northeast2","asia-northeast3","asia-south1","asia-south2","asia-southeast1","asia-southeast2","asia-southeast3","australia-southeast1","australia-southeast2","europe-central2","europe-north1","europe-north2","europe-southwest1","europe-west1","europe-west2","europe-west3","europe-west4","europe-west6","europe-west8","europe-west9","europe-west10","europe-west12","me-central1","me-central2","me-west1","northamerica-northeast1","northamerica-northeast2","northamerica-south1","southamerica-east1","southamerica-west1","us-central1","us-east1","us-east4","us-east5","us-south1","us-west1","us-west2","us-west3","us-west4","eu","us"],"title":"VertexRegion","x-fern-type-name":"VertexRegion","uniqueKey":"existingManifest.oneOf.26.integrations.items.[INDEX].region","typeLabel":"enum\u003cstring>"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.26.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.26.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.26.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"VertexModel","x-fern-type-name":"VertexModel","uniqueKey":"existingManifest.oneOf.26.integrations.items.[INDEX]","typeLabel":"VertexModel · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.26.integrations","typeLabel":"VertexModel · object[]"},"auth_data":{"type":"any","uniqueKey":"existingManifest.oneOf.26.auth_data","typeLabel":"any"},"base_url":{"description":"Optional custom base URL for the Vertex AI inference endpoint (e.g. a Private Service Connect / PSC endpoint for private connectivity). When set, chat/generate requests are routed here instead of the region-derived public host (\u003cregion>-aiplatform.googleapis.com). Leave empty to use the public Vertex AI API.","type":"string","pattern":"^https?:\\/\\/\\S+$","uniqueKey":"existingManifest.oneOf.26.base_url","typeLabel":"string"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.26.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.26.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.26.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.26.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.26.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.26.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.26.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.26","typeLabel":"GoogleVertexProviderAccount · object"},{"type":"object","title":"GoogleGeminiProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/google-gemini","type":"string","enum":["provider-account/google-gemini"],"default":"provider-account/google-gemini","isRequired":true,"uniqueKey":"existingManifest.oneOf.27.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Google Gemini model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.27.name","typeLabel":"string"},"auth_data":{"description":"Google Cloud API Key Auth","type":"object","required":["type","apiKey"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.27.auth_data.type","typeLabel":"enum\u003cstring>"},"apiKey":{"description":"The API key for Google Cloud authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.27.auth_data.apiKey","typeLabel":"string"}},"title":"GcpApiKeyAuth","x-fern-type-name":"GcpApiKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.27.auth_data","typeLabel":"GcpApiKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Google Gemini model account","type":"array","items":{"description":"Gemini Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/gemini","type":"string","enum":["integration/model/gemini"],"default":"integration/model/gemini","isRequired":true,"uniqueKey":"existingManifest.oneOf.27.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.27.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Google Gemini model identifier (e.g., gemini-2.0-flash, gemini-2.0-flash-lite-preview-02-05, gemini-2.0-flash-lite-preview-02-05). This is the standard model name from Google's Gemini API documentation.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.27.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Gemini model (e.g., chat, text, etc.)","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.27.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.27.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.27.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.27.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.27.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"GeminiModel","x-fern-type-name":"GeminiModel","uniqueKey":"existingManifest.oneOf.27.integrations.items.[INDEX]","typeLabel":"GeminiModel · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.27.integrations","typeLabel":"GeminiModel · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.27.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.27.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.27.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.27.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.27.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.27.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.27.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.27","typeLabel":"GoogleGeminiProviderAccount · object"},{"type":"object","title":"AzureOpenAIProviderAccount","description":"The existing manifest of the resource","required":["type","name","azure_endpoint","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/azure-openai","type":"string","enum":["provider-account/azure-openai"],"default":"provider-account/azure-openai","isRequired":true,"uniqueKey":"existingManifest.oneOf.28.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Azure OpenAI model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.28.name","typeLabel":"string"},"azure_endpoint":{"description":"The Azure OpenAI Service endpoint URL. Should look like https://{resource-name}.openai.azure.com (a trailing /openai suffix is optional and stripped automatically)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.28.azure_endpoint","typeLabel":"string"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"existingManifest.oneOf.28.auth_data","typeLabel":"any"},"integrations":{"description":"List of integrations that are associated with the Azure OpenAI model account","type":"array","items":{"description":"Azure OpenAI Model","type":"object","required":["type","name","model_id","api_version","model_types"],"properties":{"type":{"description":"+value=integration/model/azure-openai","type":"string","enum":["integration/model/azure-openai"],"default":"integration/model/azure-openai","isRequired":true,"uniqueKey":"existingManifest.oneOf.28.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.28.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The model deployment name created in your Azure OpenAI resource (e.g., gpt-4-deployment, gpt-35-turbo-deployment). This is NOT the base model name but the deployment name you configured in Azure.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.28.integrations.items.[INDEX].model_id","typeLabel":"string"},"api_version":{"description":"The Azure OpenAI API version to use","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.28.integrations.items.[INDEX].api_version","typeLabel":"string"},"model_types":{"description":"Specify the type of the Azure OpenAI model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.28.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.28.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"foundation_model":{"description":"The foundation model identifier (e.g., gpt-4o-2024-11-20)","type":"string","uniqueKey":"existingManifest.oneOf.28.integrations.items.[INDEX].foundation_model","typeLabel":"string"},"deployment_type":{"description":"Global: worldwide processing; Data zone (US): US data zone processing; Data zone (EU): EU data zone processing; Standard: single-region processing","type":"string","enum":["standard","datazone_us","datazone_eu","global"],"default":"standard","uniqueKey":"existingManifest.oneOf.28.integrations.items.[INDEX].deployment_type","typeLabel":"enum\u003cstring>"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.28.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.28.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.28.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"AzureOpenAIModel","x-fern-type-name":"AzureOpenAIModel","uniqueKey":"existingManifest.oneOf.28.integrations.items.[INDEX]","typeLabel":"AzureOpenAIModel · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.28.integrations","typeLabel":"AzureOpenAIModel · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.28.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.28.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.28.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.28.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.28.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.28.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.28.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.28","typeLabel":"AzureOpenAIProviderAccount · object"},{"type":"object","title":"AzureFoundryProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/azure-foundry","type":"string","enum":["provider-account/azure-foundry"],"default":"provider-account/azure-foundry","isRequired":true,"uniqueKey":"existingManifest.oneOf.29.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Azure AI Foundry model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.29.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the Azure Foundry model account","type":"array","items":{"description":"Azure AI Foundry Model","type":"object","required":["type","name","auth_data","model_types","model_id","azure_endpoint"],"properties":{"type":{"description":"+value=integration/model/azure-foundry","type":"string","enum":["integration/model/azure-foundry"],"default":"integration/model/azure-foundry","isRequired":true,"uniqueKey":"existingManifest.oneOf.29.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.29.integrations.items.[INDEX].name","typeLabel":"string"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"existingManifest.oneOf.29.integrations.items.[INDEX].auth_data","typeLabel":"any"},"model_types":{"description":"Types of models supported by this Azure AI Foundry deployment","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.29.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.29.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"model_id":{"description":"The model deployment name created in your Azure AI Foundry project. This is the deployment name you configured in Azure AI Foundry, not the base model name.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.29.integrations.items.[INDEX].model_id","typeLabel":"string"},"azure_endpoint":{"description":"The Azure AI Foundry endpoint URL. Should look like https://{deployment}.{region}.models.ai.azure.com","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.29.integrations.items.[INDEX].azure_endpoint","typeLabel":"string"},"api_version":{"description":"The API version for the Azure Foundry model","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.29.integrations.items.[INDEX].api_version","typeLabel":"string"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.29.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.29.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.29.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"AzureFoundryModel","x-fern-type-name":"AzureFoundryModel","uniqueKey":"existingManifest.oneOf.29.integrations.items.[INDEX]","typeLabel":"AzureFoundryModel · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.29.integrations","typeLabel":"AzureFoundryModel · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.29.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.29.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.29.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.29.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.29.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.29.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.29.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.29","typeLabel":"AzureFoundryProviderAccount · object"},{"type":"object","title":"MicrosoftFoundryProviderAccount","description":"The existing manifest of the resource","required":["type","name","openai_endpoint","project_endpoint","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/microsoft-foundry","type":"string","enum":["provider-account/microsoft-foundry"],"default":"provider-account/microsoft-foundry","isRequired":true,"uniqueKey":"existingManifest.oneOf.30.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Microsoft Foundry model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.30.name","typeLabel":"string"},"openai_endpoint":{"description":"The classic Azure OpenAI endpoint, e.g. https://{resource-name}.openai.azure.com (the /openai or /openai/v1 suffix is optional and stripped automatically).","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.30.openai_endpoint","typeLabel":"string"},"project_endpoint":{"description":"The Microsoft Foundry project endpoint, e.g. https://{resource-name}.services.ai.azure.com/api/projects/{project-name}.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.30.project_endpoint","typeLabel":"string"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"existingManifest.oneOf.30.auth_data","typeLabel":"any"},"integrations":{"description":"List of integrations that are associated with this model account. Populate by fetching deployed models from Azure, then reviewing and selecting which ones to add.","type":"array","items":{"description":"Microsoft Foundry Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/microsoft-foundry","type":"string","enum":["integration/model/microsoft-foundry"],"default":"integration/model/microsoft-foundry","isRequired":true,"uniqueKey":"existingManifest.oneOf.30.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI. Once discovered, this becomes part of the stable client-facing model identifier and should not be changed lightly.","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.30.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The model deployment name created in your Azure resource (e.g., gpt-4o-deployment). This is NOT the base model name but the deployment name you configured in Azure.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.30.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Azure model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.30.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.30.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"api_version":{"description":"Only needed if this deployment does not support Azure's OpenAI-compatible v1 API. When set, requests to this deployment use the legacy deployment-scoped API with this api-version instead of /openai/v1/.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.30.integrations.items.[INDEX].api_version","typeLabel":"string"},"foundation_model":{"description":"The foundation model identifier (e.g., gpt-4o-2024-11-20). Drives pricing lookups. Editable, since Azure's reported model string may not always match an entry in TrueFoundry's model catalogue.","type":"string","uniqueKey":"existingManifest.oneOf.30.integrations.items.[INDEX].foundation_model","typeLabel":"string"},"deployment_type":{"description":"Global: worldwide processing; Data zone (US): US data zone processing; Data zone (EU): EU data zone processing; Standard: single-region processing","type":"string","enum":["standard","datazone_us","datazone_eu","global"],"default":"standard","uniqueKey":"existingManifest.oneOf.30.integrations.items.[INDEX].deployment_type","typeLabel":"enum\u003cstring>"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.30.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.30.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.30.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"MicrosoftFoundryModel","x-fern-type-name":"MicrosoftFoundryModel","uniqueKey":"existingManifest.oneOf.30.integrations.items.[INDEX]","typeLabel":"MicrosoftFoundryModel · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.30.integrations","typeLabel":"MicrosoftFoundryModel · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.30.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.30.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.30.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.30.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.30.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.30.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.30.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.30","typeLabel":"MicrosoftFoundryProviderAccount · object"},{"type":"object","title":"CohereProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/cohere","type":"string","enum":["provider-account/cohere"],"default":"provider-account/cohere","isRequired":true,"uniqueKey":"existingManifest.oneOf.31.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Cohere model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.31.name","typeLabel":"string"},"auth_data":{"description":"Cohere API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.31.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Cohere authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.31.auth_data.api_key","typeLabel":"string"}},"title":"CohereKeyAuth","x-fern-type-name":"CohereKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.31.auth_data","typeLabel":"CohereKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Cohere model account","type":"array","items":{"description":"Cohere Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/cohere","type":"string","enum":["integration/model/cohere"],"default":"integration/model/cohere","isRequired":true,"uniqueKey":"existingManifest.oneOf.31.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.31.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Cohere model identifier (e.g., command-a-03-2025, command-r-03-2024, command-r-03-2024). This is the standard model id from Cohere's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.31.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Cohere model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.31.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.31.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.31.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.31.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.31.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"CohereIntegrations","x-fern-type-name":"CohereIntegrations","uniqueKey":"existingManifest.oneOf.31.integrations.items.[INDEX]","typeLabel":"CohereIntegrations · object"},"uniqueKey":"existingManifest.oneOf.31.integrations","typeLabel":"CohereIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.31.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.31.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.31.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.31.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.31.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.31.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.31.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.31","typeLabel":"CohereProviderAccount · object"},{"type":"object","title":"AI21ProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/ai21","type":"string","enum":["provider-account/ai21"],"default":"provider-account/ai21","isRequired":true,"uniqueKey":"existingManifest.oneOf.32.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the AI21 model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.32.name","typeLabel":"string"},"auth_data":{"description":"Authentication method using AI21 API key","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.32.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for AI21 authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.32.auth_data.api_key","typeLabel":"string"}},"title":"AI21KeyAuth","x-fern-type-name":"AI21KeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.32.auth_data","typeLabel":"AI21KeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the AI21 model account","type":"array","items":{"description":"AI21 Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/ai21","type":"string","enum":["integration/model/ai21"],"default":"integration/model/ai21","isRequired":true,"uniqueKey":"existingManifest.oneOf.32.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.32.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The AI21 model identifier (e.g., jamba-large, jamba-mini). This is the model name from AI21's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.32.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the AI21 model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.32.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.32.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.32.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.32.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.32.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"AI21Integrations","x-fern-type-name":"AI21Integrations","uniqueKey":"existingManifest.oneOf.32.integrations.items.[INDEX]","typeLabel":"AI21Integrations · object"},"uniqueKey":"existingManifest.oneOf.32.integrations","typeLabel":"AI21Integrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.32.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.32.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.32.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.32.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.32.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.32.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.32.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.32","typeLabel":"AI21ProviderAccount · object"},{"type":"object","title":"AnthropicProviderAccount","description":"The existing manifest of the resource","required":["type","name"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/anthropic","type":"string","enum":["provider-account/anthropic"],"default":"provider-account/anthropic","isRequired":true,"uniqueKey":"existingManifest.oneOf.33.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Anthropic model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.33.name","typeLabel":"string"},"auth_data":{"description":"Authentication method using Anthropic API key","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.33.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Anthropic authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.33.auth_data.api_key","typeLabel":"string"}},"title":"AnthropicKeyAuth","x-fern-type-name":"AnthropicKeyAuth","uniqueKey":"existingManifest.oneOf.33.auth_data","typeLabel":"AnthropicKeyAuth · object"},"base_url":{"description":"Optional custom base URL for the Anthropic API. Must include the version path, e.g. https://my-proxy.example.com/v1. When set, requests are sent here instead of the default https://api.anthropic.com/v1.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.33.base_url","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the Anthropic model account","type":"array","items":{"description":"Anthropic Model","type":"object","required":["name","model_id","type","model_types"],"properties":{"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.33.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Anthropic model identifier (e.g., claude-3-5-sonnet-20241022, claude-3-opus-20240229, claude-3-haiku-20240307). This is the standard model name from Anthropic's API documentation.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.33.integrations.items.[INDEX].model_id","typeLabel":"string"},"type":{"description":"+value=integration/model/anthropic","type":"string","enum":["integration/model/anthropic"],"default":"integration/model/anthropic","isRequired":true,"uniqueKey":"existingManifest.oneOf.33.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"model_types":{"description":"Specify the type of the Anthropic model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.33.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.33.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.33.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.33.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.33.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"AnthropicIntegrations","x-fern-type-name":"AnthropicIntegrations","uniqueKey":"existingManifest.oneOf.33.integrations.items.[INDEX]","typeLabel":"AnthropicIntegrations · object"},"uniqueKey":"existingManifest.oneOf.33.integrations","typeLabel":"AnthropicIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.33.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.33.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.33.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.33.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.33.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.33.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.33.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.33","typeLabel":"AnthropicProviderAccount · object"},{"type":"object","title":"DeepinfraProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/deepinfra","type":"string","enum":["provider-account/deepinfra"],"default":"provider-account/deepinfra","isRequired":true,"uniqueKey":"existingManifest.oneOf.34.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the DeepInfra model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.34.name","typeLabel":"string"},"auth_data":{"description":"DeepInfra API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.34.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for DeepInfra authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.34.auth_data.api_key","typeLabel":"string"}},"title":"DeepinfraKeyAuth","x-fern-type-name":"DeepinfraKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.34.auth_data","typeLabel":"DeepinfraKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the DeepInfra model account","type":"array","items":{"description":"DeepInfra Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/deepinfra","type":"string","enum":["integration/model/deepinfra"],"default":"integration/model/deepinfra","isRequired":true,"uniqueKey":"existingManifest.oneOf.34.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.34.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The DeepInfra model identifier (e.g., meta-llama/Llama-3.3-70B-Instruct-Turbo, mistralai/Mistral-Small-24B-Instruct-2501). This is the full model path from DeepInfra's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.34.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the DeepInfra model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.34.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.34.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.34.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.34.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.34.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"DeepinfraIntegrations","x-fern-type-name":"DeepinfraIntegrations","uniqueKey":"existingManifest.oneOf.34.integrations.items.[INDEX]","typeLabel":"DeepinfraIntegrations · object"},"uniqueKey":"existingManifest.oneOf.34.integrations","typeLabel":"DeepinfraIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.34.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.34.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.34.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.34.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.34.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.34.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.34.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.34","typeLabel":"DeepinfraProviderAccount · object"},{"type":"object","title":"GroqProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/groq","type":"string","enum":["provider-account/groq"],"default":"provider-account/groq","isRequired":true,"uniqueKey":"existingManifest.oneOf.35.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Groq model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.35.name","typeLabel":"string"},"auth_data":{"description":"Groq API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.35.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Groq authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.35.auth_data.api_key","typeLabel":"string"}},"title":"GroqKeyAuth","x-fern-type-name":"GroqKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.35.auth_data","typeLabel":"GroqKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Groq model account","type":"array","items":{"description":"Groq Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/groq","type":"string","enum":["integration/model/groq"],"default":"integration/model/groq","isRequired":true,"uniqueKey":"existingManifest.oneOf.35.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.35.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Groq model identifier (e.g., llama-3.1-8b-instant, openai/gpt-oss-20b). This is the standard model id from Groq's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.35.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Groq model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.35.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.35.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.35.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.35.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.35.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"GroqIntegrations","x-fern-type-name":"GroqIntegrations","uniqueKey":"existingManifest.oneOf.35.integrations.items.[INDEX]","typeLabel":"GroqIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.35.integrations","typeLabel":"GroqIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.35.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.35.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.35.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.35.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.35.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.35.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.35.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.35","typeLabel":"GroqProviderAccount · object"},{"type":"object","title":"MistralAIProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/mistral-ai","type":"string","enum":["provider-account/mistral-ai"],"default":"provider-account/mistral-ai","isRequired":true,"uniqueKey":"existingManifest.oneOf.36.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Mistral AI model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.36.name","typeLabel":"string"},"auth_data":{"description":"Mistral AI API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.36.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Mistral AI authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.36.auth_data.api_key","typeLabel":"string"}},"title":"MistralAIKeyAuth","x-fern-type-name":"MistralAIKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.36.auth_data","typeLabel":"MistralAIKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Mistral AI model account","type":"array","items":{"description":"Mistral AI Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/mistral-ai","type":"string","enum":["integration/model/mistral-ai"],"default":"integration/model/mistral-ai","isRequired":true,"uniqueKey":"existingManifest.oneOf.36.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.36.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Mistral AI model identifier (e.g., mistral-medium-2312, ministral-8b-2410). This is the API Endpoint name from Mistral AI's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.36.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Mistral AI model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.36.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.36.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.36.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.36.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.36.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"MistralAIIntegrations","x-fern-type-name":"MistralAIIntegrations","uniqueKey":"existingManifest.oneOf.36.integrations.items.[INDEX]","typeLabel":"MistralAIIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.36.integrations","typeLabel":"MistralAIIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.36.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.36.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.36.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.36.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.36.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.36.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.36.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.36","typeLabel":"MistralAIProviderAccount · object"},{"type":"object","title":"PerplexityAIProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/perplexity-ai","type":"string","enum":["provider-account/perplexity-ai"],"default":"provider-account/perplexity-ai","isRequired":true,"uniqueKey":"existingManifest.oneOf.37.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Perplexity AI model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.37.name","typeLabel":"string"},"auth_data":{"description":"Perplexity AI API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.37.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Perplexity AI authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.37.auth_data.api_key","typeLabel":"string"}},"title":"PerplexityAIKeyAuth","x-fern-type-name":"PerplexityAIKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.37.auth_data","typeLabel":"PerplexityAIKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Perplexity AI model account","type":"array","items":{"description":"Perplexity AI Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/perplexity-ai","type":"string","enum":["integration/model/perplexity-ai"],"default":"integration/model/perplexity-ai","isRequired":true,"uniqueKey":"existingManifest.oneOf.37.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.37.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Perplexity AI model identifier (e.g., sonar-reasoning, sonar). This is the model name from Perplexity AI's API documentation.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.37.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Perplexity AI model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.37.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.37.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.37.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.37.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.37.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"PerplexityIntegrations","x-fern-type-name":"PerplexityIntegrations","uniqueKey":"existingManifest.oneOf.37.integrations.items.[INDEX]","typeLabel":"PerplexityIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.37.integrations","typeLabel":"PerplexityIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.37.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.37.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.37.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.37.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.37.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.37.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.37.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.37","typeLabel":"PerplexityAIProviderAccount · object"},{"type":"object","title":"TogetherAIProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/together-ai","type":"string","enum":["provider-account/together-ai"],"default":"provider-account/together-ai","isRequired":true,"uniqueKey":"existingManifest.oneOf.38.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Together AI model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.38.name","typeLabel":"string"},"auth_data":{"description":"Together AI API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.38.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Together AI authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.38.auth_data.api_key","typeLabel":"string"}},"title":"TogetherAIKeyAuth","x-fern-type-name":"TogetherAIKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.38.auth_data","typeLabel":"TogetherAIKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Together AI model account","type":"array","items":{"description":"Together AI Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/together-ai","type":"string","enum":["integration/model/together-ai"],"default":"integration/model/together-ai","isRequired":true,"uniqueKey":"existingManifest.oneOf.38.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.38.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Together AI model identifier (e.g., deepseek-ai/DeepSeek-R1, moonshotai/Kimi-K2-Instruct-0905). This is the model name from Together AI's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.38.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Together AI model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.38.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.38.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.38.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.38.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.38.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"TogetherAIIntegrations","x-fern-type-name":"TogetherAIIntegrations","uniqueKey":"existingManifest.oneOf.38.integrations.items.[INDEX]","typeLabel":"TogetherAIIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.38.integrations","typeLabel":"TogetherAIIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.38.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.38.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.38.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.38.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.38.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.38.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.38.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.38","typeLabel":"TogetherAIProviderAccount · object"},{"type":"object","title":"NomicProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/nomic","type":"string","enum":["provider-account/nomic"],"default":"provider-account/nomic","isRequired":true,"uniqueKey":"existingManifest.oneOf.39.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Nomic model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.39.name","typeLabel":"string"},"auth_data":{"description":"Nomic API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.39.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Nomic authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.39.auth_data.api_key","typeLabel":"string"}},"title":"NomicKeyAuth","x-fern-type-name":"NomicKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.39.auth_data","typeLabel":"NomicKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Nomic model account","type":"array","items":{"description":"Nomic Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/nomic","type":"string","enum":["integration/model/nomic"],"default":"integration/model/nomic","isRequired":true,"uniqueKey":"existingManifest.oneOf.39.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.39.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The name of the Nomic model to use","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.39.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Nomic model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.39.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.39.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.39.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.39.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.39.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"NomicIntegrations","x-fern-type-name":"NomicIntegrations","uniqueKey":"existingManifest.oneOf.39.integrations.items.[INDEX]","typeLabel":"NomicIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.39.integrations","typeLabel":"NomicIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.39.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.39.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.39.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.39.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.39.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.39.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.39.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.39","typeLabel":"NomicProviderAccount · object"},{"type":"object","title":"PalmProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/palm","type":"string","enum":["provider-account/palm"],"default":"provider-account/palm","isRequired":true,"uniqueKey":"existingManifest.oneOf.40.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the PaLM model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.40.name","typeLabel":"string"},"auth_data":{"description":"PaLM API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.40.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"Your PaLM API key for authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.40.auth_data.api_key","typeLabel":"string"}},"title":"PalmKeyAuth","x-fern-type-name":"PalmKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.40.auth_data","typeLabel":"PalmKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the PaLM model account","type":"array","items":{"description":"PaLM Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/palm","type":"string","enum":["integration/model/palm"],"default":"integration/model/palm","isRequired":true,"uniqueKey":"existingManifest.oneOf.40.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name to identify this PaLM model in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.40.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The name of the PaLM model to use","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.40.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the PaLM model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.40.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.40.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.40.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.40.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.40.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"PalmIntegrations","x-fern-type-name":"PalmIntegrations","uniqueKey":"existingManifest.oneOf.40.integrations.items.[INDEX]","typeLabel":"PalmIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.40.integrations","typeLabel":"PalmIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.40.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.40.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.40.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.40.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.40.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.40.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.40.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.40","typeLabel":"PalmProviderAccount · object"},{"type":"object","title":"OllamaProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/ollama","type":"string","enum":["provider-account/ollama"],"default":"provider-account/ollama","isRequired":true,"uniqueKey":"existingManifest.oneOf.41.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Ollama model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.41.name","typeLabel":"string"},"auth_data":{"description":"Ollama API Key Auth","type":"object","required":["custom_host"],"properties":{"custom_host":{"description":"The custom host URL for Ollama API","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.41.auth_data.custom_host","typeLabel":"string"}},"title":"OllamaKeyAuth","x-fern-type-name":"OllamaKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.41.auth_data","typeLabel":"OllamaKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Ollama model account","type":"array","items":{"description":"Ollama Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/ollama","type":"string","enum":["integration/model/ollama"],"default":"integration/model/ollama","isRequired":true,"uniqueKey":"existingManifest.oneOf.41.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name to identify this Ollama model in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.41.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The name of the Ollama model to use","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.41.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Ollama model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.41.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.41.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.41.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.41.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.41.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"OllamaIntegrations","x-fern-type-name":"OllamaIntegrations","uniqueKey":"existingManifest.oneOf.41.integrations.items.[INDEX]","typeLabel":"OllamaIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.41.integrations","typeLabel":"OllamaIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.41.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.41.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.41.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.41.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.41.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.41.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.41.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.41","typeLabel":"OllamaProviderAccount · object"},{"type":"object","title":"OpenaiProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/openai","type":"string","enum":["provider-account/openai"],"default":"provider-account/openai","isRequired":true,"uniqueKey":"existingManifest.oneOf.42.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the OpenAI model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.42.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the OpenAI model account","type":"array","items":{"description":"OpenAI Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/openai","type":"string","enum":["integration/model/openai"],"default":"integration/model/openai","isRequired":true,"uniqueKey":"existingManifest.oneOf.42.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.42.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The OpenAI model identifier (e.g., gpt-4o, gpt-4-turbo, gpt-3.5-turbo, o1-mini). This is the standard model name from OpenAI's API documentation.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.42.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the OpenAI model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.42.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.42.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.42.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.42.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.42.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"OpenAIIntegrations","x-fern-type-name":"OpenAIIntegrations","uniqueKey":"existingManifest.oneOf.42.integrations.items.[INDEX]","typeLabel":"OpenAIIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.42.integrations","typeLabel":"OpenAIIntegrations · object[]"},"auth_data":{"description":"OpenAI API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.42.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"Your OpenAI API key for authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.42.auth_data.api_key","typeLabel":"string"}},"title":"OpenaiApiKeyAuth","x-fern-type-name":"OpenaiApiKeyAuth","uniqueKey":"existingManifest.oneOf.42.auth_data","typeLabel":"OpenaiApiKeyAuth · object"},"base_url":{"description":"Optional custom base URL for OpenAI API","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.42.base_url","typeLabel":"string"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.42.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.42.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.42.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.42.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.42.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.42.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.42.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.42","typeLabel":"OpenaiProviderAccount · object"},{"type":"object","title":"DatabricksProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data","base_url","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/databricks","type":"string","enum":["provider-account/databricks"],"default":"provider-account/databricks","isRequired":true,"uniqueKey":"existingManifest.oneOf.43.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Databricks model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.43.name","typeLabel":"string"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"existingManifest.oneOf.43.auth_data","typeLabel":"any"},"base_url":{"description":"The base URL of your Databricks workspace","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.43.base_url","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the Databricks model account","type":"array","items":{"description":"Databricks Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/databricks","type":"string","enum":["integration/model/databricks"],"default":"integration/model/databricks","isRequired":true,"uniqueKey":"existingManifest.oneOf.43.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.43.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The serving endpoint name configured in your Databricks workspace. This is the endpoint you created in Databricks Model Serving, not the underlying model name.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.43.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Databricks model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.43.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.43.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.43.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.43.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.43.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"DatabricksIntegrations","x-fern-type-name":"DatabricksIntegrations","uniqueKey":"existingManifest.oneOf.43.integrations.items.[INDEX]","typeLabel":"DatabricksIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.43.integrations","typeLabel":"DatabricksIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.43.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.43.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.43.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.43.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.43.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.43.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.43.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.43","typeLabel":"DatabricksProviderAccount · object"},{"type":"object","title":"ClouderaProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/cloudera","type":"string","enum":["provider-account/cloudera"],"default":"provider-account/cloudera","isRequired":true,"uniqueKey":"existingManifest.oneOf.44.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Cloudera model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.44.name","typeLabel":"string"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"existingManifest.oneOf.44.auth_data","typeLabel":"any"},"integrations":{"description":"List of integrations that are associated with the Cloudera model account","type":"array","items":{"description":"Cloudera Model","type":"object","required":["type","name","model_id","base_url","model_types"],"properties":{"type":{"description":"+value=integration/model/cloudera","type":"string","enum":["integration/model/cloudera"],"default":"integration/model/cloudera","isRequired":true,"uniqueKey":"existingManifest.oneOf.44.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.44.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The unique identifier of the Model in Cloudera Model Registry. This is the model ID assigned when you registered or deployed your model in the CDP Model Registry","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.44.integrations.items.[INDEX].model_id","typeLabel":"string"},"base_url":{"description":"The model endpoint URL up to the API version v1. To get the base_url, copy the model endpoint URL and delete the last two path components","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.44.integrations.items.[INDEX].base_url","typeLabel":"string"},"model_types":{"description":"Specify the type of the Cloudera model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.44.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.44.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.44.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.44.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.44.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"ClouderaIntegrations","x-fern-type-name":"ClouderaIntegrations","uniqueKey":"existingManifest.oneOf.44.integrations.items.[INDEX]","typeLabel":"ClouderaIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.44.integrations","typeLabel":"ClouderaIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.44.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.44.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.44.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.44.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.44.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.44.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.44.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.44","typeLabel":"ClouderaProviderAccount · object"},{"type":"object","title":"SelfHostedModelProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/self-hosted-model","type":"string","enum":["provider-account/self-hosted-model"],"default":"provider-account/self-hosted-model","isRequired":true,"uniqueKey":"existingManifest.oneOf.45.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the model account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.45.name","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the model account.","type":"array","items":{"description":"Self Hosted Model Integration","type":"object","required":["type","name","hosted_model_name","url","model_server","model_types"],"properties":{"type":{"description":"+value=integration/model/self-hosted-model","type":"string","enum":["integration/model/self-hosted-model"],"default":"integration/model/self-hosted-model","isRequired":true,"uniqueKey":"existingManifest.oneOf.45.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this self-hosted model in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.45.integrations.items.[INDEX].name","typeLabel":"string"},"hosted_model_name":{"description":"The name of the hosted model","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.45.integrations.items.[INDEX].hosted_model_name","typeLabel":"string"},"url":{"description":"The URL where the model is hosted","type":"string","pattern":"^https?:\\/\\/[^\\s\\/]+(\\/[^\\s\\/]*)*[^\\/\\s]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.45.integrations.items.[INDEX].url","typeLabel":"string"},"model_server":{"description":"The type of model server being used","type":"string","enum":["openai-compatible","cohere-rerank-v2","nemo-retriever","infinity","tei","vllm-openai","comfyui"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.45.integrations.items.[INDEX].model_server","typeLabel":"enum\u003cstring>"},"model_types":{"description":"Specify the type of the model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.45.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.45.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"tfy_application_id":{"description":"+uiType=Hidden","type":"string","uniqueKey":"existingManifest.oneOf.45.integrations.items.[INDEX].tfy_application_id","typeLabel":"string"},"tls_settings":{"description":"Configure TLS settings for secure connections with custom CA certificates.","type":"object","required":["reject_unauthorized"],"properties":{"reject_unauthorized":{"description":"When set to true, it will reject any connection which is not authorized with the list of supplied CAs.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.45.integrations.items.[INDEX].tls_settings.reject_unauthorized","typeLabel":"boolean"},"ca_cert":{"description":"Add custom CA certificates to use for TLS verification.","type":"string","uniqueKey":"existingManifest.oneOf.45.integrations.items.[INDEX].tls_settings.ca_cert","typeLabel":"string"}},"title":"CustomTLSSettings","x-fern-type-name":"CustomTLSSettings","uniqueKey":"existingManifest.oneOf.45.integrations.items.[INDEX].tls_settings","typeLabel":"CustomTLSSettings · object"},"auth_data":{"type":"any","uniqueKey":"existingManifest.oneOf.45.integrations.items.[INDEX].auth_data","typeLabel":"any"},"headers":{"description":"Self Hosted Model headers for the integration. Forwarded to the provider as is. For example: `{\"Authorization\": \"APIKey \u003ctoken>\"}`","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.45.integrations.items.[INDEX].headers.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.45.integrations.items.[INDEX].headers","typeLabel":"object"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.45.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.45.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.45.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"SelfHostedModelIntegrations","x-fern-type-name":"SelfHostedModelIntegrations","uniqueKey":"existingManifest.oneOf.45.integrations.items.[INDEX]","typeLabel":"SelfHostedModelIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.45.integrations","typeLabel":"SelfHostedModelIntegrations · object[]"},"collaborators":{"description":"Collaborators","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.45.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.45.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.45.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.45.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.45.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.45.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.45.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.45","typeLabel":"SelfHostedModelProviderAccount · object"},{"type":"object","title":"OpenRouterProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/openrouter","type":"string","enum":["provider-account/openrouter"],"default":"provider-account/openrouter","isRequired":true,"uniqueKey":"existingManifest.oneOf.46.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the OpenRouter model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.46.name","typeLabel":"string"},"auth_data":{"description":"OpenRouter API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.46.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for OpenRouter authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.46.auth_data.api_key","typeLabel":"string"}},"title":"OpenRouterApiKeyAuth","x-fern-type-name":"OpenRouterApiKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.46.auth_data","typeLabel":"OpenRouterApiKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the OpenRouter model account","type":"array","items":{"description":"OpenRouter Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/openrouter","type":"string","enum":["integration/model/openrouter"],"default":"integration/model/openrouter","isRequired":true,"uniqueKey":"existingManifest.oneOf.46.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.46.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The OpenRouter model identifier (e.g., anthropic/claude-3-haiku, openai/gpt-4o-mini). This is the model name from OpenRouter's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.46.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the OpenRouter model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.46.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.46.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.46.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.46.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.46.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"OpenRouterIntegrations","x-fern-type-name":"OpenRouterIntegrations","uniqueKey":"existingManifest.oneOf.46.integrations.items.[INDEX]","typeLabel":"OpenRouterIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.46.integrations","typeLabel":"OpenRouterIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.46.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.46.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.46.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.46.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.46.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.46.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.46.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.46","typeLabel":"OpenRouterProviderAccount · object"},{"type":"object","title":"SambaNovaProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/sambanova","type":"string","enum":["provider-account/sambanova"],"default":"provider-account/sambanova","isRequired":true,"uniqueKey":"existingManifest.oneOf.47.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the SambaNova model account","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.47.name","typeLabel":"string"},"auth_data":{"description":"SambaNova Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.47.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for SambaNova authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.47.auth_data.api_key","typeLabel":"string"}},"title":"SambaNovaKeyAuth","x-fern-type-name":"SambaNovaKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.47.auth_data","typeLabel":"SambaNovaKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the SambaNova model account","type":"array","items":{"description":"SambaNova Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/sambanova","type":"string","enum":["integration/model/sambanova"],"default":"integration/model/sambanova","isRequired":true,"uniqueKey":"existingManifest.oneOf.47.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.47.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The SambaNova model identifier (e.g., DeepSeek-R1-0528, Meta-Llama-3.3-70B-Instruct). This is the standard Model ID from SambaNova's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.47.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the SambaNova model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.47.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.47.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.47.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.47.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.47.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"SambaNovaIntegrations","x-fern-type-name":"SambaNovaIntegrations","uniqueKey":"existingManifest.oneOf.47.integrations.items.[INDEX]","typeLabel":"SambaNovaIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.47.integrations","typeLabel":"SambaNovaIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.47.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.47.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.47.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.47.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.47.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.47.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.47.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.47","typeLabel":"SambaNovaProviderAccount · object"},{"type":"object","title":"XAIProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/xai","type":"string","enum":["provider-account/xai"],"default":"provider-account/xai","isRequired":true,"uniqueKey":"existingManifest.oneOf.48.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the xAI model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.48.name","typeLabel":"string"},"auth_data":{"description":"Authentication method using xAI API key","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.48.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for xAI authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.48.auth_data.api_key","typeLabel":"string"}},"title":"XAIKeyAuth","x-fern-type-name":"XAIKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.48.auth_data","typeLabel":"XAIKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the xAI model account","type":"array","items":{"description":"xAI Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/xai","type":"string","enum":["integration/model/xai"],"default":"integration/model/xai","isRequired":true,"uniqueKey":"existingManifest.oneOf.48.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.48.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The xAI model identifier (e.g., grok-4-1-fast-reasoning, grok-4-1-fast-non-reasoning, grok-4). This is the model name from xAI's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.48.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the xAI model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.48.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.48.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.48.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.48.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.48.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"XAIIntegrations","x-fern-type-name":"XAIIntegrations","uniqueKey":"existingManifest.oneOf.48.integrations.items.[INDEX]","typeLabel":"XAIIntegrations · object"},"uniqueKey":"existingManifest.oneOf.48.integrations","typeLabel":"XAIIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.48.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.48.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.48.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.48.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.48.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.48.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.48.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.48","typeLabel":"XAIProviderAccount · object"},{"type":"object","title":"BasetenProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/baseten","type":"string","enum":["provider-account/baseten"],"default":"provider-account/baseten","isRequired":true,"uniqueKey":"existingManifest.oneOf.49.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Baseten model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.49.name","typeLabel":"string"},"auth_data":{"description":"Authentication method using Baseten API key","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.49.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Baseten authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.49.auth_data.api_key","typeLabel":"string"}},"title":"BasetenKeyAuth","x-fern-type-name":"BasetenKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.49.auth_data","typeLabel":"BasetenKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Baseten model account","type":"array","items":{"description":"Baseten Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/baseten","type":"string","enum":["integration/model/baseten"],"default":"integration/model/baseten","isRequired":true,"uniqueKey":"existingManifest.oneOf.49.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.49.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Baseten model identifier. This is the model name from Baseten's model catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.49.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Baseten model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.49.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.49.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.49.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.49.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.49.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"BasetenIntegrations","x-fern-type-name":"BasetenIntegrations","uniqueKey":"existingManifest.oneOf.49.integrations.items.[INDEX]","typeLabel":"BasetenIntegrations · object"},"uniqueKey":"existingManifest.oneOf.49.integrations","typeLabel":"BasetenIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.49.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.49.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.49.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.49.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.49.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.49.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.49.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.49","typeLabel":"BasetenProviderAccount · object"},{"type":"object","title":"AwsSagemakerProviderAccount","description":"The existing manifest of the resource","required":["type","name","region","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/aws-sagemaker","type":"string","enum":["provider-account/aws-sagemaker"],"default":"provider-account/aws-sagemaker","isRequired":true,"uniqueKey":"existingManifest.oneOf.50.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Sagemaker model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.50.name","typeLabel":"string"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"existingManifest.oneOf.50.region","typeLabel":"enum\u003cstring>"},"integrations":{"description":"List of integrations that are associated with the Sagemaker model account","type":"array","items":{"description":"Sagemaker Model","type":"object","required":["name","model_id","type","model_types"],"properties":{"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.50.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The SageMaker endpoint name you created for your model deployment. This is the name of the inference endpoint in AWS SageMaker, not the model name.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.50.integrations.items.[INDEX].model_id","typeLabel":"string"},"type":{"description":"+value=integration/model/sagemaker","type":"string","enum":["integration/model/sagemaker"],"default":"integration/model/sagemaker","isRequired":true,"uniqueKey":"existingManifest.oneOf.50.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"model_types":{"description":"Specify the type of the Sagemaker model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.50.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.50.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","uniqueKey":"existingManifest.oneOf.50.integrations.items.[INDEX].region","typeLabel":"enum\u003cstring>"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.50.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.50.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.50.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"SagemakerModel","x-fern-type-name":"SagemakerModel","uniqueKey":"existingManifest.oneOf.50.integrations.items.[INDEX]","typeLabel":"SagemakerModel · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.50.integrations","typeLabel":"SagemakerModel · object[]"},"auth_data":{"type":"any","uniqueKey":"existingManifest.oneOf.50.auth_data","typeLabel":"any"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.50.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.50.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.50.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.50.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.50.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.50.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.50.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.50","typeLabel":"AwsSagemakerProviderAccount · object"},{"type":"object","title":"CerebrasProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/cerebras","type":"string","enum":["provider-account/cerebras"],"default":"provider-account/cerebras","isRequired":true,"uniqueKey":"existingManifest.oneOf.51.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Cerebras model account","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.51.name","typeLabel":"string"},"auth_data":{"type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.51.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Cerebras authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.51.auth_data.api_key","typeLabel":"string"}},"title":"CerebrasKeyAuth","x-fern-type-name":"CerebrasKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.51.auth_data","typeLabel":"CerebrasKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Cerebras model account","type":"array","items":{"type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/cerebras","type":"string","enum":["integration/model/cerebras"],"default":"integration/model/cerebras","isRequired":true,"uniqueKey":"existingManifest.oneOf.51.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.51.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Cerebras model identifier (e.g., llama-4-scout-17b-16e-instruct, llama3.1-70b). This is the standard model name from Cerebras's API documentation.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.51.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Cerebras model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.51.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.51.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.51.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.51.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.51.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"CerebrasIntegrations","x-fern-type-name":"CerebrasIntegrations","uniqueKey":"existingManifest.oneOf.51.integrations.items.[INDEX]","typeLabel":"CerebrasIntegrations · object"},"uniqueKey":"existingManifest.oneOf.51.integrations","typeLabel":"CerebrasIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.51.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.51.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.51.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.51.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.51.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.51.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.51.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.51","typeLabel":"CerebrasProviderAccount · object"},{"type":"object","title":"WaferProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/wafer","type":"string","enum":["provider-account/wafer"],"default":"provider-account/wafer","isRequired":true,"uniqueKey":"existingManifest.oneOf.52.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Wafer model account","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.52.name","typeLabel":"string"},"auth_data":{"description":"Wafer API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.52.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Wafer Serverless authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.52.auth_data.api_key","typeLabel":"string"}},"title":"WaferAPIKeyAuth","x-fern-type-name":"WaferAPIKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.52.auth_data","typeLabel":"WaferAPIKeyAuth · object"},"base_url":{"description":"Optional custom base URL for Wafer Serverless API (defaults to https://pass.wafer.ai/v1)","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.52.base_url","typeLabel":"string"},"zero_data_retention":{"description":"When enabled, sends the Wafer-ZDR: required header on API requests for request-scoped zero data retention","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.52.zero_data_retention","typeLabel":"boolean"},"integrations":{"description":"List of integrations that are associated with the Wafer model account","type":"array","items":{"description":"Wafer Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/wafer","type":"string","enum":["integration/model/wafer"],"default":"integration/model/wafer","isRequired":true,"uniqueKey":"existingManifest.oneOf.52.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.52.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Wafer model identifier (e.g., deepseek-v4-pro, deepseek-v4-flash). See https://docs.wafer.ai/serverless for the public catalog.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.52.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Wafer model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.52.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.52.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.52.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.52.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.52.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"WaferIntegrations","x-fern-type-name":"WaferIntegrations","uniqueKey":"existingManifest.oneOf.52.integrations.items.[INDEX]","typeLabel":"WaferIntegrations · object"},"uniqueKey":"existingManifest.oneOf.52.integrations","typeLabel":"WaferIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.52.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.52.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.52.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.52.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.52.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.52.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.52.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.52","typeLabel":"WaferProviderAccount · object"},{"type":"object","title":"FireworksAIProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/fireworks-ai","type":"string","enum":["provider-account/fireworks-ai"],"default":"provider-account/fireworks-ai","isRequired":true,"uniqueKey":"existingManifest.oneOf.53.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Fireworks AI model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.53.name","typeLabel":"string"},"auth_data":{"description":"Fireworks AI API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.53.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The Fireworks AI API key (sent as a Bearer token). Create one in the Fireworks console.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.53.auth_data.api_key","typeLabel":"string"}},"title":"FireworksAIAPIKeyAuth","x-fern-type-name":"FireworksAIAPIKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.53.auth_data","typeLabel":"FireworksAIAPIKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Fireworks AI model account","type":"array","items":{"description":"Fireworks AI Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/fireworks-ai","type":"string","enum":["integration/model/fireworks-ai"],"default":"integration/model/fireworks-ai","isRequired":true,"uniqueKey":"existingManifest.oneOf.53.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.53.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Fireworks AI model identifier, for example accounts/fireworks/models/kimi-k3. For a dedicated deployment use accounts/\u003caccount>/deployments/\u003cdeployment>.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.53.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Fireworks AI model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.53.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.53.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.53.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.53.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.53.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"FireworksAIIntegrations","x-fern-type-name":"FireworksAIIntegrations","uniqueKey":"existingManifest.oneOf.53.integrations.items.[INDEX]","typeLabel":"FireworksAIIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.53.integrations","typeLabel":"FireworksAIIntegrations · object[]"},"base_url":{"description":"Override the Fireworks AI API base URL. Defaults to https://api.fireworks.ai/inference/v1. For US-only serverless use https://us.api.fireworks.ai/inference/v1 together with the US router model IDs, for example accounts/fireworks/routers/kimi-k3-us.","type":"string","pattern":"^https://[^\\s/?#@]+(?:/[^\\s?#]*)?$","uniqueKey":"existingManifest.oneOf.53.base_url","typeLabel":"string"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.53.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.53.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.53.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.53.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.53.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.53.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.53.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.53","typeLabel":"FireworksAIProviderAccount · object"},{"type":"object","title":"TypeSafeProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/typesafe","type":"string","enum":["provider-account/typesafe"],"default":"provider-account/typesafe","isRequired":true,"uniqueKey":"existingManifest.oneOf.54.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the TypeSafe model account","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.54.name","typeLabel":"string"},"auth_data":{"description":"TypeSafe API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.54.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The TypeSafe API key, sent to the model as an Authorization Bearer token","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.54.auth_data.api_key","typeLabel":"string"}},"title":"TypeSafeAPIKeyAuth","x-fern-type-name":"TypeSafeAPIKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.54.auth_data","typeLabel":"TypeSafeAPIKeyAuth · object"},"base_url":{"description":"Optional custom base URL for the TypeSafe API (defaults to https://api.typesafe.ai). Point this at a Cloudflare account (https://api.cloudflare.com/client/v4/accounts/\u003caccount_id>) to serve System One models through Cloudflare Workers AI instead.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.54.base_url","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the TypeSafe model account","type":"array","items":{"description":"TypeSafe Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/typesafe","type":"string","enum":["integration/model/typesafe"],"default":"integration/model/typesafe","isRequired":true,"uniqueKey":"existingManifest.oneOf.54.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.54.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The TypeSafe model identifier (e.g., jev-1.13.0, jev-latest). Pin a versioned id so confidence thresholds stay stable across releases. On a Cloudflare Workers AI base URL, use the Workers AI model name instead (e.g., typesafe/jev, @cf/cloudflare/clef, @cf/cloudflare/clef-flash).","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.54.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the TypeSafe model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.54.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["decision"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.54.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.54.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.54.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.54.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"TypeSafeIntegrations","x-fern-type-name":"TypeSafeIntegrations","uniqueKey":"existingManifest.oneOf.54.integrations.items.[INDEX]","typeLabel":"TypeSafeIntegrations · object"},"uniqueKey":"existingManifest.oneOf.54.integrations","typeLabel":"TypeSafeIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.54.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.54.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.54.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.54.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.54.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.54.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.54.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.54","typeLabel":"TypeSafeProviderAccount · object"},{"type":"object","title":"SnowflakeCortexProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data","account_identifier","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/snowflake-cortex","type":"string","enum":["provider-account/snowflake-cortex"],"default":"provider-account/snowflake-cortex","isRequired":true,"uniqueKey":"existingManifest.oneOf.55.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Snowflake Cortex model account","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.55.name","typeLabel":"string"},"auth_data":{"type":"object","required":["type","pat_token"],"properties":{"type":{"description":"+value=pat-token","type":"string","enum":["pat-token"],"default":"pat-token","isRequired":true,"uniqueKey":"existingManifest.oneOf.55.auth_data.type","typeLabel":"enum\u003cstring>"},"pat_token":{"description":"PAT token for Snowflake Cortex authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.55.auth_data.pat_token","typeLabel":"string"}},"title":"SnowflakeCortexPatTokenAuth","x-fern-type-name":"SnowflakeCortexPatTokenAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.55.auth_data","typeLabel":"SnowflakeCortexPatTokenAuth · object"},"account_identifier":{"description":"Snowflake account identifier. You can find it in the URL of your Snowflake account. Example: https://\u003caccount_identifier>.snowflakecomputing.com. Insert the account identifier only, without the URL.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.55.account_identifier","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the Snowflake Cortex model account","type":"array","items":{"type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/snowflake-cortex","type":"string","enum":["integration/model/snowflake-cortex"],"default":"integration/model/snowflake-cortex","isRequired":true,"uniqueKey":"existingManifest.oneOf.55.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name to identify this Snowflake Cortex model in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.55.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"ID of the Snowflake Cortex model to use","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.55.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Snowflake Cortex model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.55.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.55.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.55.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.55.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.55.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"SnowflakeCortexIntegrations","x-fern-type-name":"SnowflakeCortexIntegrations","uniqueKey":"existingManifest.oneOf.55.integrations.items.[INDEX]","typeLabel":"SnowflakeCortexIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.55.integrations","typeLabel":"SnowflakeCortexIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.55.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.55.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.55.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.55.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.55.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.55.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.55.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.55","typeLabel":"SnowflakeCortexProviderAccount · object"},{"type":"object","title":"ElevenLabsProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/elevenlabs","type":"string","enum":["provider-account/elevenlabs"],"default":"provider-account/elevenlabs","isRequired":true,"uniqueKey":"existingManifest.oneOf.56.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the ElevenLabs model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.56.name","typeLabel":"string"},"auth_data":{"description":"ElevenLabs API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.56.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The XI API key for ElevenLabs authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.56.auth_data.api_key","typeLabel":"string"}},"title":"ElevenLabsApiKeyAuth","x-fern-type-name":"ElevenLabsApiKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.56.auth_data","typeLabel":"ElevenLabsApiKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the ElevenLabs model account","type":"array","items":{"description":"ElevenLabs Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/elevenlabs","type":"string","enum":["integration/model/elevenlabs"],"default":"integration/model/elevenlabs","isRequired":true,"uniqueKey":"existingManifest.oneOf.56.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.56.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The ElevenLabs model identifier (for example, eleven_multilingual_v2, eleven_turbo_v2_5)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.56.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the ElevenLabs model (text_to_speech or audio_transcription)","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.56.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["text_to_speech"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.56.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.56.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.56.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.56.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"ElevenLabsModel","x-fern-type-name":"ElevenLabsModel","uniqueKey":"existingManifest.oneOf.56.integrations.items.[INDEX]","typeLabel":"ElevenLabsModel · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.56.integrations","typeLabel":"ElevenLabsModel · object[]"},"base_url":{"description":"Optional custom base URL for ElevenLabs API","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.56.base_url","typeLabel":"string"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.56.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.56.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.56.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.56.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.56.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.56.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.56.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.56","typeLabel":"ElevenLabsProviderAccount · object"},{"type":"object","title":"DeepgramProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/deepgram","type":"string","enum":["provider-account/deepgram"],"default":"provider-account/deepgram","isRequired":true,"uniqueKey":"existingManifest.oneOf.57.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Deepgram model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.57.name","typeLabel":"string"},"auth_data":{"description":"Deepgram API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.57.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Deepgram authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.57.auth_data.api_key","typeLabel":"string"}},"title":"DeepgramApiKeyAuth","x-fern-type-name":"DeepgramApiKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.57.auth_data","typeLabel":"DeepgramApiKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Deepgram model account","type":"array","items":{"description":"Deepgram Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/deepgram","type":"string","enum":["integration/model/deepgram"],"default":"integration/model/deepgram","isRequired":true,"uniqueKey":"existingManifest.oneOf.57.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.57.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Deepgram model identifier (for example, nova-2, nova-2-general, aura-asteria-en)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.57.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Deepgram model (text_to_speech or audio_transcription)","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.57.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["audio_transcription"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.57.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.57.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.57.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.57.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"DeepgramModel","x-fern-type-name":"DeepgramModel","uniqueKey":"existingManifest.oneOf.57.integrations.items.[INDEX]","typeLabel":"DeepgramModel · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.57.integrations","typeLabel":"DeepgramModel · object[]"},"base_url":{"description":"Optional custom base URL for Deepgram API","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.57.base_url","typeLabel":"string"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.57.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.57.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.57.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.57.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.57.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.57.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.57.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.57","typeLabel":"DeepgramProviderAccount · object"},{"type":"object","title":"CartesiaProviderAccount","description":"The existing manifest of the resource","required":["type","name","cartesia_version","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/cartesia","type":"string","enum":["provider-account/cartesia"],"default":"provider-account/cartesia","isRequired":true,"uniqueKey":"existingManifest.oneOf.58.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Cartesia model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.58.name","typeLabel":"string"},"cartesia_version":{"description":"The Cartesia API version header. Must be set to a supported API version.","type":"string","enum":["2025-04-16","2024-11-13","2024-06-10"],"default":"2025-04-16","isRequired":true,"uniqueKey":"existingManifest.oneOf.58.cartesia_version","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"Cartesia API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.58.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Cartesia authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.58.auth_data.api_key","typeLabel":"string"}},"title":"CartesiaApiKeyAuth","x-fern-type-name":"CartesiaApiKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.58.auth_data","typeLabel":"CartesiaApiKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Cartesia model account","type":"array","items":{"description":"Cartesia Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/cartesia","type":"string","enum":["integration/model/cartesia"],"default":"integration/model/cartesia","isRequired":true,"uniqueKey":"existingManifest.oneOf.58.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.58.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Cartesia model identifier (for example, sonic-2, sonic-multilingual)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.58.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Cartesia model (text_to_speech or audio_transcription)","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.58.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["text_to_speech"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.58.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.58.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.58.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.58.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"CartesiaModel","x-fern-type-name":"CartesiaModel","uniqueKey":"existingManifest.oneOf.58.integrations.items.[INDEX]","typeLabel":"CartesiaModel · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.58.integrations","typeLabel":"CartesiaModel · object[]"},"base_url":{"description":"Optional custom base URL for Cartesia API","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.58.base_url","typeLabel":"string"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.58.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.58.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.58.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.58.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.58.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.58.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.58.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.58","typeLabel":"CartesiaProviderAccount · object"},{"type":"object","title":"SmallestAiProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/smallest-ai","type":"string","enum":["provider-account/smallest-ai"],"default":"provider-account/smallest-ai","isRequired":true,"uniqueKey":"existingManifest.oneOf.59.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Smallest AI model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.59.name","typeLabel":"string"},"auth_data":{"description":"Smallest AI API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.59.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Smallest AI authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.59.auth_data.api_key","typeLabel":"string"}},"title":"SmallestAiApiKeyAuth","x-fern-type-name":"SmallestAiApiKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.59.auth_data","typeLabel":"SmallestAiApiKeyAuth · object"},"integrations":{"description":"List of integrations that are associated with the Smallest AI model account","type":"array","items":{"description":"Smallest AI Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/smallest-ai","type":"string","enum":["integration/model/smallest-ai"],"default":"integration/model/smallest-ai","isRequired":true,"uniqueKey":"existingManifest.oneOf.59.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.59.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Smallest AI model identifier (for example, lightning-v2, lightning-v3.1 for TTS, pulse for STT)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.59.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the Smallest AI model (text_to_speech or audio_transcription)","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.59.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["text_to_speech"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.59.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.59.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.59.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.59.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"SmallestAiModel","x-fern-type-name":"SmallestAiModel","uniqueKey":"existingManifest.oneOf.59.integrations.items.[INDEX]","typeLabel":"SmallestAiModel · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.59.integrations","typeLabel":"SmallestAiModel · object[]"},"base_url":{"description":"Optional custom base URL for Smallest AI API","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.59.base_url","typeLabel":"string"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.59.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.59.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.59.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.59.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.59.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.59.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.59.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.59","typeLabel":"SmallestAiProviderAccount · object"},{"type":"object","title":"AWSClaudePlatformProviderAccount","description":"The existing manifest of the resource","required":["type","name","workspace_id","region"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/aws-claude-platform","type":"string","enum":["provider-account/aws-claude-platform"],"default":"provider-account/aws-claude-platform","isRequired":true,"uniqueKey":"existingManifest.oneOf.60.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the AWS Claude Platform model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.60.name","typeLabel":"string"},"workspace_id":{"description":"Your Claude Platform on AWS workspace ID, in the format wrkspc_\u003calphanumeric>.","type":"string","pattern":"^wrkspc_[A-Za-z0-9]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.60.workspace_id","typeLabel":"string"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"existingManifest.oneOf.60.region","typeLabel":"enum\u003cstring>"},"base_url":{"description":"Optional custom base URL (e.g. a VPC/PrivateLink endpoint) for Claude Platform on AWS. Must include the version path, e.g. https://my-endpoint.example.com/v1. When set, requests are sent here instead of the default aws-external-anthropic.{region}.api.aws/v1 host.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.60.base_url","typeLabel":"string"},"auth_data":{"type":"any","uniqueKey":"existingManifest.oneOf.60.auth_data","typeLabel":"any"},"integrations":{"description":"List of integrations that are associated with the AWS Claude Platform model account","type":"array","items":{"description":"AWS Claude Platform Model","type":"object","required":["name","model_id","type","model_types"],"properties":{"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.60.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Anthropic model identifier (e.g., claude-3-5-sonnet-20241022, claude-3-opus-20240229, claude-3-haiku-20240307). This is the standard model name from Anthropic's API documentation.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.60.integrations.items.[INDEX].model_id","typeLabel":"string"},"type":{"description":"+value=integration/model/aws-claude-platform\n+icon=claude","type":"string","enum":["integration/model/aws-claude-platform"],"default":"integration/model/aws-claude-platform","isRequired":true,"uniqueKey":"existingManifest.oneOf.60.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"model_types":{"description":"Specify the type of the Anthropic model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.60.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.60.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.60.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.60.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.60.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"AWSClaudePlatformIntegrations","x-fern-type-name":"AWSClaudePlatformIntegrations","uniqueKey":"existingManifest.oneOf.60.integrations.items.[INDEX]","typeLabel":"AWSClaudePlatformIntegrations · object"},"uniqueKey":"existingManifest.oneOf.60.integrations","typeLabel":"AWSClaudePlatformIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.60.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.60.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.60.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.60.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.60.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.60.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.60.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.60","typeLabel":"AWSClaudePlatformProviderAccount · object"},{"type":"object","title":"AwsBedrockMantleProviderAccount","description":"The existing manifest of the resource","required":["type","name","region","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/aws-bedrock-mantle","type":"string","enum":["provider-account/aws-bedrock-mantle"],"default":"provider-account/aws-bedrock-mantle","isRequired":true,"uniqueKey":"existingManifest.oneOf.61.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the AWS Bedrock Mantle model account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.61.name","typeLabel":"string"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"existingManifest.oneOf.61.region","typeLabel":"enum\u003cstring>"},"integrations":{"description":"List of integrations that are associated with the AWS Bedrock Mantle model account","type":"array","items":{"description":"Bedrock Mantle Model","type":"object","required":["name","model_id","type","model_types"],"properties":{"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.61.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The Bedrock Mantle model identifier (e.g., openai.gpt-oss-20b-1:0). Use the OpenAI-compatible model name exposed by the Bedrock Mantle endpoint.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.61.integrations.items.[INDEX].model_id","typeLabel":"string"},"type":{"description":"+value=integration/model/bedrock-mantle","type":"string","enum":["integration/model/bedrock-mantle"],"default":"integration/model/bedrock-mantle","isRequired":true,"uniqueKey":"existingManifest.oneOf.61.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"model_types":{"description":"Specify the type of the Bedrock Mantle model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.61.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.61.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","uniqueKey":"existingManifest.oneOf.61.integrations.items.[INDEX].region","typeLabel":"enum\u003cstring>"},"project":{"description":"The AWS Bedrock project that inference requests for this model will be attributed to (e.g., proj_5d5ykleja6cwpirysbb7). If not specified, the project from the model account will be used, and if that is also unset the AWS account's default project is used.","type":"string","uniqueKey":"existingManifest.oneOf.61.integrations.items.[INDEX].project","typeLabel":"string"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.61.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.61.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.61.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"AwsBedrockMantleIntegrations","x-fern-type-name":"AwsBedrockMantleIntegrations","uniqueKey":"existingManifest.oneOf.61.integrations.items.[INDEX]","typeLabel":"AwsBedrockMantleIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.61.integrations","typeLabel":"AwsBedrockMantleIntegrations · object[]"},"project":{"description":"The default AWS Bedrock project that inference requests will be attributed to (e.g., proj_5d5ykleja6cwpirysbb7). Used for all models unless overridden at the model level. If not specified, the AWS account's default project is used.","type":"string","uniqueKey":"existingManifest.oneOf.61.project","typeLabel":"string"},"base_url":{"description":"Optional custom base URL (e.g. a VPC/PrivateLink endpoint) for AWS Bedrock Mantle. When set, requests are sent here instead of the default bedrock-mantle.{region}.api.aws host.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.61.base_url","typeLabel":"string"},"auth_data":{"type":"any","uniqueKey":"existingManifest.oneOf.61.auth_data","typeLabel":"any"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.61.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.61.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.61.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.61.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.61.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.61.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.61.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.61","typeLabel":"AwsBedrockMantleProviderAccount · object"},{"type":"object","title":"VirtualModelProviderAccount","description":"The existing manifest of the resource","required":["name","type","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"name":{"description":"The name of the Virtual Model Provider Group","type":"string","pattern":"^[a-z][a-z0-9\\-_]{1,62}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.62.name","typeLabel":"string"},"type":{"description":"+value=provider-account/virtual-model","type":"string","enum":["provider-account/virtual-model"],"default":"provider-account/virtual-model","isRequired":true,"uniqueKey":"existingManifest.oneOf.62.type","typeLabel":"enum\u003cstring>"},"integrations":{"description":"List of virtual models in this group","type":"array","items":{"description":"Virtual Model","type":"object","required":["name","type","model_types","routing_config"],"properties":{"name":{"description":"The name of the Virtual Model","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.62.integrations.items.[INDEX].name","typeLabel":"string"},"type":{"description":"+value=integration/model/virtual","type":"string","enum":["integration/model/virtual"],"default":"integration/model/virtual","isRequired":true,"uniqueKey":"existingManifest.oneOf.62.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"model_types":{"description":"Specify the type of the Virtual Model","type":"array","items":{"type":"string","enum":["chat","completion","embedding","rerank","moderation","audio_transcription","audio_translation","text_to_speech","image","responses","video","decision"],"title":"VirtualModelModelType","x-fern-type-name":"VirtualModelModelType","uniqueKey":"existingManifest.oneOf.62.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.62.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"routing_config":{"type":"any","isRequired":true,"uniqueKey":"existingManifest.oneOf.62.integrations.items.[INDEX].routing_config","typeLabel":"any"},"slug":{"description":"It should be a unique identifier for the virtual model. It is used to uniquely identify the virtual model. It can be used in place of virtualGroupName/virtualModelName.","type":"string","uniqueKey":"existingManifest.oneOf.62.integrations.items.[INDEX].slug","typeLabel":"string"},"alias":{"description":"Alternate identifiers for the virtual model. Can be used in place of virtualGroupName/virtualModelName (same as slug). Slug takes priority if both match.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.62.integrations.items.[INDEX].alias.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.62.integrations.items.[INDEX].alias","typeLabel":"string[]"}},"title":"VirtualModel","x-fern-type-name":"VirtualModel","uniqueKey":"existingManifest.oneOf.62.integrations.items.[INDEX]","typeLabel":"VirtualModel · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.62.integrations","typeLabel":"VirtualModel · object[]"},"collaborators":{"description":"List of users who have access to this Virtual Model Provider Group","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.62.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.62.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.62.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.62.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.62.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.62.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.62","typeLabel":"VirtualModelProviderAccount · object"},{"type":"object","title":"CustomEndpointProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/custom-endpoint","type":"string","enum":["provider-account/custom-endpoint"],"default":"provider-account/custom-endpoint","isRequired":true,"uniqueKey":"existingManifest.oneOf.63.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the custom endpoint model account.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.63.name","typeLabel":"string"},"integrations":{"description":"List of endpoint integrations associated with this model account.","type":"array","items":{"description":"Custom Endpoint","type":"object","required":["type","name","base_url"],"properties":{"type":{"description":"+value=integration/model/custom-endpoint","type":"string","enum":["integration/model/custom-endpoint"],"default":"integration/model/custom-endpoint","isRequired":true,"uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this endpoint in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].name","typeLabel":"string"},"base_url":{"description":"The target base URL to proxy requests to (e.g., https://my-service.example.com/v1)","type":"string","pattern":"^https?:\\/\\/[^\\s\\/]+(\\/[^\\s\\/]*)*[^\\/\\s]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].base_url","typeLabel":"string"},"auth_data":{"description":"Static API key or token authentication via request headers. All users share the same credentials.","type":"object","required":["type","headers"],"properties":{"type":{"description":"+value=header","type":"string","enum":["header"],"default":"header","isRequired":true,"uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].auth_data.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"HTTP headers forwarded to the upstream on every request. Values may contain internal spaces (e.g. `Bearer \u003ctoken>`) but must not be empty or have leading/trailing whitespace.","type":"object","additionalProperties":{"type":"string","pattern":"^\\S(?:.*\\S)?$","uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].auth_data.headers.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].auth_data.headers","typeLabel":"object"}},"title":"CustomHeaderAuth","x-fern-type-name":"CustomHeaderAuth","uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].auth_data","typeLabel":"CustomHeaderAuth · object"},"headers":{"description":"Custom headers forwarded to the upstream endpoint with every request. For example: `{\"X-Custom-Header\": \"value\"}`","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].headers.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].headers","typeLabel":"object"},"tls_settings":{"description":"Configure TLS settings for secure connections with custom CA certificates.","type":"object","required":["reject_unauthorized"],"properties":{"reject_unauthorized":{"description":"When set to true, it will reject any connection which is not authorized with the list of supplied CAs.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].tls_settings.reject_unauthorized","typeLabel":"boolean"},"ca_cert":{"description":"Add custom CA certificates to use for TLS verification.","type":"string","uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].tls_settings.ca_cert","typeLabel":"string"}},"title":"CustomTLSSettings","x-fern-type-name":"CustomTLSSettings","uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].tls_settings","typeLabel":"CustomTLSSettings · object"},"loadbalancing_config":{"description":"Per-endpoint load balancing settings for a load-balanced custom-endpoint provider account. Only effective when the parent account has routing_type set to \"weight\" or \"priority\".","type":"object","properties":{"weight":{"description":"Relative weight for routing decisions (higher values mean more traffic). Weights across all endpoints in the account must sum to 100.","type":"integer","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].loadbalancing_config.weight","typeLabel":"integer"},"priority":{"description":"Priority for the endpoint, Lower the number, higher the priority (0 is the highest priority)","type":"integer","minimum":0,"uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].loadbalancing_config.priority","typeLabel":"integer"},"fallback_status_codes":{"description":"Status Codes for which the request will fall back to other endpoints. If the status code is not present in fallback_status_codes, it fails immediately.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].loadbalancing_config.fallback_status_codes.items.[INDEX]","typeLabel":"string"},"default":["401","403","404","408","429","500","502","503"],"uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].loadbalancing_config.fallback_status_codes","typeLabel":"string[]"},"fallback_candidate":{"description":"Whether this endpoint is a fallback candidate. If set to false, this endpoint will not be considered as a fallback option for the account.","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].loadbalancing_config.fallback_candidate","typeLabel":"boolean"},"metadata_match":{"description":"Optional metadata key-value pairs that must match incoming request metadata headers for this endpoint to be considered for routing.","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].loadbalancing_config.metadata_match.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].loadbalancing_config.metadata_match","typeLabel":"object"}},"title":"CustomEndpointTargetConfig","x-fern-type-name":"CustomEndpointTargetConfig","uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].loadbalancing_config","typeLabel":"CustomEndpointTargetConfig · object"},"authorized_subjects":{"description":"List of subjects that are authorized to access this endpoint. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"CustomEndpointIntegrations","x-fern-type-name":"CustomEndpointIntegrations","uniqueKey":"existingManifest.oneOf.63.integrations.items.[INDEX]","typeLabel":"CustomEndpointIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.63.integrations","typeLabel":"CustomEndpointIntegrations · object[]"},"endpoint_type":{"description":"The type of service behind this endpoint (used for tracking purposes)","type":"string","enum":["azure-speech-service","other"],"uniqueKey":"existingManifest.oneOf.63.endpoint_type","typeLabel":"enum\u003cstring>"},"routing_type":{"description":"How requests are routed across the endpoints in this account. When unset, each endpoint is reachable individually at /proxy-api/\u003caccount-name>/\u003cendpoint-name>. Set to \"weight\" or \"priority\" to load balance across the endpoints, reachable at /proxy-api/\u003caccount-name>/\u003cslug>/\u003cupstream-path>.","type":"string","enum":["weight","priority"],"uniqueKey":"existingManifest.oneOf.63.routing_type","typeLabel":"enum\u003cstring>"},"slug":{"description":"A unique identifier used to address the load-balanced endpoints of this account. When routing_type is \"weight\" or \"priority\", the load balancer is reachable at /proxy-api/\u003caccount-name>/\u003cslug>/\u003cupstream-path>, alongside the per-endpoint URLs.","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,60}[a-zA-Z0-9])$","uniqueKey":"existingManifest.oneOf.63.slug","typeLabel":"string"},"auth_data":{"description":"Static API key or token authentication via request headers. All users share the same credentials.","type":"object","required":["type","headers"],"properties":{"type":{"description":"+value=header","type":"string","enum":["header"],"default":"header","isRequired":true,"uniqueKey":"existingManifest.oneOf.63.auth_data.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"HTTP headers forwarded to the upstream on every request. Values may contain internal spaces (e.g. `Bearer \u003ctoken>`) but must not be empty or have leading/trailing whitespace.","type":"object","additionalProperties":{"type":"string","pattern":"^\\S(?:.*\\S)?$","uniqueKey":"existingManifest.oneOf.63.auth_data.headers.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.63.auth_data.headers","typeLabel":"object"}},"title":"CustomHeaderAuth","x-fern-type-name":"CustomHeaderAuth","uniqueKey":"existingManifest.oneOf.63.auth_data","typeLabel":"CustomHeaderAuth · object"},"collaborators":{"description":"Collaborators","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.63.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.63.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.63.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.63.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.63.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.63.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.63","typeLabel":"CustomEndpointProviderAccount · object"},{"type":"object","title":"TrueFoundryManagedProviderAccount","description":"The existing manifest of the resource","required":["type","name","auth_data","base_url","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/truefoundry-managed","type":"string","enum":["provider-account/truefoundry-managed"],"default":"provider-account/truefoundry-managed","isRequired":true,"uniqueKey":"existingManifest.oneOf.64.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the TrueFoundry Managed account","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.64.name","typeLabel":"string"},"auth_data":{"description":"TrueFoundry Managed API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.64.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The virtual account token used to authenticate with TrueFoundry Managed","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.64.auth_data.api_key","typeLabel":"string"}},"title":"TrueFoundryManagedApiKeyAuth","x-fern-type-name":"TrueFoundryManagedApiKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.64.auth_data","typeLabel":"TrueFoundryManagedApiKeyAuth · object"},"base_url":{"description":"Base URL of the TrueFoundry gateway that serves the models","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.64.base_url","typeLabel":"string"},"integrations":{"description":"List of integrations that are associated with the TrueFoundry Managed account","type":"array","items":{"description":"TrueFoundry Managed Model","type":"object","required":["type","name","model_id","model_types"],"properties":{"type":{"description":"+value=integration/model/truefoundry-managed","type":"string","enum":["integration/model/truefoundry-managed"],"default":"integration/model/truefoundry-managed","isRequired":true,"uniqueKey":"existingManifest.oneOf.64.integrations.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"A descriptive name to identify this model integration in the UI","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-._]{0,62}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.64.integrations.items.[INDEX].name","typeLabel":"string"},"model_id":{"description":"The slug of the TrueFoundry virtual model (e.g., grok-4.7).","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.64.integrations.items.[INDEX].model_id","typeLabel":"string"},"model_types":{"description":"Specify the type of the TrueFoundry Managed model","type":"array","items":{"description":"Model Type","type":"string","enum":["chat","completion","embedding","realtime","rerank","audio_transcription","audio_translation","text_to_speech","moderation","image","responses","ocr","video","decision"],"title":"ModelType","x-fern-type-name":"ModelType","uniqueKey":"existingManifest.oneOf.64.integrations.items.[INDEX].model_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["chat"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.64.integrations.items.[INDEX].model_types","typeLabel":"enum\u003cstring>[]"},"cost":{"type":"any","uniqueKey":"existingManifest.oneOf.64.integrations.items.[INDEX].cost","typeLabel":"any"},"authorized_subjects":{"description":"List of subjects that are authorized to access this integration. List of user fqn in format \u003cuser_type>:\u003cusername>.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.64.integrations.items.[INDEX].authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.64.integrations.items.[INDEX].authorized_subjects","typeLabel":"string[]"}},"title":"TrueFoundryManagedIntegrations","x-fern-type-name":"TrueFoundryManagedIntegrations","uniqueKey":"existingManifest.oneOf.64.integrations.items.[INDEX]","typeLabel":"TrueFoundryManagedIntegrations · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.64.integrations","typeLabel":"TrueFoundryManagedIntegrations · object[]"},"collaborators":{"description":"List of users who have access to this model account","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.64.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.64.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.64.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.64.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.64.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.64.ownedBy","typeLabel":"OwnedBy · object"},"discount_percent":{"description":"Discount % applied to upstream list price for this model account.","type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.64.discount_percent","typeLabel":"number"}},"uniqueKey":"existingManifest.oneOf.64","typeLabel":"TrueFoundryManagedProviderAccount · object"},{"type":"object","title":"MCPServerProviderAccount","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+value=provider-account/mcp-server-group","type":"string","enum":["provider-account/mcp-server-group"],"default":"provider-account/mcp-server-group","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the MCP Server Group.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.name","typeLabel":"string"},"integrations":{"description":"List of MCP Servers, which are part of this MCP Server Group.","type":"array","items":{"oneOf":[{"type":"object","title":"MCPServerIntegration","description":"MCP Server","required":["type","name","description","url","transport"],"x-fern-type-name":"MCPServerIntegrations","properties":{"type":{"description":"+value=integration/mcp-server/remote","type":"string","enum":["integration/mcp-server/remote"],"default":"integration/mcp-server/remote","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.description","typeLabel":"string"},"url":{"description":"The endpoint URL for the MCP Server.","type":"string","pattern":"^https?:\\/\\/[^\\s]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.url","typeLabel":"string"},"transport":{"description":"The transport protocol to use for communication with the MCP Server.","type":"string","enum":["streamable-http","sse"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.transport","typeLabel":"enum\u003cstring>"},"auth_data":{"oneOf":[{"type":"object","title":"MCPServerHeaderAuth","description":"Authenticate using a static key or token sent as a request header. Choose shared vs individual credentials below.","required":["type","headers","auth_level"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=header","type":"string","enum":["header"],"default":"header","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.0.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"Map each header name to its value. For shared, enter the actual value. For individual, use a placeholder that will be filled in by each user (e.g. Bearer {{API_KEY}}).","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.0.headers.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.0.headers","typeLabel":"object"},"auth_level":{"description":"Level at which this authentication will be applied. Values: global (default), per_user","type":"string","enum":["global","per_user"],"default":"global","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.0.auth_level","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.0","typeLabel":"MCPServerHeaderAuth · object"},{"type":"object","title":"MCPServerOAuth2","description":"OAuth2","required":["type","grant_type","provider"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"OAuth2 authentication","type":"string","enum":["oauth2"],"default":"oauth2","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.type","typeLabel":"enum\u003cstring>"},"grant_type":{"description":"The OAuth2 grant type to use for authentication.","type":"string","enum":["authorization_code","client_credentials","token_exchange","id_jag","jwt_bearer"],"default":"authorization_code","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.grant_type","typeLabel":"enum\u003cstring>"},"provider":{"description":"Select the OAuth provider. Provider-specific configuration (e.g. Auth0 organization) is unlocked based on this value.","type":"string","enum":["custom","auth0","okta","microsoft-entra"],"default":"custom","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.provider","typeLabel":"enum\u003cstring>"},"use_organization":{"description":"When enabled, organization will be extracted from the inbound token and it will be included as the organization parameter on token endpoint requests.","type":"boolean","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.use_organization","typeLabel":"boolean"},"default_organization":{"description":"Fallback Auth0 organization when the inbound token does not include organization.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.default_organization","typeLabel":"string"},"audience":{"description":"Okta target audience (RFC 8693 'audience'). Required when the token_exchange grant type is used with the okta provider.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.audience","typeLabel":"string"},"issuer_uri":{"description":"Issuer URI of the authorization server the ID-JAG token is issued for. Sent as the 'audience' parameter on the ID-JAG token exchange.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.issuer_uri","typeLabel":"string"},"authorization_url":{"description":"URL for the authorization request","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.authorization_url","typeLabel":"string"},"token_url":{"description":"The endpoint to exchange auth code for tokens.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.token_url","typeLabel":"string"},"client_id":{"description":"client ID for OAuth2 or the TrueFoundry secret FQN containing the client ID.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.client_id","typeLabel":"string"},"client_authentication":{"description":"How the OAuth client authenticates to the token endpoint. Certificate auth is available for Microsoft Entra client_credentials and jwt_bearer (on-behalf-of).","type":"string","enum":["client_secret","certificate"],"default":"client_secret","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.client_authentication","typeLabel":"enum\u003cstring>"},"client_secret":{"description":"Client secret or the TrueFoundry secret FQN containing the client secret for OAuth2.","type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.client_secret","typeLabel":"string"},"certificate_thumbprint":{"description":"Hex SHA-1 thumbprint from the Azure portal, or the TrueFoundry secret FQN containing it.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.certificate_thumbprint","typeLabel":"string"},"private_key":{"description":"PEM private key for Microsoft Entra certificate-based client authentication, or the TrueFoundry secret FQN containing it.","type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.private_key","typeLabel":"string"},"registration_url":{"description":"URL for dynamic client registration (RFC 7591). If provided, client credentials will be obtained automatically using the Dynamic Client Registration (DCR) process.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.registration_url","typeLabel":"string"},"introspection_url":{"description":"URL to fetch token expiry (RFC 7662) when the provider does not return expires_in (e.g. Salesforce). Requires client_id and client_secret.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.introspection_url","typeLabel":"string"},"include_resource":{"description":"When enabled, the MCP server URL is sent as the resource parameter (RFC 8707) on both authorization and token endpoint requests.","type":"boolean","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.include_resource","typeLabel":"boolean"},"code_challenge_methods_supported":{"description":"List of supported PKCE code challenge methods (S256 only)","type":"array","items":{"type":"string","enum":["S256"],"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.code_challenge_methods_supported.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.code_challenge_methods_supported","typeLabel":"enum\u003cstring>[]"},"jwt_source":{"description":"Source of the JWT token to be used for verification.","type":"string","enum":["access_token","id_token"],"default":"access_token","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.jwt_source","typeLabel":"enum\u003cstring>"},"scopes":{"description":"List of scopes to request from the OAuth2 provider.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.scopes.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.scopes","typeLabel":"string[]"},"additional_token_params":{"description":"Extra key/value pairs sent on every token endpoint request (e.g. Auth0 'organization').","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.additional_token_params.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1.additional_token_params","typeLabel":"object"}},"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.1","typeLabel":"MCPServerOAuth2 · object"},{"type":"object","title":"MCPServerPassthrough","description":"Authenticate using your existing TrueFoundry account (PAT or Virtual Accounts). Your credentials are automatically passed to the MCP server.","required":["type"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=passthrough","type":"string","enum":["passthrough"],"default":"passthrough","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.2","typeLabel":"MCPServerPassthrough · object"},{"type":"object","title":"MCPServerAwsSigV4Auth","description":"Sign requests to AWS Bedrock AgentCore with AWS credentials (SigV4).","required":["type","region","auth"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=aws-sigv4","type":"string","enum":["aws-sigv4"],"default":"aws-sigv4","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.3.type","typeLabel":"enum\u003cstring>"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.3.region","typeLabel":"enum\u003cstring>"},"auth":{"type":"any","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.3.auth","typeLabel":"any"}},"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data.oneOf.3","typeLabel":"MCPServerAwsSigV4Auth · object"}],"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.auth_data","typeLabel":"MCPServerHeaderAuth · object | MCPServerOAuth2 · object | MCPServerPassthrough · object | MCPServerAwsSigV4Auth · object"},"authorized_subjects":{"description":"List of teams/users who can use this MCP server.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0.authorized_subjects","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.0","typeLabel":"MCPServerIntegration · object"},{"type":"object","title":"VirtualMCPServerIntegration","description":"Virtual MCP Server","required":["type","name","description","servers"],"x-fern-type-name":"MCPServerIntegrations","properties":{"type":{"description":"+value=integration/mcp-server/virtual","type":"string","enum":["integration/mcp-server/virtual"],"default":"integration/mcp-server/virtual","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Virtual MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.1.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this Virtual MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.1.description","typeLabel":"string"},"servers":{"description":"List of source MCP servers to include in this virtual server.","type":"array","items":{"description":"Virtual MCP Server Source","type":"object","required":["name"],"properties":{"name":{"description":"Name of the source MCP server within this group (use {provider_account_name}/{integration_name} format).","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]/[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.1.servers.items.[INDEX].name","typeLabel":"string"},"enabled_tools":{"description":"List of tools to enable from this source server.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.1.servers.items.[INDEX].enabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.1.servers.items.[INDEX].enabled_tools","typeLabel":"string[]"}},"title":"VirtualMCPServerSource","x-fern-type-name":"VirtualMCPServerSource","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.1.servers.items.[INDEX]","typeLabel":"VirtualMCPServerSource · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.1.servers","typeLabel":"VirtualMCPServerSource · object[]"},"authorized_subjects":{"description":"List of teams/users who can use this MCP server.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.1.authorized_subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.1.authorized_subjects","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX].oneOf.1","typeLabel":"VirtualMCPServerIntegration · object"}],"uniqueKey":"existingManifest.oneOf.65.integrations.items.[INDEX]","typeLabel":"MCPServerIntegration · object | VirtualMCPServerIntegration · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.65.integrations","typeLabel":"(MCPServerIntegration · object | VirtualMCPServerIntegration · object)[]"},"collaborators":{"description":"List of teams/users who can manage this MCP Server Group. These subjects can add new MCP server integrations, can edit existing ones and can also use the MCP server.","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.65.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.65.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.65.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.65.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.65","typeLabel":"MCPServerProviderAccount · object"},{"type":"object","title":"GuardrailConfigGroup","description":"The existing manifest of the resource","required":["type","name","integrations"],"x-fern-type-name":"ProviderAccounts","properties":{"type":{"description":"+uiType=Hidden\n+value=provider-account/guardrail-config-group","type":"string","enum":["provider-account/guardrail-config-group"],"default":"provider-account/guardrail-config-group","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Guardrail Config Group.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.name","typeLabel":"string"},"integrations":{"description":"List of Guardrail Configs, which are part of this Guardrail Config Group.","type":"array","items":{"oneOf":[{"type":"object","title":"OpenAIModerationsGuardrailConfig","description":"OpenAI Moderation","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.0.name","typeLabel":"string"},"type":{"description":"+value=integration/guardrail-config/openai-moderations\n+sort=50\n+uiType=Hidden","type":"string","enum":["integration/guardrail-config/openai-moderations"],"default":"integration/guardrail-config/openai-moderations","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"OpenAI API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.0.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"Your OpenAI API key for authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.0.auth_data.api_key","typeLabel":"string"}},"title":"OpenaiApiKeyAuth","x-fern-type-name":"OpenaiApiKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.0.auth_data","typeLabel":"OpenaiApiKeyAuth · object"},"operation":{"description":"The operation type for this guardrail. OpenAI Moderation guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.0.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.0.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["model"],"properties":{"model":{"description":"The model to use for the OpenAI Moderation API.","type":"string","default":"omni-moderation-latest","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.0.config.model","typeLabel":"string"},"base_url":{"description":"Optional custom base URL for OpenAI API. If not provided, the default base URL will be used.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.0.config.base_url","typeLabel":"string"},"category_thresholds":{"type":"object","additionalProperties":{"type":"number","minimum":0,"maximum":1,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.0.config.category_thresholds.additionalProperties","typeLabel":"number"},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.0.config.category_thresholds","typeLabel":"object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.0.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"OpenAI content moderation for hate, harassment, self-harm, sexual, violence, and illicit content","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.0.description","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.0","typeLabel":"OpenAIModerationsGuardrailConfig · object"},{"type":"object","title":"AWSBedrockGuardrailConfig","description":"AWS Bedrock","required":["name","type","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.1.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/aws-bedrock","type":"string","enum":["integration/guardrail-config/aws-bedrock"],"default":"integration/guardrail-config/aws-bedrock","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests.\nValidate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.1.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.1.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["guardrail_id","guardrail_version","region"],"properties":{"guardrail_id":{"description":"The unique identifier of the Bedrock Guardrail created in AWS console","type":"string","pattern":"^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.1.config.guardrail_id","typeLabel":"string"},"guardrail_version":{"description":"Version number of the guardrail to use (e.g., 2 for version 2)","type":"string","pattern":"^(([1-9][0-9]{0,7})|(DRAFT))$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.1.config.guardrail_version","typeLabel":"string"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.1.config.region","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.1.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"AWS Bedrock Guardrails for content filtering and safety policies","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.1.description","typeLabel":"string"},"auth_data":{"type":"any","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.1.auth_data","typeLabel":"any"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.1.priority","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.1","typeLabel":"AWSBedrockGuardrailConfig · object"},{"type":"object","title":"CustomGuardrailConfig","description":"Custom","required":["name","type","operation","enforcing_strategy","target","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.2.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/custom","type":"string","enum":["integration/guardrail-config/custom"],"default":"integration/guardrail-config/custom","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests.\nValidate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.2.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.2.enforcing_strategy","typeLabel":"enum\u003cstring>"},"target":{"description":"Specify whether the guardrail should be applied to the request or response. Guardrails with target \"Request\" can be only used in input guardrails and guardrails with target \"Response\" can only be used in output guardrails.","type":"string","enum":["request","response"],"default":"request","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.2.target","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["url"],"properties":{"url":{"description":"The URL of the Guardrail to send a post request to.","type":"string","pattern":"^https?:\\/\\/[^\\s\\/]+(\\/[^\\s\\/]*)*[^\\/\\s]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.2.config.url","typeLabel":"string"},"headers":{"description":"Headers for the Guardrail Server. Forwarded to the Guardrail Server as is. For example: `{\"Authorization\": \"APIKey \u003ctoken>\"}`","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.2.config.headers.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.2.config.headers","typeLabel":"object"},"config":{"description":"The config for the Guardrail Server. This is a JSON object that will be sent as a config to Guardrail Server along with the request.","type":"object","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.2.config.config","typeLabel":"object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.2.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Custom guardrail server for validate or mutate via HTTP endpoint","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.2.description","typeLabel":"string"},"auth_data":{"type":"any","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.2.auth_data","typeLabel":"any"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.2.priority","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.2","typeLabel":"CustomGuardrailConfig · object"},{"type":"object","title":"AzurePIIGuardrailConfig","description":"Azure PII","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.3.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/azure-pii","type":"string","enum":["integration/guardrail-config/azure-pii"],"default":"integration/guardrail-config/azure-pii","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.3.auth_data","typeLabel":"any"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests. Validate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["mutate","validate"],"default":"mutate","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.3.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.3.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["resource_name","api_version","domain","pii_categories","model_version","language"],"properties":{"resource_name":{"description":"Name of your Azure AI Language resource where the PII detection service is deployed (e.g., my-language-resource)","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.3.config.resource_name","typeLabel":"string"},"api_version":{"description":"API version for the PII detection API","type":"string","default":"2024-11-01","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.3.config.api_version","typeLabel":"string"},"domain":{"description":"Specialized domain for PII detection. Use phi for PHI (Protected Health Information) or none for general text","type":"string","enum":["none","phi"],"default":"none","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.3.config.domain","typeLabel":"enum\u003cstring>"},"pii_categories":{"description":"Categories of PII to detect.","type":"array","items":{"type":"string","enum":["*","ABARoutingNumber","Address","Age","ARNationalIdentityNumber","AUBankAccountNumber","AUDriversLicenseNumber","AUMedicalAccountNumber","AUPassportNumber","AUTaxFileNumber","AUBusinessNumber","AUCompanyNumber","ATIdentityCard","ATTaxIdentificationNumber","ATValueAddedTaxNumber","AzureDocumentDBAuthKey","AzureIAASDatabaseConnectionAndSQLString","AzureIoTConnectionString","AzurePublishSettingPassword","AzureRedisCacheString","AzureSAS","AzureServiceBusString","AzureStorageAccountKey","AzureStorageAccountGeneric","BankAccountNumber","BENationalNumber","BEValueAddedTaxNumber","BRCPFNumber","BRLegalEntityNumber","BRNationalIDRG","BGUniformCivilNumber","CABankAccountNumber","CADriversLicenseNumber","CAHealthServiceNumber","CAPassportNumber","CAPersonalHealthID","CASocialInsuranceNumber","CLIdentityCardNumber","CNResidentIdentityCardNumber","CreditCardNumber","HRIdentityCardNumber","HRNationalIDCardNumber","HRPersonalIdentificationNumber","CYIdentityCard","CYTaxIdentificationNumber","CZPersonalIdentityNumber","Date","DateTime","DKPersonalIdentificationNumber","DEANumber","Email","EEPersonalIdentificationCode","EUDebitCardNumber","EUDriversLicenseNumber","EUGPSCoordinates","EUNationalIdentificationNumber","EUPassportNumber","EUSocialSecurityNumber","EUTaxIdentificationNumber","FIEuropeanHealthNumber","FINationalID","FIPassportNumber","FRDriversLicenseNumber","FRHealthInsuranceNumber","FRNationalID","FRPassportNumber","FRSocialSecurityNumber","FRTaxIdentificationNumber","FRValueAddedTaxNumber","DEDriversLicenseNumber","DEPassportNumber","DEIdentityCardNumber","DETaxIdentificationNumber","DEValueAddedTaxNumber","GRNationalIDCard","GRTaxIdentificationNumber","HKIdentityCardNumber","HUValueAddedTaxNumber","HUPersonalIdentificationNumber","HUTaxIdentificationNumber","INPermanentAccountNumber","INUniqueIdentificationNumber","IDIdentityCardNumber","InternationalBankingAccountNumber","IPAddress","IEPersonalPublicServiceNumber","ILBankAccountNumber","ILNationalID","ITDriversLicenseNumber","ITFiscalCode","ITValueAddedTaxNumber","JPBankAccountNumber","JPDriversLicenseNumber","JPPassportNumber","JPResidentRegistrationNumber","JPSocialInsuranceNumber","JPMyNumberCorporate","JPMyNumberPersonal","JPResidenceCardNumber","LVPersonalCode","LTPersonalCode","LUNationalIdentificationNumberNatural","LUNationalIdentificationNumberNonNatural","MYIdentityCardNumber","MTIdentityCardNumber","MTTaxIDNumber","NLCitizensServiceNumber","NLTaxIdentificationNumber","NLValueAddedTaxNumber","NZBankAccountNumber","NZDriversLicenseNumber","NZInlandRevenueNumber","NZMinistryOfHealthNumber","NZSocialWelfareNumber","NOIdentityNumber","Organization","Person","PersonType","PHUnifiedMultiPurposeIDNumber","PhoneNumber","PLIdentityCard","PLNationalID","PLPassportNumber","PLTaxIdentificationNumber","PLREGONNumber","PTCitizenCardNumber","PTTaxIdentificationNumber","ROPersonalNumericalCode","RUPassportNumberDomestic","RUPassportNumberInternational","SANationalID","SGNationalRegistrationIdentityCardNumber","SKPersonalNumber","SITaxIdentificationNumber","SIUniqueMasterCitizenNumber","ZAIdentificationNumber","KRResidentRegistrationNumber","ESDNI","ESSocialSecurityNumber","ESTaxIdentificationNumber","AzureSQLConnectionString","SENationalID","SEPassportNumber","SETaxIdentificationNumber","SWIFTCode","CHSocialSecurityNumber","TWNationalID","TWPassportNumber","TWResidentCertificate","THPopulationIdentificationCode","TRNationalIdentificationNumber","UKDriversLicenseNumber","UKElectoralRollNumber","UKNationalHealthNumber","UKNationalInsuranceNumber","UKUniqueTaxpayerNumber","USUKPassportNumber","USBankAccountNumber","USDriversLicenseNumber","USIndividualTaxpayerIdentification","USSocialSecurityNumber","URL"],"title":"AzurePIICategory","x-fern-type-name":"AzurePIICategory","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.3.config.pii_categories.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["*"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.3.config.pii_categories","typeLabel":"enum\u003cstring>[]"},"model_version":{"description":"Version of the PII detection model to use, use latest for the newest model or specify a specific version for consistency","type":"string","default":"latest","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.3.config.model_version","typeLabel":"string"},"language":{"description":"Language code for PII detection (e.g., en for English)","type":"string","default":"en","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.3.config.language","typeLabel":"string"},"custom_host":{"description":"Custom endpoint URL for the PII detection API (optional, uses default Azure endpoint if not specified)","type":"string","pattern":"^(https?://)\\S+$","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.3.config.custom_host","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.3.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Azure AI Language PII detection and redaction for sensitive data","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.3.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.3.priority","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.3","typeLabel":"AzurePIIGuardrailConfig · object"},{"type":"object","title":"AzureContentSafetyGuardrailConfig","description":"Azure Content Safety","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.4.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/azure-content-safety","type":"string","enum":["integration/guardrail-config/azure-content-safety"],"default":"integration/guardrail-config/azure-content-safety","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.4.auth_data","typeLabel":"any"},"operation":{"description":"The operation type for this guardrail. Azure Content Safety guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.4.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.4.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["resource_name","api_version","severity_threshold","categories"],"properties":{"resource_name":{"description":"Name of your Azure Content Safety resource where the service is deployed (e.g., my-content-safety)","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.4.config.resource_name","typeLabel":"string"},"api_version":{"description":"API version for the Content Safety API","type":"string","default":"2024-09-01","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.4.config.api_version","typeLabel":"string"},"severity_threshold":{"description":"Minimum severity level (0-6) to flag content. Lower values are more restrictive (more content is blocked). 0=Safe, 2=Low risk, 4=Medium risk, 6=High risk","type":"number","default":2,"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.4.config.severity_threshold","typeLabel":"number"},"categories":{"description":"Types of harmful content to detect: Hate (hate speech), SelfHarm (self-injury), Sexual (sexual content), Violence (violent content)","type":"array","items":{"type":"string","enum":["Hate","SelfHarm","Sexual","Violence"],"title":"AzureContentSafetyCategory","x-fern-type-name":"AzureContentSafetyCategory","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.4.config.categories.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["Hate","SelfHarm","Sexual","Violence"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.4.config.categories","typeLabel":"enum\u003cstring>[]"},"custom_host":{"description":"Custom endpoint URL for the Content Safety API (optional, uses default Azure endpoint if not specified)","type":"string","pattern":"^(https?://)\\S+$","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.4.config.custom_host","typeLabel":"string"},"blocklist_names":{"description":"Names of custom blocklists created in Azure Content Safety to check text against. Leave empty if not using custom blocklists","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.4.config.blocklist_names.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.4.config.blocklist_names","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.4.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Azure Content Safety for hate, self-harm, sexual, and violence detection","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.4.description","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.4","typeLabel":"AzureContentSafetyGuardrailConfig · object"},{"type":"object","title":"AzurePromptShieldGuardrailConfig","description":"Azure Prompt Shield","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.5.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/azure-prompt-shield","type":"string","enum":["integration/guardrail-config/azure-prompt-shield"],"default":"integration/guardrail-config/azure-prompt-shield","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.5.auth_data","typeLabel":"any"},"operation":{"description":"The operation type for this guardrail. Azure Prompt Shield guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.5.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.5.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["resource_name","api_version"],"properties":{"resource_name":{"description":"Name of your Azure Content Safety resource where the Prompt Shield service is deployed (e.g., my-content-safety)","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.5.config.resource_name","typeLabel":"string"},"api_version":{"description":"API version for the Prompt Shield API","type":"string","default":"2024-09-01","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.5.config.api_version","typeLabel":"string"},"custom_host":{"description":"Custom endpoint URL for the Prompt Shield API (optional, uses default Azure endpoint if not specified)","type":"string","pattern":"^(https?://)\\S+$","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.5.config.custom_host","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.5.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Azure Prompt Shield for jailbreak and prompt injection detection","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.5.description","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.5","typeLabel":"AzurePromptShieldGuardrailConfig · object"},{"type":"object","title":"EnkryptAIGuardrailConfig","description":"Enkrypt AI","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.6.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/enkrypt-ai","type":"string","enum":["integration/guardrail-config/enkrypt-ai"],"default":"integration/guardrail-config/enkrypt-ai","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.6.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"Authentication method using Enkrypt AI API key","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.6.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"The API key for Enkrypt AI authentication","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.6.auth_data.api_key","typeLabel":"string"}},"title":"EnkryptAIKeyAuth","x-fern-type-name":"EnkryptAIKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.6.auth_data","typeLabel":"EnkryptAIKeyAuth · object"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests.\nValidate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.6.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.6.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["guardrail_name"],"properties":{"guardrail_name":{"description":"The name of the guardrail to use for the Enkrypt AI Guardrail.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.6.config.guardrail_name","typeLabel":"string"},"base_url":{"description":"Optional override for the Enkrypt AI Guardrails base URL. Defaults to https://api.enkryptai.com if not provided. Set this for region-specific deployments (e.g. https://api.au.enkryptai.com).","type":"string","pattern":"^https:\\/\\/\\S+$","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.6.config.base_url","typeLabel":"string"},"user_metadata":{"description":"Optional static key-value pairs sent as user_metadata in the Enkrypt AI detect request body. Request metadata from the X-TFY-METADATA header is also forwarded and overrides matching keys.","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.6.config.user_metadata.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.6.config.user_metadata","typeLabel":"object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.6.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Enkrypt AI guardrails for content safety and policy enforcement","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.6.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.6.priority","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.6","typeLabel":"EnkryptAIGuardrailConfig · object"},{"type":"object","title":"PaloAltoPrismaAIRSGuardrailConfig","description":"Palo Alto Prisma AIRS","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.7.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/palo-alto-prisma-airs","type":"string","enum":["integration/guardrail-config/palo-alto-prisma-airs"],"default":"integration/guardrail-config/palo-alto-prisma-airs","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.7.type","typeLabel":"enum\u003cstring>"},"auth_data":{"type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.7.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"API key for the Palo Alto Prisma AIRS account","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.7.auth_data.api_key","typeLabel":"string"}},"title":"PaloAltoPrismaAIRSKeyAuth","x-fern-type-name":"PaloAltoPrismaAIRSKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.7.auth_data","typeLabel":"PaloAltoPrismaAIRSKeyAuth · object"},"operation":{"description":"The operation type for this guardrail. Palo Alto Prisma AIRS guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.7.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.7.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["profile_name"],"properties":{"profile_name":{"description":"The profile name associated with this Guardrail Config.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.7.config.profile_name","typeLabel":"string"},"base_url":{"description":"Optional override for the base URL for Palo Alto Prisma AIRS. Defaults to https://service.api.aisecurity.paloaltonetworks.com/v1/ if not provided.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.7.config.base_url","typeLabel":"string"},"mode":{"description":"Execution mode for the guardrail. Sync waits for the guardrail check to complete before proceeding. Async triggers the check without waiting. Defaults to sync.","type":"string","enum":["sync","async"],"default":"sync","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.7.config.mode","typeLabel":"enum\u003cstring>"},"metadata_key_mapping":{"description":"Map Palo Alto AIRS metadata fields to TrueFoundry request metadata keys. Key is the Palo Alto AIRS metadata field name, value is the corresponding key from X-TFY-METADATA header on the TrueFoundry side. Example: {\"app_user\": \"user_email\", \"ai_model\": \"model_name\"}. Reserved AIRS keys: ai_model, app_user, app_name. [Docs](https://www.truefoundry.com/docs/ai-gateway/palo-alto-airs)","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.7.config.metadata_key_mapping.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.7.config.metadata_key_mapping","typeLabel":"object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.7.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Palo Alto Prisma AIRS for AI security and content validation","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.7.description","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.7","typeLabel":"PaloAltoPrismaAIRSGuardrailConfig · object"},{"type":"object","title":"FiddlerGuardrailConfig","description":"Fiddler","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.8.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/fiddler","type":"string","enum":["integration/guardrail-config/fiddler"],"default":"integration/guardrail-config/fiddler","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.8.type","typeLabel":"enum\u003cstring>"},"auth_data":{"type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.8.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"API key for the Fiddler account","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.8.auth_data.api_key","typeLabel":"string"}},"title":"FiddlerKeyAuth","x-fern-type-name":"FiddlerKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.8.auth_data","typeLabel":"FiddlerKeyAuth · object"},"operation":{"description":"The operation type for this guardrail. Fiddler guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.8.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.8.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["guard_type"],"properties":{"guard_type":{"type":"string","enum":["fiddler-safety","fiddler-response-faithfulness"],"title":"FiddlerGuardType","x-fern-type-name":"FiddlerGuardType","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.8.config.guard_type","typeLabel":"enum\u003cstring>"},"base_url":{"description":"Optional override for the Fiddler guardrails base URL. Defaults to https://guardrails.cloud.fiddler.ai if not provided. Set this if your tenant is provisioned on a different host.","type":"string","pattern":"^https?:\\/\\/\\S+$","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.8.config.base_url","typeLabel":"string"},"threshold":{"description":"Confidence threshold (0.0-1.0) for flagging content. Content scoring above the threshold will be flagged","type":"number","minimum":0,"maximum":1,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.8.config.threshold","typeLabel":"number"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.8.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Fiddler for harmful content detection or response faithfulness checks","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.8.description","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.8","typeLabel":"FiddlerGuardrailConfig · object"},{"type":"object","title":"CiscoAIDefenseGuardrailConfig","description":"Cisco AI Defense","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.9.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/cisco-ai-defense","type":"string","enum":["integration/guardrail-config/cisco-ai-defense"],"default":"integration/guardrail-config/cisco-ai-defense","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.9.type","typeLabel":"enum\u003cstring>"},"auth_data":{"type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.9.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"API key generated from the Cisco AI Defense UI","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.9.auth_data.api_key","typeLabel":"string"}},"title":"CiscoAIDefenseKeyAuth","x-fern-type-name":"CiscoAIDefenseKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.9.auth_data","typeLabel":"CiscoAIDefenseKeyAuth · object"},"operation":{"description":"Cisco AI Defense inspects and validates content without modifying it.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.9.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.9.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["region"],"properties":{"region":{"description":"Cisco AI Defense regional API endpoint.","type":"string","enum":["us","eu","ap"],"default":"us","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.9.config.region","typeLabel":"enum\u003cstring>"},"metadata":{"description":"Additional metadata forwarded to Cisco AI Defense. The authenticated TrueFoundry user is added automatically.","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.9.config.metadata.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.9.config.metadata","typeLabel":"object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.9.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Cisco AI Defense for security, safety, privacy, and relevance inspection","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.9.description","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.9","typeLabel":"CiscoAIDefenseGuardrailConfig · object"},{"type":"object","title":"CrowdStrikeAIDRGuardrailConfig","description":"CrowdStrike AIDR","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.10.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/crowdstrike-aidr","type":"string","enum":["integration/guardrail-config/crowdstrike-aidr"],"default":"integration/guardrail-config/crowdstrike-aidr","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.10.type","typeLabel":"enum\u003cstring>"},"auth_data":{"type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.10.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"Bearer token for the CrowdStrike AIDR account","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.10.auth_data.api_key","typeLabel":"string"}},"title":"CrowdStrikeAIDRKeyAuth","x-fern-type-name":"CrowdStrikeAIDRKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.10.auth_data","typeLabel":"CrowdStrikeAIDRKeyAuth · object"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails check for blocked content. Mutate guardrails additionally redact sensitive content (PII) and support unredaction on output.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.10.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.10.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","properties":{"base_url":{"description":"The CrowdStrike API base URL for AIDR. Varies by region: US-1 (https://api.crowdstrike.com/aidr/aiguard), US-2 (https://api.us-2.crowdstrike.com/aidr/aiguard), EU-1 (https://api.eu-1.crowdstrike.com/aidr/aiguard).","type":"string","pattern":"^https?:\\/\\/\\S+$","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.10.config.base_url","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.10.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"CrowdStrike AIDR AI Guard for content security and PII protection","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.10.description","typeLabel":"string"},"enforce_on_detection":{"description":"When enabled, the gateway treats any detector firing as a violation even when AIDR returns blocked=false. Set to false to follow AIDR's policy verdict.","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.10.enforce_on_detection","typeLabel":"boolean"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.10.priority","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.10","typeLabel":"CrowdStrikeAIDRGuardrailConfig · object"},{"type":"object","title":"PatronusGuardrailConfig","description":"Patronus","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.11.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/patronus","type":"string","enum":["integration/guardrail-config/patronus"],"default":"integration/guardrail-config/patronus","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.11.type","typeLabel":"enum\u003cstring>"},"auth_data":{"type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.11.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"API key for the Patronus account","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.11.auth_data.api_key","typeLabel":"string"}},"title":"PatronusKeyAuth","x-fern-type-name":"PatronusKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.11.auth_data","typeLabel":"PatronusKeyAuth · object"},"operation":{"description":"The operation type for this guardrail. Patronus guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.11.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.11.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["target","evaluators"],"properties":{"target":{"description":"Where to apply evaluation: request (evaluate user input) or response (evaluate model response)","type":"string","enum":["response","request"],"default":"response","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.11.config.target","typeLabel":"enum\u003cstring>"},"evaluators":{"description":"Patronus evaluators guard against GenAI failures by checking for evaluation criteria, refer to [docs](https://docs.patronus.ai/docs/evaluators/reference_guide)","type":"array","items":{"type":"any","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.11.config.evaluators.items.[INDEX]","typeLabel":"any"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.11.config.evaluators","typeLabel":"any[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.11.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Patronus evaluators for relevance, safety, PII, PHI, toxicity, and more","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.11.description","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.11","typeLabel":"PatronusGuardrailConfig · object"},{"type":"object","title":"SecretDetectionGuardrailConfig","description":"Secrets Detection","required":["name","type","operation","enforcing_strategy"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.12.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/secret-detection","type":"string","enum":["integration/guardrail-config/secret-detection"],"default":"integration/guardrail-config/secret-detection","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.12.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests. Validate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.12.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.12.enforcing_strategy","typeLabel":"enum\u003cstring>"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Detects likely credentials/secrets (AWS keys, API keys, JWT tokens, private keys)","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.12.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.12.priority","typeLabel":"integer"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","properties":{"redaction_text":{"description":"Text to use when redacting detected secrets in logs and error messages. Defaults to '[REDACTED]'.Only applicable in mutate mode.","type":"string","default":"[REDACTED]","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.12.config.redaction_text","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.12.config","typeLabel":"object"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.12","typeLabel":"SecretDetectionGuardrailConfig · object"},{"type":"object","title":"CodeSafetyLinterGuardrailConfig","description":"Code Safety Linter","required":["name","type","operation","enforcing_strategy"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.13.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/code-safety-linter","type":"string","enum":["integration/guardrail-config/code-safety-linter"],"default":"integration/guardrail-config/code-safety-linter","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.13.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type for this guardrail. Code Safety Linter guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.13.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.13.enforcing_strategy","typeLabel":"enum\u003cstring>"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Detects unsafe code patterns in tool outputs (eval, exec, os.system, subprocess, rm -rf)","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.13.description","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.13","typeLabel":"CodeSafetyLinterGuardrailConfig · object"},{"type":"object","title":"SQLSanitizerGuardrailConfig","description":"SQL Sanitizer","required":["name","type","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.14.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/sql-sanitizer","type":"string","enum":["integration/guardrail-config/sql-sanitizer"],"default":"integration/guardrail-config/sql-sanitizer","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.14.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"Validate (detect and block) or Mutate (detect, sanitize comments, and continue).","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.14.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.14.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"type":"object","properties":{"block_drop":{"description":"Block SQL DROP statements as dangerous operations.","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config.block_drop","typeLabel":"boolean"},"block_truncate":{"description":"Block SQL TRUNCATE statements as dangerous operations.","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config.block_truncate","typeLabel":"boolean"},"block_alter":{"description":"Block SQL ALTER statements as dangerous operations.","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config.block_alter","typeLabel":"boolean"},"block_grant":{"description":"Block SQL GRANT statements as dangerous operations.","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config.block_grant","typeLabel":"boolean"},"block_revoke":{"description":"Block SQL REVOKE statements as dangerous operations.","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config.block_revoke","typeLabel":"boolean"},"strip_comments":{"description":"Remove SQL comments (-- and block comments) from queries. In mutate mode, comments are stripped from the output.","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config.strip_comments","typeLabel":"boolean"},"block_delete_without_where":{"description":"Flag DELETE FROM statements that lack a WHERE clause as potentially dangerous.","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config.block_delete_without_where","typeLabel":"boolean"},"block_update_without_where":{"description":"Flag UPDATE statements that lack a WHERE clause as potentially dangerous.","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config.block_update_without_where","typeLabel":"boolean"},"require_parameterization":{"description":"Detect naive string interpolation patterns (+, %., {}) that may indicate SQL injection vulnerabilities.","type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config.require_parameterization","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.14.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Detects and sanitizes risky SQL patterns (DROP, TRUNCATE, DELETE/UPDATE without WHERE, string interpolation)","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.14.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.14.priority","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.14","typeLabel":"SQLSanitizerGuardrailConfig · object"},{"type":"object","title":"RegexGuardrailConfig","description":"Regex Pattern Match","required":["name","type","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.15.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/regex","type":"string","enum":["integration/guardrail-config/regex"],"default":"integration/guardrail-config/regex","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.15.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"Validate blocks when pattern matches. Mutate replaces matched text and continues.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.15.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.15.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","properties":{"preset_patterns":{"description":"Select one or more common regex patterns from the predefined list.","type":"object","required":["presets"],"properties":{"presets":{"description":"Select one or more common regex patterns from the predefined list.","type":"array","items":{"type":"string","enum":["us_ssn","us_ssn_no_dash","email","us_phone","india_aadhaar","india_pan","visa","mastercard","amex","discover","credit_card","aws_access_key","aws_secret_key","github_token","slack_token","generic_api_key","ipv4","ipv6","url","passport_us","passport_uk","passport_germany","passport_france","passport_netherlands","passport_canada","passport_india","passport_australia","passport_china","passport_japan","gender_sexual_orientation","race_ethnicity_national_origin","religion","age_discrimination","disability","marital_family_status","military_status","public_assistance","weapons_firearms","weapons_other","explosives","violence_threats","terrorism","self_harm_suicide","illegal_activities","harassment_hate"],"title":"PresetRegexPatternEnum","x-fern-type-name":"PresetRegexPatternEnum","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.15.config.preset_patterns.presets.items.[INDEX]","typeLabel":"enum\u003cstring>"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.15.config.preset_patterns.presets","typeLabel":"enum\u003cstring>[]"}},"title":"PresetRegexPattern","x-fern-type-name":"PresetRegexPattern","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.15.config.preset_patterns","typeLabel":"PresetRegexPattern · object"},"custom_patterns":{"description":"Enter your own regex patterns to match against content, each with its own redaction text (used in mutate mode).","type":"array","items":{"description":"Custom Regex Pattern","type":"object","required":["pattern"],"properties":{"pattern":{"description":"A custom regex pattern to match against content (e.g., \"\\\\b\\\\d{3}-\\\\d{2}-\\\\d{4}\\\\b\" for SSN)","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.15.config.custom_patterns.items.[INDEX].pattern","typeLabel":"string"},"redaction_text":{"description":"Text to use when redacting matched content (only applicable in mutate mode). Defaults to '[REDACTED]'.","type":"string","default":"[REDACTED]","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.15.config.custom_patterns.items.[INDEX].redaction_text","typeLabel":"string"}},"title":"CustomRegexPattern","x-fern-type-name":"CustomRegexPattern","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.15.config.custom_patterns.items.[INDEX]","typeLabel":"CustomRegexPattern · object"},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.15.config.custom_patterns","typeLabel":"CustomRegexPattern · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.15.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Regex pattern matching for content filtering or redaction","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.15.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.15.priority","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.15","typeLabel":"RegexGuardrailConfig · object"},{"type":"object","title":"TfyContentModerationGuardrailConfig","description":"Content Moderation","required":["name","type","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.16.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/tfy-content-moderation","type":"string","enum":["integration/guardrail-config/tfy-content-moderation"],"default":"integration/guardrail-config/tfy-content-moderation","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.16.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type for this guardrail. TrueFoundry Content Moderation guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.16.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.16.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["severity_threshold","categories"],"properties":{"severity_threshold":{"description":"Minimum severity level (0-6) to flag content. Lower values are more restrictive (more content is blocked). 0=Safe, 2=Low risk, 4=Medium risk, 6=High risk","type":"number","default":2,"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.16.config.severity_threshold","typeLabel":"number"},"categories":{"description":"Types of harmful content to detect: Hate (hate speech), SelfHarm (self-injury), Sexual (sexual content), Violence (violent content)","type":"array","items":{"type":"string","enum":["Hate","SelfHarm","Sexual","Violence"],"title":"AzureContentSafetyCategory","x-fern-type-name":"AzureContentSafetyCategory","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.16.config.categories.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["Hate","SelfHarm","Sexual","Violence"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.16.config.categories","typeLabel":"enum\u003cstring>[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.16.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Content moderation guardrail, managed by TrueFoundry","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.16.description","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.16","typeLabel":"TfyContentModerationGuardrailConfig · object"},{"type":"object","title":"TfyPIIGuardrailConfig","description":"PII/PHI","required":["name","type","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.17.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/tfy-pii","type":"string","enum":["integration/guardrail-config/tfy-pii"],"default":"integration/guardrail-config/tfy-pii","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.17.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests. Validate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["mutate","validate"],"default":"mutate","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.17.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.17.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["pii_categories"],"properties":{"pii_categories":{"description":"Categories of PII to detect.","type":"array","items":{"type":"string","enum":["*","ABARoutingNumber","Address","Age","ARNationalIdentityNumber","AUBankAccountNumber","AUDriversLicenseNumber","AUMedicalAccountNumber","AUPassportNumber","AUTaxFileNumber","AUBusinessNumber","AUCompanyNumber","ATIdentityCard","ATTaxIdentificationNumber","ATValueAddedTaxNumber","AzureDocumentDBAuthKey","AzureIAASDatabaseConnectionAndSQLString","AzureIoTConnectionString","AzurePublishSettingPassword","AzureRedisCacheString","AzureSAS","AzureServiceBusString","AzureStorageAccountKey","AzureStorageAccountGeneric","BankAccountNumber","BENationalNumber","BEValueAddedTaxNumber","BRCPFNumber","BRLegalEntityNumber","BRNationalIDRG","BGUniformCivilNumber","CABankAccountNumber","CADriversLicenseNumber","CAHealthServiceNumber","CAPassportNumber","CAPersonalHealthID","CASocialInsuranceNumber","CLIdentityCardNumber","CNResidentIdentityCardNumber","CreditCardNumber","HRIdentityCardNumber","HRNationalIDCardNumber","HRPersonalIdentificationNumber","CYIdentityCard","CYTaxIdentificationNumber","CZPersonalIdentityNumber","Date","DateTime","DKPersonalIdentificationNumber","DEANumber","Email","EEPersonalIdentificationCode","EUDebitCardNumber","EUDriversLicenseNumber","EUGPSCoordinates","EUNationalIdentificationNumber","EUPassportNumber","EUSocialSecurityNumber","EUTaxIdentificationNumber","FIEuropeanHealthNumber","FINationalID","FIPassportNumber","FRDriversLicenseNumber","FRHealthInsuranceNumber","FRNationalID","FRPassportNumber","FRSocialSecurityNumber","FRTaxIdentificationNumber","FRValueAddedTaxNumber","DEDriversLicenseNumber","DEPassportNumber","DEIdentityCardNumber","DETaxIdentificationNumber","DEValueAddedTaxNumber","GRNationalIDCard","GRTaxIdentificationNumber","HKIdentityCardNumber","HUValueAddedTaxNumber","HUPersonalIdentificationNumber","HUTaxIdentificationNumber","INPermanentAccountNumber","INUniqueIdentificationNumber","IDIdentityCardNumber","InternationalBankingAccountNumber","IPAddress","IEPersonalPublicServiceNumber","ILBankAccountNumber","ILNationalID","ITDriversLicenseNumber","ITFiscalCode","ITValueAddedTaxNumber","JPBankAccountNumber","JPDriversLicenseNumber","JPPassportNumber","JPResidentRegistrationNumber","JPSocialInsuranceNumber","JPMyNumberCorporate","JPMyNumberPersonal","JPResidenceCardNumber","LVPersonalCode","LTPersonalCode","LUNationalIdentificationNumberNatural","LUNationalIdentificationNumberNonNatural","MYIdentityCardNumber","MTIdentityCardNumber","MTTaxIDNumber","NLCitizensServiceNumber","NLTaxIdentificationNumber","NLValueAddedTaxNumber","NZBankAccountNumber","NZDriversLicenseNumber","NZInlandRevenueNumber","NZMinistryOfHealthNumber","NZSocialWelfareNumber","NOIdentityNumber","Organization","Person","PersonType","PHUnifiedMultiPurposeIDNumber","PhoneNumber","PLIdentityCard","PLNationalID","PLPassportNumber","PLTaxIdentificationNumber","PLREGONNumber","PTCitizenCardNumber","PTTaxIdentificationNumber","ROPersonalNumericalCode","RUPassportNumberDomestic","RUPassportNumberInternational","SANationalID","SGNationalRegistrationIdentityCardNumber","SKPersonalNumber","SITaxIdentificationNumber","SIUniqueMasterCitizenNumber","ZAIdentificationNumber","KRResidentRegistrationNumber","ESDNI","ESSocialSecurityNumber","ESTaxIdentificationNumber","AzureSQLConnectionString","SENationalID","SEPassportNumber","SETaxIdentificationNumber","SWIFTCode","CHSocialSecurityNumber","TWNationalID","TWPassportNumber","TWResidentCertificate","THPopulationIdentificationCode","TRNationalIdentificationNumber","UKDriversLicenseNumber","UKElectoralRollNumber","UKNationalHealthNumber","UKNationalInsuranceNumber","UKUniqueTaxpayerNumber","USUKPassportNumber","USBankAccountNumber","USDriversLicenseNumber","USIndividualTaxpayerIdentification","USSocialSecurityNumber","URL"],"title":"AzurePIICategory","x-fern-type-name":"AzurePIICategory","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.17.config.pii_categories.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["*"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.17.config.pii_categories","typeLabel":"enum\u003cstring>[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.17.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"PII detection and redaction guardrail, managed by TrueFoundry","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.17.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.17.priority","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.17","typeLabel":"TfyPIIGuardrailConfig · object"},{"type":"object","title":"TfyPromptInjectionGuardrailConfig","description":"Prompt Injection","required":["name","type","operation","enforcing_strategy"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.18.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/tfy-prompt-injection","type":"string","enum":["integration/guardrail-config/tfy-prompt-injection"],"default":"integration/guardrail-config/tfy-prompt-injection","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.18.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type for this guardrail. TrueFoundry Prompt Shield guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.18.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.18.enforcing_strategy","typeLabel":"enum\u003cstring>"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Prompt injection guardrail, managed by TrueFoundry","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.18.description","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.18","typeLabel":"TfyPromptInjectionGuardrailConfig · object"},{"type":"object","title":"TfyMetadataGuardrailConfig","description":"Request Metadata validation","required":["name","type","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"Lowercase letters, digits, and hyphens. 3 to 36 characters.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.19.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/tfy-metadata","type":"string","enum":["integration/guardrail-config/tfy-metadata"],"default":"integration/guardrail-config/tfy-metadata","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.19.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type for this guardrail. Metadata Validation guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.19.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.19.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["allow_unknown_keys","keys"],"properties":{"allow_unknown_keys":{"description":"Allow keys not mentioned in the spec","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.19.config.allow_unknown_keys","typeLabel":"boolean"},"keys":{"description":"Conditions on keys present in the `x-tfy-metadata` header.","type":"object","additionalProperties":{"type":"any","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.19.config.keys.additionalProperties","typeLabel":"any"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.19.config.keys","typeLabel":"object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.19.config","typeLabel":"object"},"description":{"description":"What does this guardrail enforce?","type":"string","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.19.description","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.19","typeLabel":"TfyMetadataGuardrailConfig · object"},{"type":"object","title":"CedarGuardrailConfig","description":"Cedar","required":["name","type","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.20.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/cedar","type":"string","enum":["integration/guardrail-config/cedar"],"default":"integration/guardrail-config/cedar","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.20.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type for this guardrail. Cedar guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.20.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.20.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["policy"],"properties":{"policy":{"description":"Enter a Cedar policy string to define access control rules. Supports principal types (user, team, virtualaccount), MCPTool actions, MCPServer resources, and when/unless clauses, refer to [Docs](https://www.truefoundry.com/docs/ai-gateway/cedar-guardrails)","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.20.config.policy","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.20.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Enforces access control policies using Cedar policy language","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.20.description","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.20","typeLabel":"CedarGuardrailConfig · object"},{"type":"object","title":"OPAGuardrailConfig","description":"OPA","required":["name","type","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.21.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/opa","type":"string","enum":["integration/guardrail-config/opa"],"default":"integration/guardrail-config/opa","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.21.type","typeLabel":"enum\u003cstring>"},"operation":{"description":"The operation type for this guardrail. OPA guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.21.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.21.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["opa_url","policy_path"],"properties":{"opa_url":{"description":"The base URL of the OPA server (e.g., https://opa.example.com:8181). The policy will be queried at {opa_url}/v1/data/{policy_path}.","type":"string","pattern":"^https?:\\/\\/[^\\s\\/]+(\\/[^\\s\\/]*)*[^\\/\\s]?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.21.config.opa_url","typeLabel":"string"},"policy_path":{"description":"The policy path to evaluate in OPA (e.g., \"authz/allow\", \"guardrails/validate\"). This corresponds to the package and rule name in your Rego policy. The full query URL will be {opa_url}/v1/data/{policy_path}.","type":"string","pattern":"^[a-zA-Z_][a-zA-Z0-9_]*(\\/[a-zA-Z_][a-zA-Z0-9_]*)*$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.21.config.policy_path","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.21.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Open Policy Agent (OPA) for policy-based access control and validation","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.21.description","typeLabel":"string"},"auth_data":{"type":"any","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.21.auth_data","typeLabel":"any"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.21","typeLabel":"OPAGuardrailConfig · object"},{"type":"object","title":"GoogleModelArmorGuardrailConfig","description":"Google Model Armor","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.22.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/google-model-armor","type":"string","enum":["integration/guardrail-config/google-model-armor"],"default":"integration/guardrail-config/google-model-armor","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.22.type","typeLabel":"enum\u003cstring>"},"auth_data":{"type":"any","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.22.auth_data","typeLabel":"any"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.22.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.22.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["project_id","location","template_id"],"properties":{"project_id":{"description":"The Google Cloud project ID where Model Armor is enabled","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.22.config.project_id","typeLabel":"string"},"location":{"type":"string","enum":["global","africa-south1","asia-east1","asia-east2","asia-northeast1","asia-northeast2","asia-northeast3","asia-south1","asia-south2","asia-southeast1","asia-southeast2","asia-southeast3","australia-southeast1","australia-southeast2","europe-central2","europe-north1","europe-north2","europe-southwest1","europe-west1","europe-west2","europe-west3","europe-west4","europe-west6","europe-west8","europe-west9","europe-west10","europe-west12","me-central1","me-central2","me-west1","northamerica-northeast1","northamerica-northeast2","northamerica-south1","southamerica-east1","southamerica-west1","us-central1","us-east1","us-east4","us-east5","us-south1","us-west1","us-west2","us-west3","us-west4"],"title":"GCPRegion","x-fern-type-name":"GCPRegion","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.22.config.location","typeLabel":"enum\u003cstring>"},"template_id":{"description":"The Model Armor template name that defines which filters and confidence thresholds to apply (e.g. my-template)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.22.config.template_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.22.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Google Cloud Model Armor for prompt injection, harmful content, PII, and malicious URI detection","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.22.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.22.priority","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.22","typeLabel":"GoogleModelArmorGuardrailConfig · object"},{"type":"object","title":"GraySwanCygnalGuardrailConfig","description":"GraySwan Cygnal","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.23.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/grayswan-cygnal","type":"string","enum":["integration/guardrail-config/grayswan-cygnal"],"default":"integration/guardrail-config/grayswan-cygnal","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.23.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"GraySwan Cygnal API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.23.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"GraySwan API key for Cygnal access","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.23.auth_data.api_key","typeLabel":"string"}},"title":"GraySwanCygnalApiKeyAuth","x-fern-type-name":"GraySwanCygnalApiKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.23.auth_data","typeLabel":"GraySwanCygnalApiKeyAuth · object"},"operation":{"description":"The operation type for this guardrail. GraySwan Cygnal guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.23.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.23.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["reasoning_mode"],"properties":{"reasoning_mode":{"description":"Controls whether Cygnal uses internal reasoning steps before determining if content violates policy. \"off\" is fastest, \"hybrid\" adds moderate reasoning, \"thinking\" performs guided reasoning for highest quality.","type":"string","enum":["off","hybrid","thinking"],"default":"off","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.23.config.reasoning_mode","typeLabel":"enum\u003cstring>"},"base_url":{"description":"Optional override for the Cygnal monitor endpoint. Defaults to https://api.grayswan.ai/cygnal/monitor if not provided.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.23.config.base_url","typeLabel":"string"},"policy_ids":{"description":"Custom policy IDs to use for monitoring. Rules from all policies are merged in order, with earlier policies taking precedence. If not provided, the default Basic Content Safety policy is applied, refer to [Docs](https://docs.grayswan.ai/cygnal/monitor-requests)","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.23.config.policy_ids.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.23.config.policy_ids","typeLabel":"string[]"},"rules":{"description":"Custom rule definitions for monitoring. Each key is a rule name and its value is the rule description, refer to [Docs](https://docs.grayswan.ai/cygnal/monitor-requests)","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.23.config.rules.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.23.config.rules","typeLabel":"object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.23.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"GraySwan Cygnal for policy violation and content safety monitoring","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.23.description","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.23","typeLabel":"GraySwanCygnalGuardrailConfig · object"},{"type":"object","title":"CatoNetworksGuardrailConfig","description":"Cato Networks","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.24.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/cato-networks","type":"string","enum":["integration/guardrail-config/cato-networks"],"default":"integration/guardrail-config/cato-networks","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.24.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"Cato Networks API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.24.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"API key issued by Cato for this AI Security guard. Sent as a Bearer token. The key secret is never forwarded to Cato as the gateway key alias.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.24.auth_data.api_key","typeLabel":"string"}},"title":"CatoNetworksApiKeyAuth","x-fern-type-name":"CatoNetworksApiKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.24.auth_data","typeLabel":"CatoNetworksApiKeyAuth · object"},"operation":{"description":"Validate treats a Cato block or anonymize action as a violation and leaves the payload unchanged. Mutate also replaces the messages with Cato's anonymized versions and continues.\nValidate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["mutate","validate"],"default":"mutate","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.24.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.24.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["base_url"],"properties":{"base_url":{"description":"Cato API base URL. Use the regional Cato endpoint or the URL of a Cato Outpost in your environment. Trailing slashes are ignored.","type":"string","pattern":"^https?:\\/\\/\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.24.config.base_url","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.24.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Cato AI Security runtime protection for prompts and model responses","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.24.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.24.priority","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.24","typeLabel":"CatoNetworksGuardrailConfig · object"},{"type":"object","title":"NomaSecurityGuardrailConfig","description":"Noma Security","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.25.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/noma-security","type":"string","enum":["integration/guardrail-config/noma-security"],"default":"integration/guardrail-config/noma-security","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.25.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"Noma Security API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.25.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"Noma scoped access token with truefoundry_guardrail scope (sent as Bearer)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.25.auth_data.api_key","typeLabel":"string"}},"title":"NomaSecurityApiKeyAuth","x-fern-type-name":"NomaSecurityApiKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.25.auth_data","typeLabel":"NomaSecurityApiKeyAuth · object"},"operation":{"description":"Validate blocks policy denials. Mutate also applies complete masked request or response payloads returned by Noma.\nValidate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.25.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.25.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","properties":{"base_url":{"description":"Optional override for the Noma API base URL. Defaults to https://api.noma.security if not provided.","type":"string","pattern":"^https?:\\/\\/\\S+$","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.25.config.base_url","typeLabel":"string"},"application_id":{"description":"Literal applicationId sent in the x-noma-context header and used to select the Noma Runtime Protection profile. Defaults to truefoundry.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.25.config.application_id","typeLabel":"string"},"session_id":{"description":"Literal sessionId sent in the x-noma-context header for session attribution in Noma. Optional.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.25.config.session_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.25.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Noma TrueFoundry Guardrail for prompt, response, and tool content safety","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.25.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.25.priority","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.25","typeLabel":"NomaSecurityGuardrailConfig · object"},{"type":"object","title":"CalypsoAIGuardrailConfig","description":"CalypsoAI (F5 AI Security)","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.26.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/calypsoai","type":"string","enum":["integration/guardrail-config/calypsoai"],"default":"integration/guardrail-config/calypsoai","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.26.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"CalypsoAI API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.26.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"CalypsoAI API token from Configuration → API tokens","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.26.auth_data.api_key","typeLabel":"string"}},"title":"CalypsoAIApiKeyAuth","x-fern-type-name":"CalypsoAIApiKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.26.auth_data","typeLabel":"CalypsoAIApiKeyAuth · object"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests (forward redactedInput).\nValidate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.26.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.26.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","properties":{"base_url":{"description":"Optional override for the CalypsoAI base URL. Defaults to https://www.us1.calypsoai.app if not provided. Set this if your tenant is provisioned in another region (e.g. https://www.eu1.calypsoai.app).","type":"string","pattern":"^https?:\\/\\/\\S+$","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.26.config.base_url","typeLabel":"string"},"project":{"description":"Optional CalypsoAI project ID or friendly ID. Omit to use the tenant's global default scanner configuration.","type":"string","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.26.config.project","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.26.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"F5 AI Security (CalypsoAI) for prompt injection, jailbreak, PII, and policy-violation scanning","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.26.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.26.priority","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.26","typeLabel":"CalypsoAIGuardrailConfig · object"},{"type":"object","title":"AktoGuardrailConfig","description":"Akto","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.27.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/akto","type":"string","enum":["integration/guardrail-config/akto"],"default":"integration/guardrail-config/akto","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.27.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"Authentication method using an Akto JWT token","type":"object","required":["type","token"],"properties":{"type":{"description":"+value=token","type":"string","enum":["token"],"default":"token","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.27.auth_data.type","typeLabel":"enum\u003cstring>"},"token":{"description":"JWT token for authenticating with the Akto guardrails service","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.27.auth_data.token","typeLabel":"string"}},"title":"AktoTokenAuth","x-fern-type-name":"AktoTokenAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.27.auth_data","typeLabel":"AktoTokenAuth · object"},"operation":{"description":"The operation type for this guardrail. Akto guardrails can only be used for validation.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.27.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.27.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["base_url"],"properties":{"base_url":{"description":"The base URL of the Akto guardrails service (e.g. https://your-akto-host:port)","type":"string","pattern":"^https?:\\/\\/\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.27.config.base_url","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.27.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Akto guardrail for LLM security, prompt injection detection, and policy violation monitoring","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.27.description","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.27","typeLabel":"AktoGuardrailConfig · object"},{"type":"object","title":"TrojAIGuardrailConfig","description":"TrojAI","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.28.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/trojai","type":"string","enum":["integration/guardrail-config/trojai"],"default":"integration/guardrail-config/trojai","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.28.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"Authentication using a TrojAI firewall client ID (x-eag-clientid)","type":"object","required":["type","client_id"],"properties":{"type":{"description":"+value=client-id","type":"string","enum":["client-id"],"default":"client-id","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.28.auth_data.type","typeLabel":"enum\u003cstring>"},"client_id":{"description":"The client ID that identifies your TrojAI firewall policy (sent as x-eag-clientid header)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.28.auth_data.client_id","typeLabel":"string"}},"title":"TrojAIClientIdAuth","x-fern-type-name":"TrojAIClientIdAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.28.auth_data","typeLabel":"TrojAIClientIdAuth · object"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests.\nValidate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.28.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.28.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["base_url"],"properties":{"base_url":{"description":"The base URL of the TrojAI firewall (e.g. https://your-trojai-firewall-host)","type":"string","pattern":"^https?:\\/\\/\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.28.config.base_url","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.28.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"TrojAI DEFEND firewall for real-time AI security","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.28.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.28.priority","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.28","typeLabel":"TrojAIGuardrailConfig · object"},{"type":"object","title":"HiddenLayerGuardrailConfig","description":"HiddenLayer","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.29.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/hiddenlayer","type":"string","enum":["integration/guardrail-config/hiddenlayer"],"default":"integration/guardrail-config/hiddenlayer","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.29.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"Authentication using HiddenLayer OAuth2 client credentials (API key from the AISec Platform Console)","type":"object","required":["type","client_id","client_secret"],"properties":{"type":{"description":"+value=oauth2-client-credentials","type":"string","enum":["oauth2-client-credentials"],"default":"oauth2-client-credentials","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.29.auth_data.type","typeLabel":"enum\u003cstring>"},"client_id":{"description":"OAuth2 client ID from the HiddenLayer AISec Platform Console (API Keys tab)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.29.auth_data.client_id","typeLabel":"string"},"client_secret":{"description":"OAuth2 client secret from the HiddenLayer AISec Platform Console (API Keys tab)","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.29.auth_data.client_secret","typeLabel":"string"}},"title":"HiddenLayerOAuth2ClientCredentialsAuth","x-fern-type-name":"HiddenLayerOAuth2ClientCredentialsAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.29.auth_data","typeLabel":"HiddenLayerOAuth2ClientCredentialsAuth · object"},"operation":{"description":"The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests (apply HiddenLayer redactions).\nValidate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.29.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.29.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["project_id","region"],"properties":{"project_id":{"description":"HiddenLayer project ID or alias. Selects the AISec policy that controls detection, redaction, and blocking.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.29.config.project_id","typeLabel":"string"},"region":{"description":"HiddenLayer regional API endpoint (us: api.us.hiddenlayer.ai, eu: api.eu.hiddenlayer.ai).","type":"string","enum":["us","eu"],"default":"us","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.29.config.region","typeLabel":"enum\u003cstring>"},"requester_id":{"description":"Optional fixed value sent to HiddenLayer as the requester of every call. Overrides the authenticated caller. Leave empty to attribute calls to the caller.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.29.config.requester_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.29.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"HiddenLayer AIDR for prompt injection, PII, and policy-violation detection with policy-driven redaction","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.29.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.29.priority","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.29","typeLabel":"HiddenLayerGuardrailConfig · object"},{"type":"object","title":"FireworksGuardrailConfig","description":"Fireworks","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.30.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/fireworks","type":"string","enum":["integration/guardrail-config/fireworks"],"default":"integration/guardrail-config/fireworks","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.30.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"Authentication using a Fireworks API key","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.30.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"Fireworks API key (sent as a Bearer token). Create one in the Fireworks console.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.30.auth_data.api_key","typeLabel":"string"}},"title":"FireworksApiKeyAuth","x-fern-type-name":"FireworksApiKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.30.auth_data","typeLabel":"FireworksApiKeyAuth · object"},"operation":{"description":"Fireworks safety models classify content without modifying it.","type":"string","enum":["validate"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.30.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.30.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","required":["model","model_type"],"properties":{"model":{"description":"Deployment name from your Fireworks account (accounts/\u003caccount>/deployments/\u003cdeployment>). Safety models run on dedicated (on-demand) deployments only.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.30.config.model","typeLabel":"string"},"model_type":{"description":"gpt-oss-safeguard classifies content against the policy below. llama-guard classifies against Meta's fixed hazard categories (S1 to S14 for Llama Guard 3 8B) and ignores the policy.","type":"string","enum":["gpt-oss-safeguard","llama-guard"],"default":"gpt-oss-safeguard","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.30.config.model_type","typeLabel":"enum\u003cstring>"},"policy":{"description":"Safety policy the model applies (required for gpt-oss-safeguard, ignored for llama-guard). Describe what violates and what is safe, with examples. Do not put secrets in the policy.","type":"string","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.30.config.policy","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.30.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Fireworks-hosted safety model (gpt-oss-safeguard or Llama Guard) for policy-based content classification","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.30.description","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.30","typeLabel":"FireworksGuardrailConfig · object"},{"type":"object","title":"ZscalerAIGuardGuardrailConfig","description":"Zscaler AI Guard","required":["name","type","auth_data","operation","enforcing_strategy","config"],"x-fern-type-name":"GuardrailConfigIntegrations","properties":{"name":{"description":"The name of the Guardrail Config.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.31.name","typeLabel":"string"},"type":{"description":"+uiType=Hidden\n+value=integration/guardrail-config/zscaler-ai-guard","type":"string","enum":["integration/guardrail-config/zscaler-ai-guard"],"default":"integration/guardrail-config/zscaler-ai-guard","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.31.type","typeLabel":"enum\u003cstring>"},"auth_data":{"description":"Zscaler AI Guard API Key Auth","type":"object","required":["type","api_key"],"properties":{"type":{"description":"+value=api-key","type":"string","enum":["api-key"],"default":"api-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.31.auth_data.type","typeLabel":"enum\u003cstring>"},"api_key":{"description":"Zscaler AI Guard API key. Sent as a Bearer token against the AI Guard detection API.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.31.auth_data.api_key","typeLabel":"string"}},"title":"ZscalerAIGuardApiKeyAuth","x-fern-type-name":"ZscalerAIGuardApiKeyAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.31.auth_data","typeLabel":"ZscalerAIGuardApiKeyAuth · object"},"operation":{"description":"Validate treats a Zscaler BLOCK action as a violation and leaves the payload unchanged. Mutate also replaces content with Zscaler maskedContent when returned.\nValidate guardrails are run in parallel while mutate guardrails are run sequentially.","type":"string","enum":["validate","mutate"],"default":"validate","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.31.operation","typeLabel":"enum\u003cstring>"},"enforcing_strategy":{"description":"Strategy for enforcing this guardrail: fail closed (block on failure), fail open (continue on error but block on failure), or audit (only audit violations)","type":"string","enum":["enforce_but_ignore_on_error","enforce","audit"],"default":"enforce_but_ignore_on_error","title":"EnforcingStrategy","x-fern-type-name":"EnforcingStrategy","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.31.enforcing_strategy","typeLabel":"enum\u003cstring>"},"config":{"description":"+uiType=Ignore\n+uiProps={\"forwardJsonKey\": true}","type":"object","properties":{"base_url":{"description":"The AI Guard API base URL.","type":"string","pattern":"^https?:\\/\\/\\S+$","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.31.config.base_url","typeLabel":"string"},"policy_id":{"description":"Optional AI Guard policy ID. When set, calls /v1/detection/execute-policy. When omitted, calls /v1/detection/resolve-and-execute-policy for automatic policy resolution.","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.31.config.policy_id","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.31.config","typeLabel":"object"},"description":{"description":"Optional description for this Guardrail Config.","type":"string","default":"Zscaler AI Guard runtime protection for prompts and model responses","uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.31.description","typeLabel":"string"},"priority":{"description":"Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.","type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.31.priority","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX].oneOf.31","typeLabel":"ZscalerAIGuardGuardrailConfig · object"}],"uniqueKey":"existingManifest.oneOf.66.integrations.items.[INDEX]","typeLabel":"OpenAIModerationsGuardrailConfig · object | AWSBedrockGuardrailConfig · object | CustomGuardrailConfig · object | AzurePIIGuardrailConfig · object | AzureContentSafetyGuardrailConfig · object | AzurePromptShieldGuardrailConfig · object | EnkryptAIGuardrailConfig · object | PaloAltoPrismaAIRSGuardrailConfig · object | FiddlerGuardrailConfig · object | CiscoAIDefenseGuardrailConfig · object | CrowdStrikeAIDRGuardrailConfig · object | PatronusGuardrailConfig · object | SecretDetectionGuardrailConfig · object | CodeSafetyLinterGuardrailConfig · object | SQLSanitizerGuardrailConfig · object | RegexGuardrailConfig · object | TfyContentModerationGuardrailConfig · object | TfyPIIGuardrailConfig · object | TfyPromptInjectionGuardrailConfig · object | TfyMetadataGuardrailConfig · object | CedarGuardrailConfig · object | OPAGuardrailConfig · object | GoogleModelArmorGuardrailConfig · object | GraySwanCygnalGuardrailConfig · object | CatoNetworksGuardrailConfig · object | NomaSecurityGuardrailConfig · object | CalypsoAIGuardrailConfig · object | AktoGuardrailConfig · object | TrojAIGuardrailConfig · object | HiddenLayerGuardrailConfig · object | FireworksGuardrailConfig · object | ZscalerAIGuardGuardrailConfig · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.66.integrations","typeLabel":"(OpenAIModerationsGuardrailConfig · object | AWSBedrockGuardrailConfig · object | CustomGuardrailConfig · object | AzurePIIGuardrailConfig · object | AzureContentSafetyGuardrailConfig · object | AzurePromptShieldGuardrailConfig · object | EnkryptAIGuardrailConfig · object | PaloAltoPrismaAIRSGuardrailConfig · object | FiddlerGuardrailConfig · object | CiscoAIDefenseGuardrailConfig · object | CrowdStrikeAIDRGuardrailConfig · object | PatronusGuardrailConfig · object | SecretDetectionGuardrailConfig · object | CodeSafetyLinterGuardrailConfig · object | SQLSanitizerGuardrailConfig · object | RegexGuardrailConfig · object | TfyContentModerationGuardrailConfig · object | TfyPIIGuardrailConfig · object | TfyPromptInjectionGuardrailConfig · object | TfyMetadataGuardrailConfig · object | CedarGuardrailConfig · object | OPAGuardrailConfig · object | GoogleModelArmorGuardrailConfig · object | GraySwanCygnalGuardrailConfig · object | CatoNetworksGuardrailConfig · object | NomaSecurityGuardrailConfig · object | CalypsoAIGuardrailConfig · object | AktoGuardrailConfig · object | TrojAIGuardrailConfig · object | HiddenLayerGuardrailConfig · object | FireworksGuardrailConfig · object | ZscalerAIGuardGuardrailConfig · object)[]"},"collaborators":{"description":"List of users who have access to this Guardrail Config Group.","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.66.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.66.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.66.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.66.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.66","typeLabel":"GuardrailConfigGroup · object"},{"type":"object","title":"ClusterManifest","description":"The existing manifest of the resource","required":["type","name","cluster_type","environment_names"],"x-fern-type-name":"ClusterManifest","properties":{"type":{"description":"+value=cluster","type":"string","enum":["cluster"],"default":"cluster","isRequired":true,"uniqueKey":"existingManifest.oneOf.67.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name - 3 to 35 lower case characters long alphanumeric word, may contain - in between, cannot start with a number","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,33}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.67.name","typeLabel":"string"},"cluster_type":{"description":"The cluster type of this cluster","type":"string","enum":["aws-eks","gcp-gke-standard","azure-aks","generic","civo-talos"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.67.cluster_type","typeLabel":"enum\u003cstring>"},"environment_names":{"description":"Tag the environment like dev, staging or production. You will need to [create environments](https://docs.truefoundry.com/docs/key-concepts#creating-environments) if you don't have already.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.67.environment_names.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.67.environment_names","typeLabel":"string[]"},"base_domains":{"description":"One or more base URLs, which can be either a wildcard domain (resulting in app URLs like `\u003capp-name>-\u003cworkspace-name>.\u003cbase-domain-URL>`) or a non-wildcard domain (resulting in app URLs like `\u003cbase-domain-URL>/\u003capp-name>-\u003cworkspace-name>`)\n> Read more about routing [here](https://docs.truefoundry.com/docs/routing) and about 'A' record and domain mapping [here](https://docs.truefoundry.com/docs/setting-up-domain)","type":"array","items":{"type":"string","pattern":"^((((\\*|[a-zA-Z0-9\\-]{1,63})\\.)([a-zA-Z0-9\\-]{1,63}\\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$","uniqueKey":"existingManifest.oneOf.67.base_domains.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.67.base_domains","typeLabel":"string[]"},"monitoring":{"description":"Monitoring","type":"object","properties":{"loki_url":{"description":"Cluster Loki URL","type":"string","uniqueKey":"existingManifest.oneOf.67.monitoring.loki_url","typeLabel":"string"},"victoria_logs_url":{"description":"Cluster VictoriaLogs URL","type":"string","uniqueKey":"existingManifest.oneOf.67.monitoring.victoria_logs_url","typeLabel":"string"},"prometheus_url":{"description":"Cluster Prometheus URL","type":"string","uniqueKey":"existingManifest.oneOf.67.monitoring.prometheus_url","typeLabel":"string"},"kubecost_url":{"description":"Cluster Kubecost URL","type":"string","uniqueKey":"existingManifest.oneOf.67.monitoring.kubecost_url","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.67.monitoring","typeLabel":"object"},"default_registry_fqn":{"description":"Cluster Default Registry","type":"string","uniqueKey":"existingManifest.oneOf.67.default_registry_fqn","typeLabel":"string"},"workbench_config":{"description":"Workbench Config","type":"object","properties":{"notebook_config":{"type":"object","required":["base_domain"],"properties":{"base_domain":{"description":"The base domain for the cluster with which you can access your Notebooks","type":"string","pattern":"^[^\\s]*$","isRequired":true,"uniqueKey":"existingManifest.oneOf.67.workbench_config.notebook_config.base_domain","typeLabel":"string"}},"title":"NotebookConfig","x-fern-type-name":"NotebookConfig","uniqueKey":"existingManifest.oneOf.67.workbench_config.notebook_config","typeLabel":"NotebookConfig · object"},"ssh_server_config":{"type":"object","required":["base_domain","port"],"properties":{"base_domain":{"description":"The base domain for the cluster with which you can access your SSH containers","type":"string","pattern":"^[^\\s]*$","isRequired":true,"uniqueKey":"existingManifest.oneOf.67.workbench_config.ssh_server_config.base_domain","typeLabel":"string"},"port":{"description":"The port for the cluster with which you can access your SSH containers","type":"number","isRequired":true,"uniqueKey":"existingManifest.oneOf.67.workbench_config.ssh_server_config.port","typeLabel":"number"}},"title":"SSHServerConfig","x-fern-type-name":"SSHServerConfig","uniqueKey":"existingManifest.oneOf.67.workbench_config.ssh_server_config","typeLabel":"SSHServerConfig · object"},"default_storage_class":{"description":"The default storage class for the home directory of workbench","type":"string","pattern":"^[^\\s]*$","uniqueKey":"existingManifest.oneOf.67.workbench_config.default_storage_class","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.67.workbench_config","typeLabel":"object"},"spark_config":{"type":"object","required":["ui_base_domain"],"properties":{"ui_base_domain":{"description":"The base domain for the cluster with which you can access your Spark UI","type":"string","pattern":"^[^\\s]*$","isRequired":true,"uniqueKey":"existingManifest.oneOf.67.spark_config.ui_base_domain","typeLabel":"string"}},"title":"SparkConfig","x-fern-type-name":"SparkConfig","uniqueKey":"existingManifest.oneOf.67.spark_config","typeLabel":"SparkConfig · object"},"ingress_controller_config":{"type":"object","required":["ingress_class_name"],"properties":{"ingress_class_name":{"description":"Ingress Class Name","type":"string","default":"nginx","isRequired":true,"uniqueKey":"existingManifest.oneOf.67.ingress_controller_config.ingress_class_name","typeLabel":"string"},"tls_enabled":{"description":"Whether TLS is managed by the ingress controller. If enabled, the ingress object will have TLS configuration.","type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.67.ingress_controller_config.tls_enabled","typeLabel":"boolean"}},"title":"IngressControllerConfig","x-fern-type-name":"IngressControllerConfig","uniqueKey":"existingManifest.oneOf.67.ingress_controller_config","typeLabel":"IngressControllerConfig · object"},"cluster_integration_fqn":{"description":"Cluster Integration FQN","type":"string","uniqueKey":"existingManifest.oneOf.67.cluster_integration_fqn","typeLabel":"string"},"workflow_storage_integration_fqn":{"description":"Workflow Storage Integration","type":"string","uniqueKey":"existingManifest.oneOf.67.workflow_storage_integration_fqn","typeLabel":"string"},"supported_nodepools":{"description":"Add nodepools that are already created in your cluster.\nWhen deploying, applications can choose to schedule from these nodepools.","type":"array","items":{"description":"The nodepools that are already created in your cluster. This will be used to schedule your workloads on particular nodepools.","type":"object","required":["name"],"properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.67.supported_nodepools.items.[INDEX].name","typeLabel":"string"},"description":{"type":"string","uniqueKey":"existingManifest.oneOf.67.supported_nodepools.items.[INDEX].description","typeLabel":"string"}},"title":"Nodepool","x-fern-type-name":"Nodepool","uniqueKey":"existingManifest.oneOf.67.supported_nodepools.items.[INDEX]","typeLabel":"Nodepool · object"},"uniqueKey":"existingManifest.oneOf.67.supported_nodepools","typeLabel":"Nodepool · object[]"},"node_label_keys":{"description":"The node label keys that this cluster supports.\nNote: You will additionally need to add `truefoundry.com/gpu_type` label for GPU-supported node pools.\nFor more information, check out [this documentation](https://docs.truefoundry.com/docs/generic-control-plane#configuring-node-pools-for-truefoundry).","type":"object","required":["nodepool_selector_label"],"properties":{"nodepool_selector_label":{"description":"The nodepool selector label that this cluster supports","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.67.node_label_keys.nodepool_selector_label","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.67.node_label_keys","typeLabel":"object"},"collaborators":{"description":"Collaborators who can access this cluster","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.67.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.67.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.67.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.67.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.67.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.67.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.67","typeLabel":"ClusterManifest · object"},{"type":"object","title":"WorkspaceManifest","description":"The existing manifest of the resource","required":["type","cluster_fqn","name"],"x-fern-type-name":"WorkspaceManifest","properties":{"type":{"description":"+value=workspace","type":"string","enum":["workspace"],"default":"workspace","isRequired":true,"uniqueKey":"existingManifest.oneOf.68.type","typeLabel":"enum\u003cstring>"},"cluster_fqn":{"description":"Cluster FQN","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.68.cluster_fqn","typeLabel":"string"},"name":{"description":"Name - 3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.68.name","typeLabel":"string"},"environment_name":{"description":"Tag the environment like dev, staging or production. You will need to [create environments](https://docs.truefoundry.com/docs/key-concepts#creating-environments) if you don't have already.","type":"string","uniqueKey":"existingManifest.oneOf.68.environment_name","typeLabel":"string"},"labels":{"description":"+sort=700","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.68.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.68.labels","typeLabel":"object"},"annotations":{"description":"+sort=750","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.68.annotations.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.68.annotations","typeLabel":"object"},"collaborators":{"description":"Collaborators","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.68.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.68.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.68.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.68.collaborators","typeLabel":"Collaborator · object[]"},"permissions":{"description":"Permissions","type":"array","items":{"type":"object","required":["resource_fqn","resource_type","role_id"],"properties":{"resource_fqn":{"description":"The fully qualified name of the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.68.permissions.items.[INDEX].resource_fqn","typeLabel":"string"},"resource_type":{"description":"The type of the resource (cluster, workspace, etc.)","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.68.permissions.items.[INDEX].resource_type","typeLabel":"string"},"role_id":{"description":"The role id of the role to be assigned to the service account for that resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.68.permissions.items.[INDEX].role_id","typeLabel":"string"}},"title":"Permissions","x-fern-type-name":"Permissions","uniqueKey":"existingManifest.oneOf.68.permissions.items.[INDEX]","typeLabel":"Permissions · object"},"uniqueKey":"existingManifest.oneOf.68.permissions","typeLabel":"Permissions · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.68.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.68.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.68","typeLabel":"WorkspaceManifest · object"},{"type":"object","title":"Job","description":"The existing manifest of the resource","required":["type","name","image","trigger"],"x-fern-type-name":"Job","properties":{"type":{"description":"+value=job","type":"string","enum":["job"],"default":"job","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the job","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.name","typeLabel":"string"},"image":{"oneOf":[{"type":"object","title":"Build","description":"Describes how we build our code into a Docker image.","required":["type","build_source","build_spec"],"x-fern-type-name":"Build","properties":{"type":{"description":"+value=build","type":"string","enum":["build"],"default":"build","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.type","typeLabel":"enum\u003cstring>"},"build_source":{"oneOf":[{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_source.oneOf.0.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_source.oneOf.0","typeLabel":"RemoteSource · object"},{"type":"object","title":"GitSource","description":"Describes that we are using code stored in a git repository to build our image","required":["type","repo_url","ref"],"x-fern-type-name":"GitSource","properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"The repository URL.","type":"string","pattern":"^(https?://)\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_source.oneOf.1.repo_url","typeLabel":"string"},"ref":{"description":"The commit SHA.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_source.oneOf.1.ref","typeLabel":"string"},"branch_name":{"description":"Selecting branch will select latest commit SHA of the branch.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_source.oneOf.1.branch_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_source.oneOf.1","typeLabel":"GitSource · object"},{"type":"object","title":"LocalSource","description":"Describes that we are using code stored in a local developement environment to build our image","required":["type","project_root_path","local_build"],"x-fern-type-name":"LocalSource","properties":{"type":{"description":"+value=local","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"project_root_path":{"description":"Local project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_source.oneOf.2.project_root_path","typeLabel":"string"},"local_build":{"description":"run docker build locally","type":"boolean","default":false,"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_source.oneOf.2.local_build","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_source.oneOf.2","typeLabel":"LocalSource · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_source","typeLabel":"RemoteSource · object | GitSource · object | LocalSource · object"},"build_spec":{"oneOf":[{"type":"object","title":"DockerFileBuild","description":"Describes that we are using a dockerfile to build our image","required":["type","dockerfile_path","build_context_path"],"x-fern-type-name":"DockerFileBuild","properties":{"type":{"description":"+value=dockerfile","type":"string","enum":["dockerfile"],"default":"dockerfile","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.type","typeLabel":"enum\u003cstring>"},"dockerfile_path":{"description":"The file path of the Dockerfile relative to project root path.","type":"string","default":"./Dockerfile","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.dockerfile_path","typeLabel":"string"},"build_context_path":{"description":"Build context path for the Dockerfile relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.command","typeLabel":"string | string[]"},"build_args":{"description":"Build arguments to pass to docker build","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.build_args.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.build_args","typeLabel":"object"},"build_secrets":{"description":"Build secrets you can use in run statements inside dockerfile like RUN --mount=type=secret,id=pip_index_url ... you can learn more about build secrets here https://www.truefoundry.com/docs/docker-build-secrets","type":"array","items":{"type":"object","required":["id","value"],"properties":{"id":{"description":"The ID of the build secret.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].id","typeLabel":"string"},"value":{"description":"The value of the build secret.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].value","typeLabel":"string"},"env":{"description":"The name of the environment variable to inject the secret into.","type":"string","pattern":"^[_a-zA-Z0-9][_a-zA-Z0-9]{1,31}$","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].env","typeLabel":"string"}},"title":"BuildSecret","x-fern-type-name":"BuildSecret","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX]","typeLabel":"BuildSecret · object"},"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0.build_secrets","typeLabel":"BuildSecret · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.0","typeLabel":"DockerFileBuild · object"},{"type":"object","title":"PythonBuild","description":"Describes that we are using python to build a container image with a specific python version and pip packages installed.","required":["type","build_context_path","command"],"x-fern-type-name":"PythonBuild","properties":{"type":{"description":"+value=tfy-python-buildpack","type":"string","enum":["tfy-python-buildpack"],"default":"tfy-python-buildpack","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.type","typeLabel":"enum\u003cstring>"},"build_context_path":{"description":"Build path relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.command","typeLabel":"string | string[]"},"python_version":{"description":"Python version to run your application. Should be one of the tags listed on [Official Python Docker Page](https://hub.docker.com/_/python)","type":"string","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_version","typeLabel":"string"},"requirements_path":{"description":"Path to `requirements.txt` relative to\n`Path to build context`","type":"string","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.pip_packages","typeLabel":"string[]"},"python_dependencies":{"oneOf":[{"type":"object","title":"Pip","description":"Use pip to install requirements files and packages","required":["type"],"x-fern-type-name":"Pip","properties":{"type":{"description":"+value=pip","type":"string","enum":["pip"],"default":"pip","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.type","typeLabel":"enum\u003cstring>"},"requirements_path":{"description":"Path to `requirements.txt` relative to `Path to build context`","type":"string","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0","typeLabel":"Pip · object"},{"type":"object","title":"UV","description":"Use `uv` to setup env.\nYour build context root must contain `pyproject.toml` and `uv.lock`","required":["type"],"x-fern-type-name":"UV","properties":{"type":{"description":"+value=uv","type":"string","enum":["uv"],"default":"uv","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uv_version":{"description":"UV version to use","type":"string","default":"latest","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.uv_version","typeLabel":"string"},"sync_options":{"description":"Sync options to pass to uv command","type":"string","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.sync_options","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1","typeLabel":"UV · object"},{"type":"object","title":"Poetry","description":"Use `poetry` to setup env.\nYour build context root must contain `pyproject.toml` and `poetry.lock`","required":["type"],"x-fern-type-name":"Poetry","properties":{"type":{"description":"+value=poetry","type":"string","enum":["poetry"],"default":"poetry","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.type","typeLabel":"enum\u003cstring>"},"poetry_version":{"oneOf":[{"type":"string","description":"Poetry version to use","default":"latest","enum":["latest"],"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","description":"Poetry version to use","default":"latest","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version.oneOf.1","typeLabel":"string"}],"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version","typeLabel":"enum\u003cstring> | string"},"install_options":{"description":"install options to pass to poetry command","type":"string","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.install_options","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2","typeLabel":"Poetry · object"}],"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.python_dependencies","typeLabel":"Pip · object | UV · object | Poetry · object"},"apt_packages":{"description":"Debian packages to install via `apt get`.\nIn Python/YAML E.g. [\"git\", \"ffmpeg\", \"htop\"]","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.apt_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.apt_packages","typeLabel":"string[]"},"cuda_version":{"description":"Version of CUDA Toolkit and CUDNN to install in the image\nThese combinations are based off of publically available docker images on docker hub\nYou can also specify a valid tag of the form {cuda_version_number}-cudnn{cudnn_version_number}-{runtime|devel}-ubuntu{ubuntu_version}\nRefer https://hub.docker.com/r/nvidia/cuda/tags for valid set of values\nNote: We use deadsnakes ubuntu ppa to add Python that currently supports only Ubuntu 18.04, 20.04 and 22.04","type":"string","pattern":"^((\\d+\\.\\d+(\\.\\d+)?-cudnn(\\d+)?-(runtime|devel)-ubuntu\\d+\\.\\d+)|11\\.0-cudnn8|11\\.1-cudnn8|11\\.2-cudnn8|11\\.3-cudnn8|11\\.4-cudnn8|11\\.5-cudnn8|11\\.6-cudnn8|11\\.7-cudnn8|11\\.8-cudnn8|12\\.0-cudnn8|12\\.1-cudnn8|12\\.2-cudnn8|12\\.3-cudnn9|12\\.4-cudnn9|12\\.5-cudnn9|12\\.6-cudnn9|12\\.8-cudnn9|12\\.9-cudnn9)$","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1.cuda_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec.oneOf.1","typeLabel":"PythonBuild · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.build_spec","typeLabel":"DockerFileBuild · object | PythonBuild · object"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.69.image.oneOf.0.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.0","typeLabel":"Build · object"},{"type":"object","title":"Image","description":"Describes that we are using a pre-built image stored in a Docker Image registry","required":["type","image_uri"],"x-fern-type-name":"Image","properties":{"type":{"description":"+value=image","type":"string","enum":["image"],"default":"image","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.1.type","typeLabel":"enum\u003cstring>"},"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.1.image_uri","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.69.image.oneOf.1.docker_registry","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.69.image.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.69.image.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.69.image.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"existingManifest.oneOf.69.image.oneOf.1.command","typeLabel":"string | string[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image.oneOf.1","typeLabel":"Image · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.image","typeLabel":"Build · object | Image · object"},"trigger":{"oneOf":[{"type":"object","title":"Manual","description":"Trigger the job manually. [Docs](https://docs.truefoundry.com/docs/deploy-a-cron-job)","default":{"type":"manual"},"required":["type"],"x-fern-type-name":"Manual","properties":{"type":{"description":"+value=manual","type":"string","enum":["manual"],"default":"manual","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.trigger.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.trigger.oneOf.0","typeLabel":"Manual · object"},{"type":"object","title":"Schedule","description":"Run the job on a schedule. [Docs](https://docs.truefoundry.com/docs/deploy-a-cron-job)","default":{"type":"manual"},"required":["type","schedule","concurrency_policy"],"x-fern-type-name":"Schedule","properties":{"type":{"description":"+value=scheduled","type":"string","enum":["scheduled"],"default":"scheduled","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.trigger.oneOf.1.type","typeLabel":"enum\u003cstring>"},"schedule":{"description":"Specify the schedule for this job to be run periodically in cron format.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.trigger.oneOf.1.schedule","typeLabel":"string"},"concurrency_policy":{"description":"Choose whether to allow this job to run while another instance of the job is running, or to replace the currently running instance. Allow\nwill enable multiple instances of this job to run. Forbid will keep the current instance of the job running and stop a new instance from being run.\nReplace will terminate any currently running instance of the job and start a new one.","type":"string","enum":["Forbid","Allow","Replace"],"default":"Forbid","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.trigger.oneOf.1.concurrency_policy","typeLabel":"enum\u003cstring>"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","uniqueKey":"existingManifest.oneOf.69.trigger.oneOf.1.timezone","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.trigger.oneOf.1","typeLabel":"Schedule · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.trigger","typeLabel":"Manual · object | Schedule · object"},"trigger_on_deploy":{"description":"Trigger the job after deploy immediately","type":"boolean","uniqueKey":"existingManifest.oneOf.69.trigger_on_deploy","typeLabel":"boolean"},"params":{"description":"Configure params and pass it to create different job runs","type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"description":"Name of the param","type":"string","pattern":"^[a-z][a-z0-9\\-_]{0,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.params.items.[INDEX].name","typeLabel":"string"},"description":{"description":"Description of param","type":"string","pattern":"^.{1,127}$","uniqueKey":"existingManifest.oneOf.69.params.items.[INDEX].description","typeLabel":"string"},"default":{"description":"Default value or placeholder","type":"string","pattern":"^.{0,127}$","uniqueKey":"existingManifest.oneOf.69.params.items.[INDEX].default","typeLabel":"string"},"param_type":{"type":"string","enum":["string","ml_repo"],"default":"string","uniqueKey":"existingManifest.oneOf.69.params.items.[INDEX].param_type","typeLabel":"enum\u003cstring>"}},"title":"Param","x-fern-type-name":"Param","uniqueKey":"existingManifest.oneOf.69.params.items.[INDEX]","typeLabel":"Param · object"},"uniqueKey":"existingManifest.oneOf.69.params","typeLabel":"Param · object[]"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.69.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.69.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.69.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.69.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.69.env","typeLabel":"object | null"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"existingManifest.oneOf.69.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.69.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.69.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"existingManifest.oneOf.69.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.69.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.69.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.69.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.69.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"existingManifest.oneOf.69.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"existingManifest.oneOf.69.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"existingManifest.oneOf.69.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"existingManifest.oneOf.69.resources","typeLabel":"Resources · object"},"alerts":{"description":"Configure alerts to be sent when the job starts/fails/completes","type":"array","items":{"description":"Describes the configuration for the job alerts","type":"object","properties":{"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].to_emails.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].to_emails","typeLabel":"string[]"},"notification_target":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBot","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.2.channels","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.2","typeLabel":"SlackBot · object"},{"type":"object","title":"PagerDuty","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].notification_target.oneOf.3","typeLabel":"PagerDuty · object"}],"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].notification_target","typeLabel":"Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object"},"on_start":{"description":"Send an alert when the job starts","type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].on_start","typeLabel":"boolean"},"on_completion":{"type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].on_completion","typeLabel":"boolean"},"on_failure":{"description":"Send an alert when the job fails","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX].on_failure","typeLabel":"boolean"}},"title":"JobAlert","x-fern-type-name":"JobAlert","uniqueKey":"existingManifest.oneOf.69.alerts.items.[INDEX]","typeLabel":"JobAlert · object"},"uniqueKey":"existingManifest.oneOf.69.alerts","typeLabel":"JobAlert · object[]"},"retries":{"description":"Specify the maximum number of attempts to retry a job before it is marked as failed.","type":"integer","minimum":0,"maximum":10,"default":0,"uniqueKey":"existingManifest.oneOf.69.retries","typeLabel":"integer"},"timeout":{"description":"Job timeout in seconds.","type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":432000,"uniqueKey":"existingManifest.oneOf.69.timeout","typeLabel":"integer"},"concurrency_limit":{"description":"Number of runs that can run concurrently","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.69.concurrency_limit","typeLabel":"integer"},"service_account":{"description":"+sort=1000","type":"string","uniqueKey":"existingManifest.oneOf.69.service_account","typeLabel":"string"},"mounts":{"description":"Configure data to be mounted to job pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.69.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.69.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"existingManifest.oneOf.69.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"existingManifest.oneOf.69.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.69.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"existingManifest.oneOf.69.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"existingManifest.oneOf.69.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"labels":{"description":"Labels","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.69.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.69.labels","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"existingManifest.oneOf.69.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"existingManifest.oneOf.69.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"existingManifest.oneOf.69.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"existingManifest.oneOf.69.kustomize","typeLabel":"Kustomize · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"existingManifest.oneOf.69.workspace_fqn","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.69","typeLabel":"Job · object"},{"type":"object","title":"Helm","description":"The existing manifest of the resource","required":["type","name","source"],"x-fern-type-name":"Helm","properties":{"type":{"description":"+value=helm","type":"string","enum":["helm"],"default":"helm","isRequired":true,"uniqueKey":"existingManifest.oneOf.70.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Helm deployment. This will be set as the release name of the chart you are deploying.","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.70.name","typeLabel":"string"},"source":{"oneOf":[{"type":"object","title":"HelmRepo","description":"Source helm repository","required":["type","repo_url","chart","version"],"x-fern-type-name":"HelmRepo","properties":{"type":{"description":"+value=helm-repo","type":"string","enum":["helm-repo"],"default":"helm-repo","isRequired":true,"uniqueKey":"existingManifest.oneOf.70.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"Helm repository URL - Needs to be a valid URL.","type":"string","pattern":"^(((https?|wss):\\/\\/)?(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\\+.~#?\u0026\\/=]*))$","isRequired":true,"uniqueKey":"existingManifest.oneOf.70.source.oneOf.0.repo_url","typeLabel":"string"},"chart":{"description":"The helm chart name","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._/-]*$","isRequired":true,"uniqueKey":"existingManifest.oneOf.70.source.oneOf.0.chart","typeLabel":"string"},"version":{"description":"Helm chart version","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._+-]*$","isRequired":true,"uniqueKey":"existingManifest.oneOf.70.source.oneOf.0.version","typeLabel":"string"},"integration_fqn":{"description":"FQN of the helm repo integration. If you can't find your integration here,\nadd it through the [Integrations](/integrations) page","type":"string","uniqueKey":"existingManifest.oneOf.70.source.oneOf.0.integration_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.70.source.oneOf.0","typeLabel":"HelmRepo · object"},{"type":"object","title":"OCIRepo","description":"OCIRepo","required":["type","oci_chart_url","version"],"x-fern-type-name":"OCIRepo","properties":{"type":{"description":"+value=oci-repo","type":"string","enum":["oci-repo"],"default":"oci-repo","isRequired":true,"uniqueKey":"existingManifest.oneOf.70.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"oci_chart_url":{"description":"OCI chart URL - Need to be a valid URL.","type":"string","pattern":"^(((oci):\\/\\/)?(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\\+.~#?\u0026\\/=]*))$","isRequired":true,"uniqueKey":"existingManifest.oneOf.70.source.oneOf.1.oci_chart_url","typeLabel":"string"},"version":{"description":"Helm chart version","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._+-]*$","isRequired":true,"uniqueKey":"existingManifest.oneOf.70.source.oneOf.1.version","typeLabel":"string"},"integration_fqn":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations) page","type":"string","uniqueKey":"existingManifest.oneOf.70.source.oneOf.1.integration_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.70.source.oneOf.1","typeLabel":"OCIRepo · object"},{"type":"object","title":"GitHelmRepo","description":"Source helm repository","required":["type","repo_url","revision","path"],"x-fern-type-name":"GitHelmRepo","properties":{"type":{"description":"+value=git-helm-repo","type":"string","enum":["git-helm-repo"],"default":"git-helm-repo","isRequired":true,"uniqueKey":"existingManifest.oneOf.70.source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"Git repository URL - Needs to be a valid URL.","type":"string","pattern":"^(((https?|wss):\\/\\/)?(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\\+.~#?\u0026\\/=]*))$","isRequired":true,"uniqueKey":"existingManifest.oneOf.70.source.oneOf.2.repo_url","typeLabel":"string"},"revision":{"description":"Branch/Commit SHA/Tag of the git repo.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.70.source.oneOf.2.revision","typeLabel":"string"},"path":{"description":"Path to the chart.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.70.source.oneOf.2.path","typeLabel":"string"},"value_files":{"description":"Helm values files for overriding values in the helm chart.\nThe path is relative to the Path directory defined above","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.70.source.oneOf.2.value_files.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.70.source.oneOf.2.value_files","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.70.source.oneOf.2","typeLabel":"GitHelmRepo · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.70.source","typeLabel":"HelmRepo · object | OCIRepo · object | GitHelmRepo · object"},"labels":{"description":"Add labels to base argo app","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.70.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.70.labels","typeLabel":"object"},"values":{"description":"Values file as block file","type":"object","uniqueKey":"existingManifest.oneOf.70.values","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"existingManifest.oneOf.70.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"existingManifest.oneOf.70.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"existingManifest.oneOf.70.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"existingManifest.oneOf.70.kustomize","typeLabel":"Kustomize · object"},"ignoreDifferences":{"type":"array","items":{"type":"object","uniqueKey":"existingManifest.oneOf.70.ignoreDifferences.items.[INDEX]","typeLabel":"object"},"uniqueKey":"existingManifest.oneOf.70.ignoreDifferences","typeLabel":"object[]"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"existingManifest.oneOf.70.workspace_fqn","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.70","typeLabel":"Helm · object"},{"type":"object","title":"Volume","description":"The existing manifest of the resource","required":["type","name","config"],"x-fern-type-name":"Volume","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"existingManifest.oneOf.71.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Volume. This will be set as the volume name.","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.71.name","typeLabel":"string"},"config":{"oneOf":[{"type":"object","title":"DynamicVolumeConfig","description":"Create new volume","required":["type","storage_class","size"],"x-fern-type-name":"DynamicVolumeConfig","properties":{"type":{"description":"Volume Type for the volume.","type":"string","enum":["dynamic"],"default":"dynamic","isRequired":true,"uniqueKey":"existingManifest.oneOf.71.config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"storage_class":{"description":"Name of the storage class to be used for the volume.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.71.config.oneOf.0.storage_class","typeLabel":"string"},"size":{"description":"Size of volume in Gi","type":"integer","minimum":1,"maximum":64000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.71.config.oneOf.0.size","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.71.config.oneOf.0","typeLabel":"DynamicVolumeConfig · object"},{"type":"object","title":"StaticVolumeConfig","description":"Use existing volume","required":["type","persistent_volume_name"],"x-fern-type-name":"StaticVolumeConfig","properties":{"type":{"description":"Volume Type for the volume.","type":"string","enum":["static"],"default":"static","isRequired":true,"uniqueKey":"existingManifest.oneOf.71.config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"persistent_volume_name":{"description":"Persistent Volume Name of the volume to be used.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.71.config.oneOf.1.persistent_volume_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.71.config.oneOf.1","typeLabel":"StaticVolumeConfig · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.71.config","typeLabel":"DynamicVolumeConfig · object | StaticVolumeConfig · object"},"volume_browser":{"description":"Volume Browser","type":"object","required":["endpoint"],"properties":{"endpoint":{"type":"object","required":["host"],"properties":{"host":{"description":"Host e.g. ai.example.com, app.truefoundry.com","type":"string","pattern":"^((([a-zA-Z0-9\\-]{1,63}\\.)([a-zA-Z0-9\\-]{1,63}\\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$","isRequired":true,"uniqueKey":"existingManifest.oneOf.71.volume_browser.endpoint.host","typeLabel":"string"},"path":{"description":"Path e.g. /v1/api/ml/, /v2/docs/","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"existingManifest.oneOf.71.volume_browser.endpoint.path","typeLabel":"string"}},"title":"Endpoint","x-fern-type-name":"Endpoint","isRequired":true,"uniqueKey":"existingManifest.oneOf.71.volume_browser.endpoint","typeLabel":"Endpoint · object"},"username":{"description":"Username for logging in the volume browser.","type":"string","pattern":"^[a-z][a-z0-9]{1,8}[a-z0-9]$","uniqueKey":"existingManifest.oneOf.71.volume_browser.username","typeLabel":"string"},"password_secret_fqn":{"description":"TFY Secret containing the password for logging in the volume browser.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","uniqueKey":"existingManifest.oneOf.71.volume_browser.password_secret_fqn","typeLabel":"string"},"service_account":{"description":"Kubernetes Service account name for the volume browser.","type":"string","uniqueKey":"existingManifest.oneOf.71.volume_browser.service_account","typeLabel":"string"}},"title":"VolumeBrowser","x-fern-type-name":"VolumeBrowser","uniqueKey":"existingManifest.oneOf.71.volume_browser","typeLabel":"VolumeBrowser · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"existingManifest.oneOf.71.workspace_fqn","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.71","typeLabel":"Volume · object"},{"type":"object","title":"Notebook","description":"The existing manifest of the resource","required":["type","image","name","home_directory_size"],"x-fern-type-name":"Notebook","properties":{"name":{"description":"Name of the workbench. This uniquely identifies this workbench in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.name","typeLabel":"string"},"home_directory_size":{"description":"Size of the home directory for the workbench (Persistent Storage)","type":"integer","minimum":5,"maximum":64000,"default":20,"isRequired":true,"uniqueKey":"existingManifest.oneOf.72.home_directory_size","typeLabel":"integer"},"type":{"description":"+value=notebook","type":"string","enum":["notebook"],"default":"notebook","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.type","typeLabel":"enum\u003cstring>"},"image":{"description":"Workbench Image with persistent environment (Python 3.11.6)","type":"object","required":["image_uri"],"properties":{"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.image.image_uri","typeLabel":"string"},"build_script":{"description":"The build script to run when building the image.\nThis will be executed as the last step in the docker build process as the root user (RUN DEBIAN_FRONTEND=noninteractive bash -ex build_script.sh)","type":"string","minLength":1,"maxLength":5120,"uniqueKey":"existingManifest.oneOf.72.image.build_script","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","uniqueKey":"existingManifest.oneOf.72.image.docker_registry","typeLabel":"string"}},"title":"WorkbenchImage","x-fern-type-name":"WorkbenchImage","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.image","typeLabel":"WorkbenchImage · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"existingManifest.oneOf.72.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.72.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.72.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"existingManifest.oneOf.72.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.72.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.72.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.72.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.72.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"existingManifest.oneOf.72.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"existingManifest.oneOf.72.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"existingManifest.oneOf.72.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"existingManifest.oneOf.72.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.72.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.72.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.72.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.72.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.72.env","typeLabel":"object | null"},"mounts":{"description":"Configure data to be mounted to workbench pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.72.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.72.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"existingManifest.oneOf.72.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"existingManifest.oneOf.72.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.72.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"existingManifest.oneOf.72.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"existingManifest.oneOf.72.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"service_account":{"description":"+sort=10113","type":"string","uniqueKey":"existingManifest.oneOf.72.service_account","typeLabel":"string"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"existingManifest.oneOf.72.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"existingManifest.oneOf.72.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"existingManifest.oneOf.72.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"existingManifest.oneOf.72.kustomize","typeLabel":"Kustomize · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"existingManifest.oneOf.72.workspace_fqn","typeLabel":"string"},"cull_timeout":{"description":"Stop the notebook instance after this much time in minutes of inactivity.\nThe notebook instance will be stopped even if the notebook is open in your browser, but nothing is running on the notebook.","type":"integer","minimum":5,"default":30,"uniqueKey":"existingManifest.oneOf.72.cull_timeout","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.72","typeLabel":"Notebook · object"},{"type":"object","title":"RStudio","description":"The existing manifest of the resource","required":["type","image","name","home_directory_size"],"x-fern-type-name":"RStudio","properties":{"name":{"description":"Name of the workbench. This uniquely identifies this workbench in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.name","typeLabel":"string"},"home_directory_size":{"description":"Size of the home directory for the workbench (Persistent Storage)","type":"integer","minimum":5,"maximum":64000,"default":20,"isRequired":true,"uniqueKey":"existingManifest.oneOf.73.home_directory_size","typeLabel":"integer"},"type":{"description":"+value=rstudio","type":"string","enum":["rstudio"],"default":"rstudio","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.type","typeLabel":"enum\u003cstring>"},"image":{"description":"Workbench Image with persistent environment (Python 3.11.6)","type":"object","required":["image_uri"],"properties":{"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.image.image_uri","typeLabel":"string"},"build_script":{"description":"The build script to run when building the image.\nThis will be executed as the last step in the docker build process as the root user (RUN DEBIAN_FRONTEND=noninteractive bash -ex build_script.sh)","type":"string","minLength":1,"maxLength":5120,"uniqueKey":"existingManifest.oneOf.73.image.build_script","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","uniqueKey":"existingManifest.oneOf.73.image.docker_registry","typeLabel":"string"}},"title":"WorkbenchImage","x-fern-type-name":"WorkbenchImage","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.image","typeLabel":"WorkbenchImage · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"existingManifest.oneOf.73.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.73.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.73.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"existingManifest.oneOf.73.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.73.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.73.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.73.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.73.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"existingManifest.oneOf.73.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"existingManifest.oneOf.73.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"existingManifest.oneOf.73.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"existingManifest.oneOf.73.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.73.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.73.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.73.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.73.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.73.env","typeLabel":"object | null"},"mounts":{"description":"Configure data to be mounted to workbench pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.73.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.73.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"existingManifest.oneOf.73.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"existingManifest.oneOf.73.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.73.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"existingManifest.oneOf.73.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"existingManifest.oneOf.73.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"service_account":{"description":"+sort=10113","type":"string","uniqueKey":"existingManifest.oneOf.73.service_account","typeLabel":"string"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"existingManifest.oneOf.73.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"existingManifest.oneOf.73.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"existingManifest.oneOf.73.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"existingManifest.oneOf.73.kustomize","typeLabel":"Kustomize · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"existingManifest.oneOf.73.workspace_fqn","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.73","typeLabel":"RStudio · object"},{"type":"object","title":"Workflow","description":"The existing manifest of the resource","required":["type","name","source","workflow_file_path"],"x-fern-type-name":"Workflow","properties":{"type":{"description":"+value=workflow","type":"string","enum":["workflow"],"default":"workflow","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the workflow","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.name","typeLabel":"string"},"source":{"oneOf":[{"type":"object","title":"LocalSource","description":"Describes that we are using code stored in a local developement environment to build our image","required":["type","project_root_path","local_build"],"x-fern-type-name":"LocalSource","properties":{"type":{"description":"+value=local","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"project_root_path":{"description":"Local project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.source.oneOf.0.project_root_path","typeLabel":"string"},"local_build":{"description":"run docker build locally","type":"boolean","default":false,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.source.oneOf.0.local_build","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.source.oneOf.0","typeLabel":"LocalSource · object"},{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.source.oneOf.1.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.source.oneOf.1","typeLabel":"RemoteSource · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.source","typeLabel":"LocalSource · object | RemoteSource · object"},"workflow_file_path":{"description":"Path to the workflow file relative to the project root path","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.workflow_file_path","typeLabel":"string"},"flyte_entities":{"description":"Flyte Entities","type":"array","items":{"oneOf":[{"type":"object","title":"FlyteTask","required":["template"],"x-fern-type-name":"FlyteTask","properties":{"template":{"oneOf":[{"type":"object","title":"TruefoundryFlyteTaskTemplate","required":["id","custom"],"x-fern-type-name":"FlyteTaskTemplate","properties":{"id":{"type":"object","required":["resourceType","name"],"properties":{"resourceType":{"type":"string","enum":["TASK"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.id.resourceType","typeLabel":"enum\u003cstring>"},"name":{"type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.id.name","typeLabel":"string"}},"title":"FlyteTaskID","x-fern-type-name":"FlyteTaskID","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.id","typeLabel":"FlyteTaskID · object"},"custom":{"type":"object","required":["truefoundry"],"properties":{"truefoundry":{"oneOf":[{"type":"object","title":"PythonTaskConfig","description":"Describes the configuration for the python function task","required":["type","image"],"x-fern-type-name":"PythonTaskConfig","properties":{"type":{"description":"+value=python-task-config","type":"string","enum":["python-task-config"],"default":"python-task-config","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.type","typeLabel":"enum\u003cstring>"},"image":{"type":"any","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.image","typeLabel":"any"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the task either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the task either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.env","typeLabel":"object | null"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.shared_memory_size","typeLabel":"integer"},"node":{"type":"any","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.node","typeLabel":"any"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"type":"any","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.devices.items.[INDEX]","typeLabel":"any"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources.devices","typeLabel":"any[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.resources","typeLabel":"Resources · object"},"mounts":{"description":"Configure data to be mounted to Workflow pod(s) as a volume.","type":"array","items":{"type":"any","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.mounts.items.[INDEX]","typeLabel":"any"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.mounts","typeLabel":"any[]"},"service_account":{"description":"Service Account","type":"string","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0.service_account","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.0","typeLabel":"PythonTaskConfig · object"},{"type":"object","title":"ContainerTaskConfig","description":"+discriminator=type","required":["type","image"],"x-fern-type-name":"ContainerTaskConfig","properties":{"type":{"description":"+value=container-task-config","type":"string","enum":["container-task-config"],"default":"container-task-config","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.type","typeLabel":"enum\u003cstring>"},"image":{"type":"any","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.image","typeLabel":"any"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the task either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the task either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.env","typeLabel":"object | null"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.shared_memory_size","typeLabel":"integer"},"node":{"type":"any","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.node","typeLabel":"any"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"type":"any","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.devices.items.[INDEX]","typeLabel":"any"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources.devices","typeLabel":"any[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.resources","typeLabel":"Resources · object"},"mounts":{"description":"Configure data to be mounted to Workflow pod(s) as a volume.","type":"array","items":{"type":"any","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.mounts.items.[INDEX]","typeLabel":"any"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.mounts","typeLabel":"any[]"},"service_account":{"description":"Service Account","type":"string","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1.service_account","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.1","typeLabel":"ContainerTaskConfig · object"},{"type":"object","title":"PySparkTaskConfig","description":"+discriminator=type","required":["type","image","driver_config","executor_config"],"x-fern-type-name":"PySparkTaskConfig","properties":{"type":{"description":"+value=pyspark-task-config","type":"string","enum":["pyspark-task-config"],"default":"pyspark-task-config","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.type","typeLabel":"enum\u003cstring>"},"image":{"type":"any","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.image","typeLabel":"any"},"driver_config":{"description":"Driver Config","type":"object","properties":{"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.shared_memory_size","typeLabel":"integer"},"node":{"type":"any","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.node","typeLabel":"any"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"type":"any","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.devices.items.[INDEX]","typeLabel":"any"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources.devices","typeLabel":"any[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config.resources","typeLabel":"Resources · object"}},"title":"SparkDriverConfig","x-fern-type-name":"SparkDriverConfig","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.driver_config","typeLabel":"SparkDriverConfig · object"},"executor_config":{"description":"Executor Config","type":"object","required":["instances"],"properties":{"instances":{"type":"any","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.instances","typeLabel":"any"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.shared_memory_size","typeLabel":"integer"},"node":{"type":"any","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.node","typeLabel":"any"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"type":"any","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.devices.items.[INDEX]","typeLabel":"any"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources.devices","typeLabel":"any[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config.resources","typeLabel":"Resources · object"}},"title":"SparkExecutorConfig","x-fern-type-name":"SparkExecutorConfig","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.executor_config","typeLabel":"SparkExecutorConfig · object"},"spark_conf":{"oneOf":[{"description":"Extra configuration properties to be passed to the spark job. [Docs](https://spark.apache.org/docs/latest/configuration.html)","type":"object","default":null,"additionalProperties":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.spark_conf.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.spark_conf.oneOf.0","typeLabel":"object"},{"description":"Extra configuration properties to be passed to the spark job. [Docs](https://spark.apache.org/docs/latest/configuration.html)","type":"null","default":null,"additionalProperties":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.spark_conf.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.spark_conf.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.spark_conf","typeLabel":"object | null"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the task either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the task either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.env","typeLabel":"object | null"},"mounts":{"description":"Configure data to be mounted to Workflow pod(s) as a volume.","type":"array","items":{"type":"object","required":["type","mount_path","volume_fqn"],"properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.mounts.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.mounts.items.[INDEX].mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.mounts.items.[INDEX].volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.mounts.items.[INDEX].sub_path","typeLabel":"string"}},"title":"VolumeMount","x-fern-type-name":"VolumeMount","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.mounts.items.[INDEX]","typeLabel":"VolumeMount · object"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.mounts","typeLabel":"VolumeMount · object[]"},"service_account":{"description":"Service Account","type":"string","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2.service_account","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.2","typeLabel":"PySparkTaskConfig · object"},{"type":"object","title":"DatabricksJobTaskConfig","description":"Task that triggers a Databricks job via API and polls until completion. Uses image and optional resources; no env or mounts. Execution is handled by the CLI (trigger + poll).","required":["type","image","workspace_host","job_id"],"x-fern-type-name":"DatabricksJobTaskConfig","properties":{"type":{"description":"+value=databricks-job-task-config","type":"string","enum":["databricks-job-task-config"],"default":"databricks-job-task-config","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.type","typeLabel":"enum\u003cstring>"},"image":{"type":"any","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.image","typeLabel":"any"},"workspace_host":{"description":"Databricks workspace URL, e.g. https://\u003cworkspace>.cloud.databricks.com","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.workspace_host","typeLabel":"string"},"job_id":{"description":"The Databricks job ID to run (from Databricks workspace Jobs).","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.job_id","typeLabel":"string"},"service_account":{"description":"Service Account","type":"string","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.service_account","typeLabel":"string"},"job_parameters":{"oneOf":[{"description":"Optional parameters to pass to the job run (e.g. notebook params, jar params).","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.job_parameters.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.job_parameters.oneOf.0","typeLabel":"object"},{"description":"Optional parameters to pass to the job run (e.g. notebook params, jar params).","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.job_parameters.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.job_parameters.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.job_parameters","typeLabel":"object | null"},"timeout_seconds":{"oneOf":[{"description":"Maximum seconds to wait for the job run to complete. Used by CLI when polling.","type":"number","default":null,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.timeout_seconds.oneOf.0","typeLabel":"number"},{"description":"Maximum seconds to wait for the job run to complete. Used by CLI when polling.","type":"null","default":null,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.timeout_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.timeout_seconds","typeLabel":"number | null"},"skip_wait_for_completion":{"description":"If false, the task waits for the Databricks job run to complete (trigger and poll). If true, only triggers the job and returns. Default false.","type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.skip_wait_for_completion","typeLabel":"boolean"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the task either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the task either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.env","typeLabel":"object | null"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.shared_memory_size","typeLabel":"integer"},"node":{"type":"any","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.node","typeLabel":"any"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"type":"any","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.devices.items.[INDEX]","typeLabel":"any"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources.devices","typeLabel":"any[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3.resources","typeLabel":"Resources · object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.3","typeLabel":"DatabricksJobTaskConfig · object"},{"type":"object","title":"SnowflakeTaskConfig","description":"+discriminator=type","required":["type","user","account","database","schema_name","warehouse"],"x-fern-type-name":"SnowflakeTaskConfig","properties":{"type":{"description":"+value=snowflake-task-config","type":"string","enum":["snowflake-task-config"],"default":"snowflake-task-config","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.4.type","typeLabel":"enum\u003cstring>"},"user":{"description":"Configuration required to connect and execute tasks in Snowflake.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.4.user","typeLabel":"string"},"account":{"description":"Snowflake account identifier (e.g., \u003corg>-\u003caccount>).","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.4.account","typeLabel":"string"},"database":{"description":"Target Snowflake database where the task will run.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.4.database","typeLabel":"string"},"schema_name":{"description":"Target schema within the Snowflake database.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.4.schema_name","typeLabel":"string"},"warehouse":{"description":"Compute warehouse to be used for executing the task.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.4.warehouse","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry.oneOf.4","typeLabel":"SnowflakeTaskConfig · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom.truefoundry","typeLabel":"PythonTaskConfig · object | ContainerTaskConfig · object | PySparkTaskConfig · object | DatabricksJobTaskConfig · object | SnowflakeTaskConfig · object"}},"title":"FlyteTaskCustom","x-fern-type-name":"FlyteTaskCustom","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0.custom","typeLabel":"FlyteTaskCustom · object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.0","typeLabel":"TruefoundryFlyteTaskTemplate · object"},{"type":"object","title":"NativeSnowflakeFlyteTaskTemplate","required":["id","type","config","sql"],"x-fern-type-name":"FlyteTaskTemplate","properties":{"id":{"type":"object","required":["resourceType","name"],"properties":{"resourceType":{"type":"string","enum":["TASK"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.id.resourceType","typeLabel":"enum\u003cstring>"},"name":{"type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.id.name","typeLabel":"string"}},"title":"FlyteTaskID","x-fern-type-name":"FlyteTaskID","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.id","typeLabel":"FlyteTaskID · object"},"type":{"type":"string","enum":["snowflake"],"default":"snowflake","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.type","typeLabel":"enum\u003cstring>"},"config":{"type":"object","required":["account","schema","user","warehouse","database"],"properties":{"account":{"type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.config.account","typeLabel":"string"},"schema":{"type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.config.schema","typeLabel":"string"},"user":{"type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.config.user","typeLabel":"string"},"warehouse":{"type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.config.warehouse","typeLabel":"string"},"database":{"type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.config.database","typeLabel":"string"}},"title":"SnowflakeConfig","x-fern-type-name":"SnowflakeConfig","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.config","typeLabel":"SnowflakeConfig · object"},"sql":{"type":"object","required":["statement"],"properties":{"statement":{"type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.sql.statement","typeLabel":"string"}},"title":"SnowflakeSql","x-fern-type-name":"SnowflakeSql","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1.sql","typeLabel":"SnowflakeSql · object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template.oneOf.1","typeLabel":"NativeSnowflakeFlyteTaskTemplate · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.template","typeLabel":"TruefoundryFlyteTaskTemplate · object | NativeSnowflakeFlyteTaskTemplate · object"},"description":{"oneOf":[{}],"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0.description","typeLabel":"any"}},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.0","typeLabel":"FlyteTask · object"},{"type":"object","title":"FlyteWorkflow","required":["template"],"x-fern-type-name":"FlyteWorkflow","properties":{"template":{"type":"object","required":["id"],"properties":{"id":{"type":"object","required":["resourceType","name"],"properties":{"resourceType":{"type":"string","enum":["WORKFLOW"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.1.template.id.resourceType","typeLabel":"enum\u003cstring>"},"name":{"type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.1.template.id.name","typeLabel":"string"}},"title":"FlyteWorkflowID","x-fern-type-name":"FlyteWorkflowID","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.1.template.id","typeLabel":"FlyteWorkflowID · object"}},"title":"FlyteWorkflowTemplate","x-fern-type-name":"FlyteWorkflowTemplate","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.1.template","typeLabel":"FlyteWorkflowTemplate · object"},"description":{"oneOf":[{}],"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.1.description","typeLabel":"any"}},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.1","typeLabel":"FlyteWorkflow · object"},{"type":"object","title":"FlyteLaunchPlan","required":["id","spec","closure"],"x-fern-type-name":"FlyteLaunchPlan","properties":{"id":{"type":"object","required":["resourceType","name"],"properties":{"resourceType":{"type":"string","enum":["LAUNCH_PLAN"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.2.id.resourceType","typeLabel":"enum\u003cstring>"},"name":{"type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.2.id.name","typeLabel":"string"}},"title":"FlyteLaunchPlanID","x-fern-type-name":"FlyteLaunchPlanID","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.2.id","typeLabel":"FlyteLaunchPlanID · object"},"spec":{"type":"object","required":["workflowId"],"properties":{"workflowId":{"type":"object","required":["resourceType","name"],"properties":{"resourceType":{"type":"string","enum":["WORKFLOW"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.2.spec.workflowId.resourceType","typeLabel":"enum\u003cstring>"},"name":{"type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.2.spec.workflowId.name","typeLabel":"string"}},"title":"FlyteWorkflowID","x-fern-type-name":"FlyteWorkflowID","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.2.spec.workflowId","typeLabel":"FlyteWorkflowID · object"}},"title":"FlyteLaunchPlanSpec","x-fern-type-name":"FlyteLaunchPlanSpec","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.2.spec","typeLabel":"FlyteLaunchPlanSpec · object"},"closure":{"oneOf":[{"isRequired":true}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.2.closure","typeLabel":"any"}},"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX].oneOf.2","typeLabel":"FlyteLaunchPlan · object"}],"uniqueKey":"existingManifest.oneOf.74.flyte_entities.items.[INDEX]","typeLabel":"FlyteTask · object | FlyteWorkflow · object | FlyteLaunchPlan · object"},"uniqueKey":"existingManifest.oneOf.74.flyte_entities","typeLabel":"(FlyteTask · object | FlyteWorkflow · object | FlyteLaunchPlan · object)[]"},"alerts":{"description":"Alerts","type":"array","items":{"description":"Describes the configuration for the workflow alerts","type":"object","properties":{"notification_target":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBot","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.2.channels","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.2","typeLabel":"SlackBot · object"},{"type":"object","title":"PagerDuty","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].notification_target.oneOf.3","typeLabel":"PagerDuty · object"}],"uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].notification_target","typeLabel":"Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object"},"on_completion":{"description":"Send an alert when the job completes","type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].on_completion","typeLabel":"boolean"},"on_failure":{"description":"Send an alert when the job fails","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX].on_failure","typeLabel":"boolean"}},"title":"WorkflowAlert","x-fern-type-name":"WorkflowAlert","uniqueKey":"existingManifest.oneOf.74.alerts.items.[INDEX]","typeLabel":"WorkflowAlert · object"},"uniqueKey":"existingManifest.oneOf.74.alerts","typeLabel":"WorkflowAlert · object[]"}},"uniqueKey":"existingManifest.oneOf.74","typeLabel":"Workflow · object"},{"type":"object","title":"AsyncService","description":"The existing manifest of the resource","required":["type","replicas","worker_config","name","image","ports"],"x-fern-type-name":"AsyncService","properties":{"name":{"description":"Name of the service. This uniquely identifies this service in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.name","typeLabel":"string"},"image":{"oneOf":[{"type":"object","title":"Build","description":"Describes how we build our code into a Docker image.","required":["type","build_source","build_spec"],"x-fern-type-name":"Build","properties":{"type":{"description":"+value=build","type":"string","enum":["build"],"default":"build","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.type","typeLabel":"enum\u003cstring>"},"build_source":{"oneOf":[{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_source.oneOf.0.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_source.oneOf.0","typeLabel":"RemoteSource · object"},{"type":"object","title":"GitSource","description":"Describes that we are using code stored in a git repository to build our image","required":["type","repo_url","ref"],"x-fern-type-name":"GitSource","properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"The repository URL.","type":"string","pattern":"^(https?://)\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_source.oneOf.1.repo_url","typeLabel":"string"},"ref":{"description":"The commit SHA.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_source.oneOf.1.ref","typeLabel":"string"},"branch_name":{"description":"Selecting branch will select latest commit SHA of the branch.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_source.oneOf.1.branch_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_source.oneOf.1","typeLabel":"GitSource · object"},{"type":"object","title":"LocalSource","description":"Describes that we are using code stored in a local developement environment to build our image","required":["type","project_root_path","local_build"],"x-fern-type-name":"LocalSource","properties":{"type":{"description":"+value=local","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"project_root_path":{"description":"Local project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_source.oneOf.2.project_root_path","typeLabel":"string"},"local_build":{"description":"run docker build locally","type":"boolean","default":false,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_source.oneOf.2.local_build","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_source.oneOf.2","typeLabel":"LocalSource · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_source","typeLabel":"RemoteSource · object | GitSource · object | LocalSource · object"},"build_spec":{"oneOf":[{"type":"object","title":"DockerFileBuild","description":"Describes that we are using a dockerfile to build our image","required":["type","dockerfile_path","build_context_path"],"x-fern-type-name":"DockerFileBuild","properties":{"type":{"description":"+value=dockerfile","type":"string","enum":["dockerfile"],"default":"dockerfile","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.type","typeLabel":"enum\u003cstring>"},"dockerfile_path":{"description":"The file path of the Dockerfile relative to project root path.","type":"string","default":"./Dockerfile","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.dockerfile_path","typeLabel":"string"},"build_context_path":{"description":"Build context path for the Dockerfile relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.command","typeLabel":"string | string[]"},"build_args":{"description":"Build arguments to pass to docker build","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.build_args.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.build_args","typeLabel":"object"},"build_secrets":{"description":"Build secrets you can use in run statements inside dockerfile like RUN --mount=type=secret,id=pip_index_url ... you can learn more about build secrets here https://www.truefoundry.com/docs/docker-build-secrets","type":"array","items":{"type":"object","required":["id","value"],"properties":{"id":{"description":"The ID of the build secret.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].id","typeLabel":"string"},"value":{"description":"The value of the build secret.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].value","typeLabel":"string"},"env":{"description":"The name of the environment variable to inject the secret into.","type":"string","pattern":"^[_a-zA-Z0-9][_a-zA-Z0-9]{1,31}$","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].env","typeLabel":"string"}},"title":"BuildSecret","x-fern-type-name":"BuildSecret","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX]","typeLabel":"BuildSecret · object"},"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0.build_secrets","typeLabel":"BuildSecret · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.0","typeLabel":"DockerFileBuild · object"},{"type":"object","title":"PythonBuild","description":"Describes that we are using python to build a container image with a specific python version and pip packages installed.","required":["type","build_context_path","command"],"x-fern-type-name":"PythonBuild","properties":{"type":{"description":"+value=tfy-python-buildpack","type":"string","enum":["tfy-python-buildpack"],"default":"tfy-python-buildpack","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.type","typeLabel":"enum\u003cstring>"},"build_context_path":{"description":"Build path relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.build_context_path","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.command","typeLabel":"string | string[]"},"python_version":{"description":"Python version to run your application. Should be one of the tags listed on [Official Python Docker Page](https://hub.docker.com/_/python)","type":"string","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_version","typeLabel":"string"},"requirements_path":{"description":"Path to `requirements.txt` relative to\n`Path to build context`","type":"string","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.pip_packages","typeLabel":"string[]"},"python_dependencies":{"oneOf":[{"type":"object","title":"Pip","description":"Use pip to install requirements files and packages","required":["type"],"x-fern-type-name":"Pip","properties":{"type":{"description":"+value=pip","type":"string","enum":["pip"],"default":"pip","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.type","typeLabel":"enum\u003cstring>"},"requirements_path":{"description":"Path to `requirements.txt` relative to `Path to build context`","type":"string","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0.pip_packages","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.0","typeLabel":"Pip · object"},{"type":"object","title":"UV","description":"Use `uv` to setup env.\nYour build context root must contain `pyproject.toml` and `uv.lock`","required":["type"],"x-fern-type-name":"UV","properties":{"type":{"description":"+value=uv","type":"string","enum":["uv"],"default":"uv","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uv_version":{"description":"UV version to use","type":"string","default":"latest","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.uv_version","typeLabel":"string"},"sync_options":{"description":"Sync options to pass to uv command","type":"string","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1.sync_options","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.1","typeLabel":"UV · object"},{"type":"object","title":"Poetry","description":"Use `poetry` to setup env.\nYour build context root must contain `pyproject.toml` and `poetry.lock`","required":["type"],"x-fern-type-name":"Poetry","properties":{"type":{"description":"+value=poetry","type":"string","enum":["poetry"],"default":"poetry","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.type","typeLabel":"enum\u003cstring>"},"poetry_version":{"oneOf":[{"type":"string","description":"Poetry version to use","default":"latest","enum":["latest"],"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","description":"Poetry version to use","default":"latest","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version.oneOf.1","typeLabel":"string"}],"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.poetry_version","typeLabel":"enum\u003cstring> | string"},"install_options":{"description":"install options to pass to poetry command","type":"string","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2.install_options","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies.oneOf.2","typeLabel":"Poetry · object"}],"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.python_dependencies","typeLabel":"Pip · object | UV · object | Poetry · object"},"apt_packages":{"description":"Debian packages to install via `apt get`.\nIn Python/YAML E.g. [\"git\", \"ffmpeg\", \"htop\"]","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.apt_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.apt_packages","typeLabel":"string[]"},"cuda_version":{"description":"Version of CUDA Toolkit and CUDNN to install in the image\nThese combinations are based off of publically available docker images on docker hub\nYou can also specify a valid tag of the form {cuda_version_number}-cudnn{cudnn_version_number}-{runtime|devel}-ubuntu{ubuntu_version}\nRefer https://hub.docker.com/r/nvidia/cuda/tags for valid set of values\nNote: We use deadsnakes ubuntu ppa to add Python that currently supports only Ubuntu 18.04, 20.04 and 22.04","type":"string","pattern":"^((\\d+\\.\\d+(\\.\\d+)?-cudnn(\\d+)?-(runtime|devel)-ubuntu\\d+\\.\\d+)|11\\.0-cudnn8|11\\.1-cudnn8|11\\.2-cudnn8|11\\.3-cudnn8|11\\.4-cudnn8|11\\.5-cudnn8|11\\.6-cudnn8|11\\.7-cudnn8|11\\.8-cudnn8|12\\.0-cudnn8|12\\.1-cudnn8|12\\.2-cudnn8|12\\.3-cudnn9|12\\.4-cudnn9|12\\.5-cudnn9|12\\.6-cudnn9|12\\.8-cudnn9|12\\.9-cudnn9)$","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1.cuda_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec.oneOf.1","typeLabel":"PythonBuild · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.build_spec","typeLabel":"DockerFileBuild · object | PythonBuild · object"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.75.image.oneOf.0.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.0","typeLabel":"Build · object"},{"type":"object","title":"Image","description":"Describes that we are using a pre-built image stored in a Docker Image registry","required":["type","image_uri"],"x-fern-type-name":"Image","properties":{"type":{"description":"+value=image","type":"string","enum":["image"],"default":"image","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.1.type","typeLabel":"enum\u003cstring>"},"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.1.image_uri","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.75.image.oneOf.1.docker_registry","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.75.image.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.75.image.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"existingManifest.oneOf.75.image.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"existingManifest.oneOf.75.image.oneOf.1.command","typeLabel":"string | string[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image.oneOf.1","typeLabel":"Image · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.image","typeLabel":"Build · object | Image · object"},"ports":{"description":"Expose the deployment to make it accessible over the internet or keep it private. Implement authentication to restrict access. [Docs](https://docs.truefoundry.com/docs/define-ports-and-domains)","type":"array","items":{"description":"Describes the ports the service should be exposed to.","type":"object","required":["port","protocol","expose"],"properties":{"port":{"description":"Port number to expose.","type":"integer","minimum":1,"maximum":65535,"default":80,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].port","typeLabel":"integer"},"protocol":{"description":"Protocol for the port.","type":"string","enum":["TCP","UDP"],"default":"TCP","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].protocol","typeLabel":"enum\u003cstring>"},"expose":{"description":"Expose the port","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].expose","typeLabel":"boolean"},"app_protocol":{"description":"Application Protocol for the port.\nSelect the application protocol used by your service. For most use cases, this should be `http`(HTTP/1.1).\nIf you are running a gRPC server, select the `grpc` option.\nThis is only applicable if `expose=true`.","type":"string","enum":["http","grpc","tcp"],"default":"http","uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].app_protocol","typeLabel":"enum\u003cstring>"},"host":{"description":"Host e.g. ai.example.com, app.truefoundry.com","type":"string","pattern":"^((([a-zA-Z0-9\\-]{1,63}\\.)([a-zA-Z0-9\\-]{1,63}\\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$","uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].host","typeLabel":"string"},"path":{"description":"Path e.g. /v1/api/ml/, /v2/docs/","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].path","typeLabel":"string"},"rewrite_path_to":{"description":"Rewrite the path prefix to a different path.\nIf `path` is `/v1/api` and `rewrite_path_to` is `/api`. The URI in the HTTP request `http://0.0.0.0:8080/v1/api/houses` will be rewritten to `http://0.0.0.0:8080/api/houses` before the request is forwarded your service.\nDefaults to `/`.\nThis is only applicable if `path` is given.","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].rewrite_path_to","typeLabel":"string"},"auth":{"oneOf":[{"type":"object","title":"BasicAuthCreds","description":"Username and password","required":["type","username","password"],"x-fern-type-name":"BasicAuthCreds","properties":{"type":{"description":"+value=basic_auth","type":"string","enum":["basic_auth"],"default":"basic_auth","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"username":{"description":"Username for service auth - Username for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.0.username","typeLabel":"string"},"password":{"description":"Password for service auth - Password for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.0.password","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.0","typeLabel":"BasicAuthCreds · object"},{"type":"object","title":"JwtAuthConfig","description":"Configure JWT-based authentication using JWKS","required":["type","integration_fqn"],"x-fern-type-name":"JwtAuthConfig","properties":{"type":{"description":"+value=jwt_auth","type":"string","enum":["jwt_auth"],"default":"jwt_auth","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"integration_fqn":{"description":"FQN of the JWT Auth integration. If you can't find your integration here,\nadd it through the [Integrations](/integrations) page","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.integration_fqn","typeLabel":"string"},"enable_login":{"description":"Enable login for the service","type":"boolean","uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.enable_login","typeLabel":"boolean"},"claims":{"description":"List of key-value pairs of claims to verify in the JWT token","type":"array","items":{"type":"object","required":["key","values"],"properties":{"key":{"type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].key","typeLabel":"string"},"values":{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX]","typeLabel":"object"},"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.claims","typeLabel":"object[]"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.1","typeLabel":"JwtAuthConfig · object"},{"type":"object","title":"TrueFoundryInteractiveLogin","description":"Login with truefoundry","required":["type"],"x-fern-type-name":"TrueFoundryInteractiveLogin","properties":{"type":{"description":"+value=truefoundry_oauth","type":"string","enum":["truefoundry_oauth"],"default":"truefoundry_oauth","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.2.type","typeLabel":"enum\u003cstring>"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth.oneOf.2","typeLabel":"TrueFoundryInteractiveLogin · object"}],"uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX].auth","typeLabel":"BasicAuthCreds · object | JwtAuthConfig · object | TrueFoundryInteractiveLogin · object"}},"title":"Port","x-fern-type-name":"Port","uniqueKey":"existingManifest.oneOf.75.ports.items.[INDEX]","typeLabel":"Port · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.ports","typeLabel":"Port · object[]"},"type":{"description":"+value=async-service","type":"string","enum":["async-service"],"default":"async-service","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.type","typeLabel":"enum\u003cstring>"},"replicas":{"oneOf":[{"type":"number","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"maximum":500,"minimum":0,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.0","typeLabel":"number"},{"type":"object","title":"AsyncServiceAutoscaling","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"required":["metrics","min_replicas","max_replicas"],"x-fern-type-name":"AsyncServiceAutoscaling","properties":{"min_replicas":{"description":"Minimum number of replicas to keep available","type":"integer","minimum":0,"default":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.min_replicas","typeLabel":"integer"},"max_replicas":{"description":"Maximum number of replicas allowed for the component.","type":"integer","minimum":1,"maximum":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.max_replicas","typeLabel":"integer"},"metrics":{"oneOf":[{"type":"object","title":"SQSQueueMetricConfig","description":"Metrics to use for the autoscaler","required":["type","queue_length"],"x-fern-type-name":"SQSQueueMetricConfig","properties":{"type":{"description":"+value=sqs","type":"string","enum":["sqs"],"default":"sqs","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.type","typeLabel":"enum\u003cstring>"},"queue_length":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the queue and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.queue_length","typeLabel":"integer"},"auth":{"oneOf":[{"type":"object","title":"AwsSqsAccessKeyBasedAuth","description":"AWS Access Key Based Auth","required":["type","access_key_id","secret_access_key"],"x-fern-type-name":"AwsSqsAccessKeyBasedAuth","properties":{"type":{"description":"+value=access-key-based","type":"string","enum":["access-key-based"],"default":"access-key-based","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"access_key_id":{"description":"AWS access key ID that you want to use for authentication.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.auth.oneOf.0.access_key_id","typeLabel":"string"},"secret_access_key":{"description":"AWS access key secret that you want to use for authentication.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.auth.oneOf.0.secret_access_key","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.auth.oneOf.0","typeLabel":"AwsSqsAccessKeyBasedAuth · object"},{"type":"object","title":"AwsSqsAssumedRoleBasedAuth","description":"AWS Assumed Role Based Auth","required":["type","assumed_role_arn"],"x-fern-type-name":"AwsSqsAssumedRoleBasedAuth","properties":{"type":{"description":"+value=assumed-role-based","type":"string","enum":["assumed-role-based"],"default":"assumed-role-based","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"assumed_role_arn":{"description":"ARN of the role you want to assume.","type":"string","pattern":"^arn:(aws|aws-us-gov|aws-cn):iam::[0-9]{12}:role(/[\\w+=,.@-]+)+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.auth.oneOf.1.assumed_role_arn","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.auth.oneOf.1","typeLabel":"AwsSqsAssumedRoleBasedAuth · object"}],"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0.auth","typeLabel":"AwsSqsAccessKeyBasedAuth · object | AwsSqsAssumedRoleBasedAuth · object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.0","typeLabel":"SQSQueueMetricConfig · object"},{"type":"object","title":"NATSMetricConfig","description":"Metrics to use for the autoscaler","required":["type","lag_threshold"],"x-fern-type-name":"NATSMetricConfig","properties":{"type":{"description":"+value=nats","type":"string","enum":["nats"],"default":"nats","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.1.type","typeLabel":"enum\u003cstring>"},"lag_threshold":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the stream and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.1.lag_threshold","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.1","typeLabel":"NATSMetricConfig · object"},{"type":"object","title":"KafkaMetricConfig","description":"Metrics to use for the autoscaler","required":["type","lag_threshold"],"x-fern-type-name":"KafkaMetricConfig","properties":{"type":{"description":"+value=kafka","type":"string","enum":["kafka"],"default":"kafka","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.2.type","typeLabel":"enum\u003cstring>"},"lag_threshold":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the stream and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.2.lag_threshold","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.2","typeLabel":"KafkaMetricConfig · object"},{"type":"object","title":"CronMetric","description":"Metrics to use for the autoscaler","required":["type","start","end","timezone"],"x-fern-type-name":"CronMetric","properties":{"type":{"description":"+value=cron","type":"string","enum":["cron"],"default":"cron","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.3.type","typeLabel":"enum\u003cstring>"},"start":{"description":"Cron expression indicating the start of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.3.start","typeLabel":"string"},"end":{"description":"Cron expression indicating the end of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.3.end","typeLabel":"string"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","default":"UTC","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.3.timezone","typeLabel":"string"},"desired_replicas":{"description":"Desired number of replicas during the given interval. Default value is max_replicas.","type":"integer","minimum":1,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.3.desired_replicas","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.3","typeLabel":"CronMetric · object"},{"type":"object","title":"AMQPMetricConfig","description":"Metrics to use for the autoscaler","required":["type","queue_length"],"x-fern-type-name":"AMQPMetricConfig","properties":{"type":{"description":"+value=amqp","type":"string","enum":["amqp"],"default":"amqp","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.4.type","typeLabel":"enum\u003cstring>"},"queue_length":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the stream and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.4.queue_length","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics.oneOf.4","typeLabel":"AMQPMetricConfig · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.metrics","typeLabel":"SQSQueueMetricConfig · object | NATSMetricConfig · object | KafkaMetricConfig · object | CronMetric · object | AMQPMetricConfig · object"},"polling_interval":{"description":"This is the interval to check each trigger on.","type":"integer","minimum":0,"default":30,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1.polling_interval","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas.oneOf.1","typeLabel":"AsyncServiceAutoscaling · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.replicas","typeLabel":"number | AsyncServiceAutoscaling · object"},"worker_config":{"type":"object","required":["input_config","num_concurrent_workers"],"properties":{"input_config":{"oneOf":[{"type":"object","title":"SQSInputConfig","description":"Describes the configuration for the input SQS worker","required":["type","queue_url","region_name","visibility_timeout","wait_time_seconds"],"x-fern-type-name":"SQSInputConfig","properties":{"type":{"description":"+value=sqs","type":"string","enum":["sqs"],"default":"sqs","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"queue_url":{"description":"AWS SQS Queue URL of Subscriber","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.0.queue_url","typeLabel":"string"},"region_name":{"description":"AWS Region Name","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.0.region_name","typeLabel":"string"},"visibility_timeout":{"description":"A period during which Amazon SQS prevents all consumers from receiving and processing the message. If one message takes 5 seconds to process, you can set this number to 7 or any number higher than 5. This will ensure that while the message is being processed, it will not be available to other replicas. For more information, see [here](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html)","type":"integer","minimum":1,"maximum":43200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.0.visibility_timeout","typeLabel":"integer"},"wait_time_seconds":{"description":"Wait timeout for long polling. For more information, see [here](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html)","type":"integer","minimum":1,"maximum":20,"default":19,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.0.wait_time_seconds","typeLabel":"integer"},"auth":{"type":"object","required":["aws_access_key_id","aws_secret_access_key"],"properties":{"aws_access_key_id":{"description":"AWS Access Key ID","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.0.auth.aws_access_key_id","typeLabel":"string"},"aws_secret_access_key":{"description":"AWS Secret Access Key for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.0.auth.aws_secret_access_key","typeLabel":"string"},"aws_session_token":{"description":"AWS Session Token, only required when using temporary credentials","type":"string","uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.0.auth.aws_session_token","typeLabel":"string"}},"title":"AWSAccessKeyAuth","x-fern-type-name":"AWSAccessKeyAuth","uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.0.auth","typeLabel":"AWSAccessKeyAuth · object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.0","typeLabel":"SQSInputConfig · object"},{"type":"object","title":"NATSInputConfig","description":"Describes the configuration for the input NATS worker","required":["type","nats_url","stream_name","root_subject","consumer_name","wait_time_seconds"],"x-fern-type-name":"NATSInputConfig","properties":{"type":{"description":"+value=nats","type":"string","enum":["nats"],"default":"nats","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nats_url":{"description":"Input NATS URL","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.1.nats_url","typeLabel":"string"},"stream_name":{"description":"Name of the NATS stream","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.1.stream_name","typeLabel":"string"},"root_subject":{"description":"Root subject of input NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-.]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.1.root_subject","typeLabel":"string"},"consumer_name":{"description":"Consumer name of input NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-_]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.1.consumer_name","typeLabel":"string"},"wait_time_seconds":{"description":"Wait timeout for long polling.","type":"integer","minimum":1,"maximum":20,"default":19,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.1.wait_time_seconds","typeLabel":"integer"},"nats_metrics_url":{"description":"URL for the NATS metrics endpoint. It is compulsory if you want to use NATS autoscaling.","type":"string","pattern":"^(http(s?)://).*$","uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.1.nats_metrics_url","typeLabel":"string"},"auth":{"description":"NATS User Password Authentication","type":"object","required":["account_name","user","password"],"properties":{"account_name":{"description":"Name of the NATS account","type":"string","default":"$G","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.1.auth.account_name","typeLabel":"string"},"user":{"description":"User for NATS authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.1.auth.user","typeLabel":"string"},"password":{"description":"Password for NATS authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.1.auth.password","typeLabel":"string"}},"title":"NATSUserPasswordAuth","x-fern-type-name":"NATSUserPasswordAuth","uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.1.auth","typeLabel":"NATSUserPasswordAuth · object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.1","typeLabel":"NATSInputConfig · object"},{"type":"object","title":"KafkaInputConfig","description":"Describes the configuration for the input Kafka worker","required":["type","bootstrap_servers","topic_name","consumer_group","tls"],"x-fern-type-name":"KafkaInputConfig","properties":{"type":{"description":"+value=kafka","type":"string","enum":["kafka"],"default":"kafka","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.2.type","typeLabel":"enum\u003cstring>"},"bootstrap_servers":{"description":"'Kafka Bootstrap servers - Comma separated list of Kafka brokers \"hostname:port\" to connect to for bootstrap'","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.2.bootstrap_servers","typeLabel":"string"},"topic_name":{"description":"Kafka topic to subscribe to","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.2.topic_name","typeLabel":"string"},"consumer_group":{"description":"The name of the consumer group to join for dynamic partition assignment","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.2.consumer_group","typeLabel":"string"},"tls":{"description":"TLS configuration for SASL authentication","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.2.tls","typeLabel":"boolean"},"wait_time_seconds":{"description":"Wait timeout for long polling.","type":"integer","minimum":1,"maximum":300,"default":10,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.2.wait_time_seconds","typeLabel":"integer"},"auth":{"type":"object","required":["username","password"],"properties":{"username":{"description":"Username for SASL authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.2.auth.username","typeLabel":"string"},"password":{"description":"Password for SASL authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.2.auth.password","typeLabel":"string"}},"title":"KafkaSASLAuth","x-fern-type-name":"KafkaSASLAuth","uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.2.auth","typeLabel":"KafkaSASLAuth · object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.2","typeLabel":"KafkaInputConfig · object"},{"type":"object","title":"AMQPInputConfig","description":"Describes the configuration for the input AMQP worker","required":["type","url","queue_name","wait_time_seconds"],"x-fern-type-name":"AMQPInputConfig","properties":{"type":{"description":"+value=amqp","type":"string","enum":["amqp"],"default":"amqp","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.3.type","typeLabel":"enum\u003cstring>"},"url":{"description":"AMQP Queue URL of Subscriber","type":"string","pattern":"^(amqp|amqps?)://(?:[^:@]+(?::[^:@]+)?@)?([^/?]+)(?:/([^?]+))?/?([^?]+)?(?:\\?(.*))?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.3.url","typeLabel":"string"},"queue_name":{"description":"AMQP Queue Name","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.3.queue_name","typeLabel":"string"},"wait_time_seconds":{"description":"Wait timeout for long polling.","type":"integer","minimum":1,"default":5,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.3.wait_time_seconds","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config.oneOf.3","typeLabel":"AMQPInputConfig · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.input_config","typeLabel":"SQSInputConfig · object | NATSInputConfig · object | KafkaInputConfig · object | AMQPInputConfig · object"},"num_concurrent_workers":{"description":"Number of concurrent workers to spawn for the processor","type":"integer","minimum":1,"maximum":10,"default":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.num_concurrent_workers","typeLabel":"integer"},"output_config":{"oneOf":[{"type":"object","title":"SQSOutputConfig","description":"Describes the configuration for the output SQS worker","required":["type","queue_url","region_name"],"x-fern-type-name":"SQSOutputConfig","properties":{"type":{"description":"+value=sqs","type":"string","enum":["sqs"],"default":"sqs","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"queue_url":{"description":"AWS SQS Queue URL of Publisher","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.0.queue_url","typeLabel":"string"},"region_name":{"description":"AWS Region Name","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.0.region_name","typeLabel":"string"},"auth":{"type":"object","required":["aws_access_key_id","aws_secret_access_key"],"properties":{"aws_access_key_id":{"description":"AWS Access Key ID","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.0.auth.aws_access_key_id","typeLabel":"string"},"aws_secret_access_key":{"description":"AWS Secret Access Key for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.0.auth.aws_secret_access_key","typeLabel":"string"},"aws_session_token":{"description":"AWS Session Token, only required when using temporary credentials","type":"string","uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.0.auth.aws_session_token","typeLabel":"string"}},"title":"AWSAccessKeyAuth","x-fern-type-name":"AWSAccessKeyAuth","uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.0.auth","typeLabel":"AWSAccessKeyAuth · object"}},"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.0","typeLabel":"SQSOutputConfig · object"},{"type":"object","title":"NATSOutputConfig","description":"Describes the configuration for the output NATS worker","required":["type","nats_url","root_subject"],"x-fern-type-name":"NATSOutputConfig","properties":{"type":{"description":"+value=nats","type":"string","enum":["nats"],"default":"nats","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nats_url":{"description":"Output NATS URL","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.1.nats_url","typeLabel":"string"},"root_subject":{"description":"Root subject of output NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-.]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.1.root_subject","typeLabel":"string"},"auth":{"description":"NATS User Password Authentication","type":"object","required":["account_name","user","password"],"properties":{"account_name":{"description":"Name of the NATS account","type":"string","default":"$G","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.1.auth.account_name","typeLabel":"string"},"user":{"description":"User for NATS authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.1.auth.user","typeLabel":"string"},"password":{"description":"Password for NATS authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.1.auth.password","typeLabel":"string"}},"title":"NATSUserPasswordAuth","x-fern-type-name":"NATSUserPasswordAuth","uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.1.auth","typeLabel":"NATSUserPasswordAuth · object"}},"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.1","typeLabel":"NATSOutputConfig · object"},{"type":"object","title":"CoreNATSOutputConfig","description":"Describes the configuration for the output Core NATS worker","required":["type","nats_url","root_subject"],"x-fern-type-name":"CoreNATSOutputConfig","properties":{"type":{"description":"+value=core-nats","type":"string","enum":["core-nats"],"default":"core-nats","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.2.type","typeLabel":"enum\u003cstring>"},"nats_url":{"description":"Output NATS URL","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.2.nats_url","typeLabel":"string"},"root_subject":{"description":"Root subject of output NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-.]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.2.root_subject","typeLabel":"string"},"auth":{"description":"NATS User Password Authentication","type":"object","required":["account_name","user","password"],"properties":{"account_name":{"description":"Name of the NATS account","type":"string","default":"$G","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.2.auth.account_name","typeLabel":"string"},"user":{"description":"User for NATS authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.2.auth.user","typeLabel":"string"},"password":{"description":"Password for NATS authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.2.auth.password","typeLabel":"string"}},"title":"NATSUserPasswordAuth","x-fern-type-name":"NATSUserPasswordAuth","uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.2.auth","typeLabel":"NATSUserPasswordAuth · object"}},"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.2","typeLabel":"CoreNATSOutputConfig · object"},{"type":"object","title":"KafkaOutputConfig","description":"Describes the configuration for the output Kafka worker","required":["type","bootstrap_servers","topic_name","tls"],"x-fern-type-name":"KafkaOutputConfig","properties":{"type":{"description":"+value=kafka","type":"string","enum":["kafka"],"default":"kafka","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.3.type","typeLabel":"enum\u003cstring>"},"bootstrap_servers":{"description":"'Kafka Bootstrap servers - Comma separated list of Kafka brokers \"hostname:port\" to connect to for bootstrap'","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.3.bootstrap_servers","typeLabel":"string"},"topic_name":{"description":"Kafka topic to publish to","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.3.topic_name","typeLabel":"string"},"tls":{"description":"TLS configuration for SASL authentication","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.3.tls","typeLabel":"boolean"},"auth":{"type":"object","required":["username","password"],"properties":{"username":{"description":"Username for SASL authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.3.auth.username","typeLabel":"string"},"password":{"description":"Password for SASL authentication","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.3.auth.password","typeLabel":"string"}},"title":"KafkaSASLAuth","x-fern-type-name":"KafkaSASLAuth","uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.3.auth","typeLabel":"KafkaSASLAuth · object"}},"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.3","typeLabel":"KafkaOutputConfig · object"},{"type":"object","title":"AMQPOutputConfig","description":"Describes the configuration for the output AMQP worker","required":["type","url","routing_key"],"x-fern-type-name":"AMQPOutputConfig","properties":{"type":{"description":"+value=amqp","type":"string","enum":["amqp"],"default":"amqp","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.4.type","typeLabel":"enum\u003cstring>"},"url":{"description":"AMQP Queue URL of Publisher","type":"string","pattern":"^(amqp|amqps?)://(?:[^:@]+(?::[^:@]+)?@)?([^/?]+)(?:/([^?]+))?/?([^?]+)?(?:\\?(.*))?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.4.url","typeLabel":"string"},"routing_key":{"description":"AMQP Routing Key to publish to.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.4.routing_key","typeLabel":"string"},"exchange_name":{"description":"AMQP Exchange Name","type":"string","uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.4.exchange_name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config.oneOf.4","typeLabel":"AMQPOutputConfig · object"}],"uniqueKey":"existingManifest.oneOf.75.worker_config.output_config","typeLabel":"SQSOutputConfig · object | NATSOutputConfig · object | CoreNATSOutputConfig · object | KafkaOutputConfig · object | AMQPOutputConfig · object"}},"title":"WorkerConfig","x-fern-type-name":"WorkerConfig","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.worker_config","typeLabel":"WorkerConfig · object"},"artifacts_download":{"description":"Download and cache models in a volume to enhance loading speeds and reduce costs by avoiding repeated downloads. [Docs](https://docs.truefoundry.com/docs/download-and-cache-models)","type":"object","required":["artifacts"],"properties":{"artifacts":{"description":"List of artifacts to be cached","type":"array","items":{"oneOf":[{"type":"object","title":"TrueFoundryArtifactSource","description":"Input for Artifact from TrueFoundry Artifact Registry","required":["type","artifact_version_fqn","download_path_env_variable"],"x-fern-type-name":"TrueFoundryArtifactSource","properties":{"type":{"description":"+value=truefoundry-artifact","type":"string","enum":["truefoundry-artifact"],"default":"truefoundry-artifact","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"artifact_version_fqn":{"description":"Artifact or Model Version FQN of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.0.artifact_version_fqn","typeLabel":"string"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.0.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.0","typeLabel":"TrueFoundryArtifactSource · object"},{"type":"object","title":"HuggingfaceArtifactSource","description":"Input for Artifact from Huggingface Model Hub","required":["type","model_id","revision","ignore_patterns","download_path_env_variable"],"x-fern-type-name":"HuggingfaceArtifactSource","properties":{"type":{"description":"+value=huggingface-hub","type":"string","enum":["huggingface-hub"],"default":"huggingface-hub","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"model_id":{"description":"Model ID of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.1.model_id","typeLabel":"string"},"revision":{"description":"Revision of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.1.revision","typeLabel":"string"},"ignore_patterns":{"description":"List of patterns to ignore while downloading the artifact","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns.items.[INDEX]","typeLabel":"string"},"default":["*.h5","*.ot","*.tflite","*.msgpack"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns","typeLabel":"string[]"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.1.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.75.artifacts_download.artifacts.items.[INDEX].oneOf.1","typeLabel":"HuggingfaceArtifactSource · object"}],"uniqueKey":"existingManifest.oneOf.75.artifacts_download.artifacts.items.[INDEX]","typeLabel":"TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.artifacts_download.artifacts","typeLabel":"(TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object)[]"},"cache_volume":{"description":"Describes the volume that will be used to cache the models","type":"object","required":["storage_class","cache_size"],"properties":{"storage_class":{"description":"Storage class of the Volume where artifacts will be cached","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.artifacts_download.cache_volume.storage_class","typeLabel":"string"},"cache_size":{"description":"Size of the Volume (in GB) where artifacts will be cached. Should be greater than twice the size of artifacts getting cached","type":"integer","minimum":1,"maximum":10000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.artifacts_download.cache_volume.cache_size","typeLabel":"integer"}},"title":"ArtifactsCacheVolume","x-fern-type-name":"ArtifactsCacheVolume","uniqueKey":"existingManifest.oneOf.75.artifacts_download.cache_volume","typeLabel":"ArtifactsCacheVolume · object"}},"title":"ArtifactsDownload","x-fern-type-name":"ArtifactsDownload","uniqueKey":"existingManifest.oneOf.75.artifacts_download","typeLabel":"ArtifactsDownload · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"existingManifest.oneOf.75.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.75.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.75.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"existingManifest.oneOf.75.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.75.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.75.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.75.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.75.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"existingManifest.oneOf.75.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"existingManifest.oneOf.75.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"existingManifest.oneOf.75.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"existingManifest.oneOf.75.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.75.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.75.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.75.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.75.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.75.env","typeLabel":"object | null"},"service_account":{"type":"string","uniqueKey":"existingManifest.oneOf.75.service_account","typeLabel":"string"},"mounts":{"description":"Configure data to be mounted to service pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-service)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.75.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.75.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"existingManifest.oneOf.75.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.75.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"existingManifest.oneOf.75.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"existingManifest.oneOf.75.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"labels":{"description":"Labels","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.75.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.75.labels","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"existingManifest.oneOf.75.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"existingManifest.oneOf.75.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"existingManifest.oneOf.75.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"existingManifest.oneOf.75.kustomize","typeLabel":"Kustomize · object"},"liveness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.liveness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.liveness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.liveness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"existingManifest.oneOf.75.liveness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"existingManifest.oneOf.75.liveness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.liveness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"existingManifest.oneOf.75.liveness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"existingManifest.oneOf.75.liveness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"existingManifest.oneOf.75.liveness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"existingManifest.oneOf.75.liveness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"existingManifest.oneOf.75.liveness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"existingManifest.oneOf.75.liveness_probe","typeLabel":"HealthProbe · object"},"readiness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.readiness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.readiness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.readiness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"existingManifest.oneOf.75.readiness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"existingManifest.oneOf.75.readiness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.readiness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"existingManifest.oneOf.75.readiness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"existingManifest.oneOf.75.readiness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"existingManifest.oneOf.75.readiness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"existingManifest.oneOf.75.readiness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"existingManifest.oneOf.75.readiness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"existingManifest.oneOf.75.readiness_probe","typeLabel":"HealthProbe · object"},"startup_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.startup_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.startup_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.startup_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"existingManifest.oneOf.75.startup_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"existingManifest.oneOf.75.startup_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.startup_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"existingManifest.oneOf.75.startup_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"existingManifest.oneOf.75.startup_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"existingManifest.oneOf.75.startup_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"existingManifest.oneOf.75.startup_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"existingManifest.oneOf.75.startup_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"existingManifest.oneOf.75.startup_probe","typeLabel":"HealthProbe · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"existingManifest.oneOf.75.workspace_fqn","typeLabel":"string"},"rollout_strategy":{"description":"This strategy updates the pods in a rolling fashion such that a subset of the\ntotal pods are replaced with new version at one time.\nA commonly used strategy can be to have maxUnavailablePercentage close to 0 so that there\nis no downtime and keep the maxSurgePercentage to around 25%. If you are anyways running\na large number of pods, the service can often tolerate a few pods going down - so you\nmax maxUnavailablePercentage = 10 and maxSurgePercentage=0. You can read about it more\n[here](https://spot.io/resources/kubernetes-autoscaling/5-kubernetes-deployment-strategies-roll-out-like-the-pros/)","type":"object","required":["type","max_unavailable_percentage","max_surge_percentage"],"properties":{"type":{"description":"+value=rolling_update","type":"string","enum":["rolling_update"],"default":"rolling_update","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.rollout_strategy.type","typeLabel":"enum\u003cstring>"},"max_unavailable_percentage":{"description":"Percentage of total replicas that can be brought down at one time.\nFor a value of 25 when replicas are set to 12 this would mean minimum (25% of 12) = 3 pods might be unavailable during the deployment.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.rollout_strategy.max_unavailable_percentage","typeLabel":"integer"},"max_surge_percentage":{"description":"Percentage of total replicas of updated image that can be brought up over the total replicas count.\nFor a value of 25 when replicas are set to 12 this would mean (12+(25% of 12) = 15) pods might be running at one time.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"existingManifest.oneOf.75.rollout_strategy.max_surge_percentage","typeLabel":"integer"}},"title":"Rolling","x-fern-type-name":"Rolling","uniqueKey":"existingManifest.oneOf.75.rollout_strategy","typeLabel":"Rolling · object"},"sidecar":{"type":"object","required":["destination_url"],"properties":{"destination_url":{"description":"URL for the processor to invoke","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.75.sidecar.destination_url","typeLabel":"string"},"request_timeout":{"description":"Timeout for the invoke request in seconds","type":"integer","minimum":1,"default":10,"uniqueKey":"existingManifest.oneOf.75.sidecar.request_timeout","typeLabel":"integer"},"sidecar_image":{"description":"Image for the processor sidecar (This field will be deprecated in the future)","type":"string","uniqueKey":"existingManifest.oneOf.75.sidecar.sidecar_image","typeLabel":"string"}},"title":"AsyncProcessorSidecar","x-fern-type-name":"AsyncProcessorSidecar","uniqueKey":"existingManifest.oneOf.75.sidecar","typeLabel":"AsyncProcessorSidecar · object"}},"uniqueKey":"existingManifest.oneOf.75","typeLabel":"AsyncService · object"},{"type":"object","title":"SSHServer","description":"The existing manifest of the resource","required":["type","image","ssh_public_key","name","home_directory_size"],"x-fern-type-name":"SSHServer","properties":{"name":{"description":"Name of the workbench. This uniquely identifies this workbench in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.name","typeLabel":"string"},"home_directory_size":{"description":"Size of the home directory for the workbench (Persistent Storage)","type":"integer","minimum":5,"maximum":64000,"default":20,"isRequired":true,"uniqueKey":"existingManifest.oneOf.76.home_directory_size","typeLabel":"integer"},"type":{"description":"+value=ssh-server","type":"string","enum":["ssh-server"],"default":"ssh-server","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.type","typeLabel":"enum\u003cstring>"},"image":{"description":"Workbench Image with persistent environment (Python 3.11.6)","type":"object","required":["image_uri"],"properties":{"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.image.image_uri","typeLabel":"string"},"build_script":{"description":"The build script to run when building the image.\nThis will be executed as the last step in the docker build process as the root user (RUN DEBIAN_FRONTEND=noninteractive bash -ex build_script.sh)","type":"string","minLength":1,"maxLength":5120,"uniqueKey":"existingManifest.oneOf.76.image.build_script","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","uniqueKey":"existingManifest.oneOf.76.image.docker_registry","typeLabel":"string"}},"title":"WorkbenchImage","x-fern-type-name":"WorkbenchImage","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.image","typeLabel":"WorkbenchImage · object"},"ssh_public_key":{"description":"Add Your SSH Public Key, this will be used to authenticate you to the SSH Server. \\\nYou can find it using `cat ~/.ssh/id_rsa.pub` in Mac/Linux or `type $home\\.ssh\\id_rsa.pub` in Windows Powershell. \\\nYou can also generate a new SSH key pair using `ssh-keygen -t rsa` in your local terminal. (same for both Mac/Linux and Windows Powershell)","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.ssh_public_key","typeLabel":"string"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"existingManifest.oneOf.76.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.76.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.76.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"existingManifest.oneOf.76.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.76.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.76.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.76.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.76.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"existingManifest.oneOf.76.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"existingManifest.oneOf.76.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"existingManifest.oneOf.76.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"existingManifest.oneOf.76.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.76.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.76.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.76.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.76.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.76.env","typeLabel":"object | null"},"mounts":{"description":"Configure data to be mounted to workbench pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.76.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.76.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"existingManifest.oneOf.76.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"existingManifest.oneOf.76.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.76.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"existingManifest.oneOf.76.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"existingManifest.oneOf.76.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"service_account":{"description":"+sort=10113","type":"string","uniqueKey":"existingManifest.oneOf.76.service_account","typeLabel":"string"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"existingManifest.oneOf.76.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"existingManifest.oneOf.76.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"existingManifest.oneOf.76.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"existingManifest.oneOf.76.kustomize","typeLabel":"Kustomize · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"existingManifest.oneOf.76.workspace_fqn","typeLabel":"string"},"cull_timeout":{"description":"Stop the SSH Server instance after this much time in minutes of inactivity. The instance is considered active if there is at least one active SSH connection (a client connected to the SSH server), or if a background job is running using tmux or screen, or if the pod has restarted.","type":"integer","minimum":5,"uniqueKey":"existingManifest.oneOf.76.cull_timeout","typeLabel":"integer"}},"uniqueKey":"existingManifest.oneOf.76","typeLabel":"SSHServer · object"},{"type":"object","title":"SparkJob","description":"The existing manifest of the resource","required":["type","name","image","entrypoint","driver_config","executor_config"],"x-fern-type-name":"SparkJob","properties":{"type":{"description":"+value=spark-job\n+sort=1","type":"string","enum":["spark-job"],"default":"spark-job","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the job","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.name","typeLabel":"string"},"image":{"oneOf":[{"type":"object","title":"SparkImage","description":"Describes that we are using a pre-built image stored in a Docker Image registry","required":["type","spark_version","image_uri"],"x-fern-type-name":"SparkImage","properties":{"type":{"description":"+value=spark-image","type":"string","enum":["spark-image"],"default":"spark-image","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image.oneOf.0.type","typeLabel":"enum\u003cstring>"},"spark_version":{"description":"Spark version should match the spark version installed in the image.","type":"string","default":"3.5.2","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image.oneOf.0.spark_version","typeLabel":"string"},"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image.oneOf.0.image_uri","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.77.image.oneOf.0.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image.oneOf.0","typeLabel":"SparkImage · object"},{"type":"object","title":"SparkImageBuild","description":"Describes that we are building a new image based on the spec","required":["type","build_source","build_spec"],"x-fern-type-name":"SparkImageBuild","properties":{"type":{"description":"+value=spark-image-build","type":"string","enum":["spark-image-build"],"default":"spark-image-build","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image.oneOf.1.type","typeLabel":"enum\u003cstring>"},"build_source":{"oneOf":[{"type":"object","title":"GitSource","description":"Describes that we are using code stored in a git repository to build our image","required":["type","repo_url","ref"],"x-fern-type-name":"GitSource","properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image.oneOf.1.build_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"The repository URL.","type":"string","pattern":"^(https?://)\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image.oneOf.1.build_source.oneOf.0.repo_url","typeLabel":"string"},"ref":{"description":"The commit SHA.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image.oneOf.1.build_source.oneOf.0.ref","typeLabel":"string"},"branch_name":{"description":"Selecting branch will select latest commit SHA of the branch.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.77.image.oneOf.1.build_source.oneOf.0.branch_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image.oneOf.1.build_source.oneOf.0","typeLabel":"GitSource · object"},{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image.oneOf.1.build_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image.oneOf.1.build_source.oneOf.1.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image.oneOf.1.build_source.oneOf.1","typeLabel":"RemoteSource · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image.oneOf.1.build_source","typeLabel":"GitSource · object | RemoteSource · object"},"build_spec":{"description":"Describes that we are using python to build a container image with a specific python version and pip packages installed.","type":"object","required":["type","spark_version","build_context_path"],"properties":{"type":{"description":"+value=tfy-spark-buildpack","type":"string","enum":["tfy-spark-buildpack"],"default":"tfy-spark-buildpack","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image.oneOf.1.build_spec.type","typeLabel":"enum\u003cstring>"},"spark_version":{"description":"Spark version should match the spark version installed in the image.","type":"string","default":"3.5.2","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image.oneOf.1.build_spec.spark_version","typeLabel":"string"},"build_context_path":{"description":"Build path relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image.oneOf.1.build_spec.build_context_path","typeLabel":"string"},"requirements_path":{"description":"Path to `requirements.txt` relative to\n`Path to build context`","type":"string","uniqueKey":"existingManifest.oneOf.77.image.oneOf.1.build_spec.requirements_path","typeLabel":"string"}},"title":"SparkBuild","x-fern-type-name":"SparkBuild","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image.oneOf.1.build_spec","typeLabel":"SparkBuild · object"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.77.image.oneOf.1.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image.oneOf.1","typeLabel":"SparkImageBuild · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.image","typeLabel":"SparkImage · object | SparkImageBuild · object"},"entrypoint":{"oneOf":[{"type":"object","title":"SparkJobPythonEntrypoint","description":"python","required":["type","main_application_file"],"x-fern-type-name":"SparkJobPythonEntrypoint","properties":{"type":{"description":"+value=python","type":"string","enum":["python"],"default":"python","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.0.type","typeLabel":"enum\u003cstring>"},"main_application_file":{"description":"The main application file to be executed by the spark job. Relative path in case of git repository.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.0.main_application_file","typeLabel":"string"},"arguments":{"description":"Arguments to be passed to the main application file.","type":"string","uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.0.arguments","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.0","typeLabel":"SparkJobPythonEntrypoint · object"},{"type":"object","title":"SparkJobScalaEntrypoint","description":"scala","required":["type","main_application_file","main_class"],"x-fern-type-name":"SparkJobScalaEntrypoint","properties":{"type":{"description":"+value=scala","type":"string","enum":["scala"],"default":"scala","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.1.type","typeLabel":"enum\u003cstring>"},"main_application_file":{"description":"The main application file to be executed by the spark job.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.1.main_application_file","typeLabel":"string"},"main_class":{"description":"The main class to be executed by the spark job.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.1.main_class","typeLabel":"string"},"arguments":{"description":"Arguments to be passed to the main application file.","type":"string","uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.1.arguments","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.1","typeLabel":"SparkJobScalaEntrypoint · object"},{"type":"object","title":"SparkJobJavaEntrypoint","description":"java","required":["type","main_application_file","main_class"],"x-fern-type-name":"SparkJobJavaEntrypoint","properties":{"type":{"description":"+value=java","type":"string","enum":["java"],"default":"java","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.2.type","typeLabel":"enum\u003cstring>"},"main_application_file":{"description":"The main application file to be executed by the spark job.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.2.main_application_file","typeLabel":"string"},"main_class":{"description":"The main class to be executed by the spark job.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.2.main_class","typeLabel":"string"},"arguments":{"description":"Arguments to be passed to the main application file.","type":"string","uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.2.arguments","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.2","typeLabel":"SparkJobJavaEntrypoint · object"},{"type":"object","title":"SparkJobPythonNotebookEntrypoint","description":"python notebook","required":["type","main_application_file"],"x-fern-type-name":"SparkJobPythonNotebookEntrypoint","properties":{"type":{"description":"+value=python-notebook","type":"string","enum":["python-notebook"],"default":"python-notebook","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.3.type","typeLabel":"enum\u003cstring>"},"main_application_file":{"description":"The main application file to be executed by the spark job. Relative path in case of git repository.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.3.main_application_file","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.3","typeLabel":"SparkJobPythonNotebookEntrypoint · object"},{"type":"object","title":"SparkJobScalaNotebookEntrypoint","description":"scala notebook","required":["type","main_application_file"],"x-fern-type-name":"SparkJobScalaNotebookEntrypoint","properties":{"type":{"description":"+value=scala-notebook","type":"string","enum":["scala-notebook"],"default":"scala-notebook","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.4.type","typeLabel":"enum\u003cstring>"},"main_application_file":{"description":"The main application file to be executed by the spark job. Relative path in case of git repository.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.4.main_application_file","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.entrypoint.oneOf.4","typeLabel":"SparkJobScalaNotebookEntrypoint · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.entrypoint","typeLabel":"SparkJobPythonEntrypoint · object | SparkJobScalaEntrypoint · object | SparkJobJavaEntrypoint · object | SparkJobPythonNotebookEntrypoint · object | SparkJobScalaNotebookEntrypoint · object"},"driver_config":{"type":"object","title":"SparkJobDriverConfig","description":"Driver Config","x-fern-type-name":"SparkJobDriverConfig","properties":{"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.77.driver_config.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.77.driver_config.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"existingManifest.oneOf.77.driver_config.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"existingManifest.oneOf.77.driver_config.resources","typeLabel":"Resources · object"},"kustomize":{"description":"Patch driver pod spec fields like tolerations, nodeSelector, affinity, etc.","type":"object","uniqueKey":"existingManifest.oneOf.77.driver_config.kustomize","typeLabel":"object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.driver_config","typeLabel":"SparkJobDriverConfig · object"},"executor_config":{"type":"object","title":"SparkJobExecutorConfig","description":"Executor Config","required":["instances"],"x-fern-type-name":"SparkJobExecutorConfig","properties":{"instances":{"oneOf":[{"type":"object","title":"SparkExecutorFixedInstances","description":"Fixed Instances","default":{"type":"fixed","count":1},"required":["type","count"],"x-fern-type-name":"SparkExecutorFixedInstances","properties":{"type":{"description":"+value=fixed","type":"string","enum":["fixed"],"default":"fixed","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.instances.oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Number of instances to start","type":"integer","minimum":0,"maximum":500,"default":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.instances.oneOf.0.count","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.instances.oneOf.0","typeLabel":"SparkExecutorFixedInstances · object"},{"type":"object","title":"SparkExecutorDynamicScaling","description":"Dynamic Scaling","default":{"type":"fixed","count":1},"required":["type","min","max"],"x-fern-type-name":"SparkExecutorDynamicScaling","properties":{"type":{"description":"+value=dynamic","type":"string","enum":["dynamic"],"default":"dynamic","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.instances.oneOf.1.type","typeLabel":"enum\u003cstring>"},"min":{"description":"Minimum number of instances to start / scale down to","type":"integer","minimum":0,"maximum":500,"default":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.instances.oneOf.1.min","typeLabel":"integer"},"max":{"description":"Maximum number of instances to scale up to","type":"integer","minimum":0,"maximum":500,"default":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.instances.oneOf.1.max","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.instances.oneOf.1","typeLabel":"SparkExecutorDynamicScaling · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.instances","typeLabel":"SparkExecutorFixedInstances · object | SparkExecutorDynamicScaling · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.77.executor_config.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.77.executor_config.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"existingManifest.oneOf.77.executor_config.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"existingManifest.oneOf.77.executor_config.resources","typeLabel":"Resources · object"},"kustomize":{"description":"Patch executor pod spec fields like tolerations, nodeSelector, affinity, etc.","type":"object","uniqueKey":"existingManifest.oneOf.77.executor_config.kustomize","typeLabel":"object"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.executor_config","typeLabel":"SparkJobExecutorConfig · object"},"trigger":{"oneOf":[{"type":"object","title":"Manual","description":"Trigger the job manually. [Docs](https://docs.truefoundry.com/docs/deploy-a-cron-job)","default":{"type":"manual"},"required":["type"],"x-fern-type-name":"Manual","properties":{"type":{"description":"+value=manual","type":"string","enum":["manual"],"default":"manual","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.trigger.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.77.trigger.oneOf.0","typeLabel":"Manual · object"},{"type":"object","title":"Schedule","description":"Run the job on a schedule. [Docs](https://docs.truefoundry.com/docs/deploy-a-cron-job)","default":{"type":"manual"},"required":["type","schedule","concurrency_policy"],"x-fern-type-name":"Schedule","properties":{"type":{"description":"+value=scheduled","type":"string","enum":["scheduled"],"default":"scheduled","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.trigger.oneOf.1.type","typeLabel":"enum\u003cstring>"},"schedule":{"description":"Specify the schedule for this job to be run periodically in cron format.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.trigger.oneOf.1.schedule","typeLabel":"string"},"concurrency_policy":{"description":"Choose whether to allow this job to run while another instance of the job is running, or to replace the currently running instance. Allow\nwill enable multiple instances of this job to run. Forbid will keep the current instance of the job running and stop a new instance from being run.\nReplace will terminate any currently running instance of the job and start a new one.","type":"string","enum":["Forbid","Allow","Replace"],"default":"Forbid","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.trigger.oneOf.1.concurrency_policy","typeLabel":"enum\u003cstring>"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","uniqueKey":"existingManifest.oneOf.77.trigger.oneOf.1.timezone","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.77.trigger.oneOf.1","typeLabel":"Schedule · object"}],"uniqueKey":"existingManifest.oneOf.77.trigger","typeLabel":"Manual · object | Schedule · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"uniqueKey":"existingManifest.oneOf.77.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"uniqueKey":"existingManifest.oneOf.77.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.77.env","typeLabel":"object | null"},"spark_conf":{"oneOf":[{"description":"Extra configuration properties to be passed to the spark job. [Docs](https://spark.apache.org/docs/latest/configuration.html)","type":"object","default":null,"additionalProperties":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.77.spark_conf.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.77.spark_conf.oneOf.0","typeLabel":"object"},{"description":"Extra configuration properties to be passed to the spark job. [Docs](https://spark.apache.org/docs/latest/configuration.html)","type":"null","default":null,"additionalProperties":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.77.spark_conf.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.77.spark_conf.oneOf.1","typeLabel":"null"}],"uniqueKey":"existingManifest.oneOf.77.spark_conf","typeLabel":"object | null"},"mounts":{"description":"Configure volumes to be mounted to driver and executors. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"type":"object","required":["type","mount_path","volume_fqn"],"properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.mounts.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.mounts.items.[INDEX].mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.mounts.items.[INDEX].volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"existingManifest.oneOf.77.mounts.items.[INDEX].sub_path","typeLabel":"string"}},"title":"VolumeMount","x-fern-type-name":"VolumeMount","uniqueKey":"existingManifest.oneOf.77.mounts.items.[INDEX]","typeLabel":"VolumeMount · object"},"uniqueKey":"existingManifest.oneOf.77.mounts","typeLabel":"VolumeMount · object[]"},"retries":{"description":"Specify the maximum number of attempts to retry a job before it is marked as failed.","type":"integer","minimum":0,"maximum":10,"default":0,"uniqueKey":"existingManifest.oneOf.77.retries","typeLabel":"integer"},"service_account":{"description":"Service Account","type":"string","uniqueKey":"existingManifest.oneOf.77.service_account","typeLabel":"string"},"alerts":{"description":"Configure alerts to be sent when the spark job starts/fails/completes","type":"array","items":{"description":"Describes the configuration for the job alerts","type":"object","properties":{"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].to_emails.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].to_emails","typeLabel":"string[]"},"notification_target":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBot","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.2.channels","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.2","typeLabel":"SlackBot · object"},{"type":"object","title":"PagerDuty","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].notification_target.oneOf.3","typeLabel":"PagerDuty · object"}],"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].notification_target","typeLabel":"Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object"},"on_start":{"description":"Send an alert when the job starts","type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].on_start","typeLabel":"boolean"},"on_completion":{"type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].on_completion","typeLabel":"boolean"},"on_failure":{"description":"Send an alert when the job fails","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX].on_failure","typeLabel":"boolean"}},"title":"JobAlert","x-fern-type-name":"JobAlert","uniqueKey":"existingManifest.oneOf.77.alerts.items.[INDEX]","typeLabel":"JobAlert · object"},"uniqueKey":"existingManifest.oneOf.77.alerts","typeLabel":"JobAlert · object[]"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"existingManifest.oneOf.77.workspace_fqn","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.77","typeLabel":"SparkJob · object"},{"type":"object","title":"TenantModelRateLimitConfig","description":"The existing manifest of the resource","required":["type","name","limits","applies_to","mode","log_request_body_on_block"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=tenant-rate-limit-config/model\n+sort=1","type":"string","enum":["tenant-rate-limit-config/model"],"default":"tenant-rate-limit-config/model","isRequired":true,"uniqueKey":"existingManifest.oneOf.78.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique name for this rate limit","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.78.name","typeLabel":"string"},"limits":{"type":"object","properties":{"requests_per_minute":{"description":"Maximum number of requests per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.limits.requests_per_minute","typeLabel":"integer"},"requests_per_hour":{"description":"Maximum number of requests per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.limits.requests_per_hour","typeLabel":"integer"},"requests_per_day":{"description":"Maximum number of requests per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.limits.requests_per_day","typeLabel":"integer"},"tokens_per_minute":{"description":"Maximum number of tokens (input + output) per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.limits.tokens_per_minute","typeLabel":"integer"},"tokens_per_hour":{"description":"Maximum number of tokens (input + output) per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.limits.tokens_per_hour","typeLabel":"integer"},"tokens_per_day":{"description":"Maximum number of tokens (input + output) per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.limits.tokens_per_day","typeLabel":"integer"}},"title":"RateLimitV2ModelLimits","x-fern-type-name":"RateLimitV2ModelLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.78.limits","typeLabel":"RateLimitV2ModelLimits · object"},"applies_to":{"oneOf":[{"type":"object","title":"RateLimitV2ModelAppliesToAggregate","required":["type"],"x-fern-type-name":"RateLimitV2ModelAppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["aggregate"],"default":"aggregate","isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.0","typeLabel":"RateLimitV2ModelAppliesToAggregate · object"},{"type":"object","title":"RateLimitV2ModelAppliesToPerUser","required":["type"],"x-fern-type-name":"RateLimitV2ModelAppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-user"],"default":"per-user","isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.1.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-user limit overrides","type":"array","items":{"type":"object","required":["users","limits"],"properties":{"users":{"description":"Users whose traffic uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX].users.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX].users","typeLabel":"string[]"},"limits":{"type":"object","properties":{"requests_per_minute":{"description":"Override requests per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX].limits.requests_per_minute","typeLabel":"integer"},"requests_per_hour":{"description":"Override requests per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX].limits.requests_per_hour","typeLabel":"integer"},"requests_per_day":{"description":"Override requests per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX].limits.requests_per_day","typeLabel":"integer"},"tokens_per_minute":{"description":"Override tokens per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX].limits.tokens_per_minute","typeLabel":"integer"},"tokens_per_hour":{"description":"Override tokens per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX].limits.tokens_per_hour","typeLabel":"integer"},"tokens_per_day":{"description":"Override tokens per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX].limits.tokens_per_day","typeLabel":"integer"}},"title":"RateLimitV2ModelOverrideLimits","x-fern-type-name":"RateLimitV2ModelOverrideLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX].limits","typeLabel":"RateLimitV2ModelOverrideLimits · object"}},"title":"RateLimitV2ModelPerUserOverride","x-fern-type-name":"RateLimitV2ModelPerUserOverride","uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.1.overrides.items.[INDEX]","typeLabel":"RateLimitV2ModelPerUserOverride · object"},"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.1.overrides","typeLabel":"RateLimitV2ModelPerUserOverride · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.1","typeLabel":"RateLimitV2ModelAppliesToPerUser · object"},{"type":"object","title":"RateLimitV2ModelAppliesToPerModel","required":["type"],"x-fern-type-name":"RateLimitV2ModelAppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-model"],"default":"per-model","isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.2.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-model limit overrides","type":"array","items":{"type":"object","required":["models","limits"],"properties":{"models":{"description":"Models whose traffic uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX].models.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX].models","typeLabel":"string[]"},"limits":{"type":"object","properties":{"requests_per_minute":{"description":"Override requests per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX].limits.requests_per_minute","typeLabel":"integer"},"requests_per_hour":{"description":"Override requests per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX].limits.requests_per_hour","typeLabel":"integer"},"requests_per_day":{"description":"Override requests per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX].limits.requests_per_day","typeLabel":"integer"},"tokens_per_minute":{"description":"Override tokens per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX].limits.tokens_per_minute","typeLabel":"integer"},"tokens_per_hour":{"description":"Override tokens per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX].limits.tokens_per_hour","typeLabel":"integer"},"tokens_per_day":{"description":"Override tokens per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX].limits.tokens_per_day","typeLabel":"integer"}},"title":"RateLimitV2ModelOverrideLimits","x-fern-type-name":"RateLimitV2ModelOverrideLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX].limits","typeLabel":"RateLimitV2ModelOverrideLimits · object"}},"title":"RateLimitV2ModelPerModelOverride","x-fern-type-name":"RateLimitV2ModelPerModelOverride","uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.2.overrides.items.[INDEX]","typeLabel":"RateLimitV2ModelPerModelOverride · object"},"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.2.overrides","typeLabel":"RateLimitV2ModelPerModelOverride · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.2","typeLabel":"RateLimitV2ModelAppliesToPerModel · object"},{"type":"object","title":"RateLimitV2ModelAppliesToPerVirtualAccount","required":["type"],"x-fern-type-name":"RateLimitV2ModelAppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-virtual-account"],"default":"per-virtual-account","isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.3.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-virtual-account limit overrides","type":"array","items":{"type":"object","required":["virtual_accounts","limits"],"properties":{"virtual_accounts":{"description":"Virtual accounts whose traffic uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts","typeLabel":"string[]"},"limits":{"type":"object","properties":{"requests_per_minute":{"description":"Override requests per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX].limits.requests_per_minute","typeLabel":"integer"},"requests_per_hour":{"description":"Override requests per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX].limits.requests_per_hour","typeLabel":"integer"},"requests_per_day":{"description":"Override requests per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX].limits.requests_per_day","typeLabel":"integer"},"tokens_per_minute":{"description":"Override tokens per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX].limits.tokens_per_minute","typeLabel":"integer"},"tokens_per_hour":{"description":"Override tokens per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX].limits.tokens_per_hour","typeLabel":"integer"},"tokens_per_day":{"description":"Override tokens per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX].limits.tokens_per_day","typeLabel":"integer"}},"title":"RateLimitV2ModelOverrideLimits","x-fern-type-name":"RateLimitV2ModelOverrideLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX].limits","typeLabel":"RateLimitV2ModelOverrideLimits · object"}},"title":"RateLimitV2ModelPerVirtualAccountOverride","x-fern-type-name":"RateLimitV2ModelPerVirtualAccountOverride","uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.3.overrides.items.[INDEX]","typeLabel":"RateLimitV2ModelPerVirtualAccountOverride · object"},"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.3.overrides","typeLabel":"RateLimitV2ModelPerVirtualAccountOverride · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.3","typeLabel":"RateLimitV2ModelAppliesToPerVirtualAccount · object"},{"type":"object","title":"RateLimitV2ModelAppliesToMetadata","required":["type","metadata"],"x-fern-type-name":"RateLimitV2ModelAppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["metadata"],"default":"metadata","isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.4.type","typeLabel":"enum\u003cstring>"},"metadata":{"description":"Metadata key whose distinct values each get their own limit bucket","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.4.metadata","typeLabel":"string"},"overrides":{"description":"Optional per-metadata-value limit overrides","type":"array","items":{"type":"object","required":["metadata_values","limits"],"properties":{"metadata_values":{"description":"Metadata values whose traffic uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX].metadata_values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX].metadata_values","typeLabel":"string[]"},"limits":{"type":"object","properties":{"requests_per_minute":{"description":"Override requests per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX].limits.requests_per_minute","typeLabel":"integer"},"requests_per_hour":{"description":"Override requests per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX].limits.requests_per_hour","typeLabel":"integer"},"requests_per_day":{"description":"Override requests per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX].limits.requests_per_day","typeLabel":"integer"},"tokens_per_minute":{"description":"Override tokens per minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX].limits.tokens_per_minute","typeLabel":"integer"},"tokens_per_hour":{"description":"Override tokens per hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX].limits.tokens_per_hour","typeLabel":"integer"},"tokens_per_day":{"description":"Override tokens per day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX].limits.tokens_per_day","typeLabel":"integer"}},"title":"RateLimitV2ModelOverrideLimits","x-fern-type-name":"RateLimitV2ModelOverrideLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX].limits","typeLabel":"RateLimitV2ModelOverrideLimits · object"}},"title":"RateLimitV2ModelPerMetadataOverride","x-fern-type-name":"RateLimitV2ModelPerMetadataOverride","uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.4.overrides.items.[INDEX]","typeLabel":"RateLimitV2ModelPerMetadataOverride · object"},"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.4.overrides","typeLabel":"RateLimitV2ModelPerMetadataOverride · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to.oneOf.4","typeLabel":"RateLimitV2ModelAppliesToMetadata · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.78.applies_to","typeLabel":"RateLimitV2ModelAppliesToAggregate · object | RateLimitV2ModelAppliesToPerUser · object | RateLimitV2ModelAppliesToPerModel · object | RateLimitV2ModelAppliesToPerVirtualAccount · object | RateLimitV2ModelAppliesToMetadata · object"},"mode":{"description":"`enforce` blocks breaching requests, `audit` only tracks them, `soft_enforce` blocks only when no other matching rate limit allows the request.","type":"string","enum":["enforce","audit","soft_enforce"],"default":"enforce","isRequired":true,"uniqueKey":"existingManifest.oneOf.78.mode","typeLabel":"enum\u003cstring>"},"log_request_body_on_block":{"description":"When enabled, the request body is kept on the trace for requests this rate limit blocks, subject to the tenant logging configuration.","type":"boolean","default":false,"isRequired":true,"uniqueKey":"existingManifest.oneOf.78.log_request_body_on_block","typeLabel":"boolean"},"when":{"description":"virtual_models | virtual_provider_accounts cannot be combined with models | provider_accounts\n(enforced in GatewayConfigService).","type":"object","properties":{"subjects":{"type":"object","properties":{"users":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.when.subjects.users.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.78.when.subjects.users.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.when.subjects.users.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.78.when.subjects.users.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"existingManifest.oneOf.78.when.subjects.users","typeLabel":"RateLimitV2InNotInFilter · object"},"teams":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.when.subjects.teams.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.78.when.subjects.teams.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.when.subjects.teams.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.78.when.subjects.teams.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"existingManifest.oneOf.78.when.subjects.teams","typeLabel":"RateLimitV2InNotInFilter · object"},"virtual_accounts":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.when.subjects.virtual_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.78.when.subjects.virtual_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.when.subjects.virtual_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.78.when.subjects.virtual_accounts.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"existingManifest.oneOf.78.when.subjects.virtual_accounts","typeLabel":"RateLimitV2InNotInFilter · object"},"agents":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.when.subjects.agents.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.78.when.subjects.agents.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.when.subjects.agents.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.78.when.subjects.agents.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"existingManifest.oneOf.78.when.subjects.agents","typeLabel":"RateLimitV2InNotInFilter · object"}},"title":"RateLimitV2Subjects","x-fern-type-name":"RateLimitV2Subjects","uniqueKey":"existingManifest.oneOf.78.when.subjects","typeLabel":"RateLimitV2Subjects · object"},"models":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.when.models.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.78.when.models.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.when.models.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.78.when.models.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"existingManifest.oneOf.78.when.models","typeLabel":"RateLimitV2InNotInFilter · object"},"provider_accounts":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.when.provider_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.78.when.provider_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.when.provider_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.78.when.provider_accounts.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"existingManifest.oneOf.78.when.provider_accounts","typeLabel":"RateLimitV2InNotInFilter · object"},"virtual_models":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.when.virtual_models.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.78.when.virtual_models.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.when.virtual_models.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.78.when.virtual_models.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"existingManifest.oneOf.78.when.virtual_models","typeLabel":"RateLimitV2InNotInFilter · object"},"virtual_provider_accounts":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.when.virtual_provider_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.78.when.virtual_provider_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.when.virtual_provider_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.78.when.virtual_provider_accounts.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"existingManifest.oneOf.78.when.virtual_provider_accounts","typeLabel":"RateLimitV2InNotInFilter · object"},"metadata":{"description":"Filter by metadata key-value pairs this rate limit applies to","type":"object","additionalProperties":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.when.metadata.additionalProperties.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.78.when.metadata.additionalProperties.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.78.when.metadata.additionalProperties.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.78.when.metadata.additionalProperties.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"existingManifest.oneOf.78.when.metadata.additionalProperties","typeLabel":"RateLimitV2InNotInFilter · object"},"uniqueKey":"existingManifest.oneOf.78.when.metadata","typeLabel":"object"}},"title":"RateLimitV2ModelWhen","x-fern-type-name":"RateLimitV2ModelWhen","uniqueKey":"existingManifest.oneOf.78.when","typeLabel":"RateLimitV2ModelWhen · object"}},"uniqueKey":"existingManifest.oneOf.78","typeLabel":"TenantModelRateLimitConfig · object"},{"type":"object","title":"TenantMCPRateLimitConfig","description":"The existing manifest of the resource","required":["type","name","limits","applies_to","mode","log_request_body_on_block"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=tenant-rate-limit-config/mcp\n+sort=1","type":"string","enum":["tenant-rate-limit-config/mcp"],"default":"tenant-rate-limit-config/mcp","isRequired":true,"uniqueKey":"existingManifest.oneOf.79.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.79.name","typeLabel":"string"},"limits":{"description":"MCP Rate Limits","type":"object","properties":{"tool_calls_per_minute":{"description":"Tool Calls per Minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.79.limits.tool_calls_per_minute","typeLabel":"integer"},"tool_calls_per_hour":{"description":"Tool Calls per Hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.79.limits.tool_calls_per_hour","typeLabel":"integer"},"tool_calls_per_day":{"description":"Tool Calls per Day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.79.limits.tool_calls_per_day","typeLabel":"integer"}},"title":"RateLimitV2MCPLimits","x-fern-type-name":"RateLimitV2MCPLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.79.limits","typeLabel":"RateLimitV2MCPLimits · object"},"applies_to":{"oneOf":[{"type":"object","title":"RateLimitV2MCPAppliesToAggregate","description":"Aggregate","required":["type"],"x-fern-type-name":"RateLimitV2MCPAppliesTo","properties":{"type":{"description":"+value=aggregate","type":"string","enum":["aggregate"],"default":"aggregate","isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.0","typeLabel":"RateLimitV2MCPAppliesToAggregate · object"},{"type":"object","title":"RateLimitV2MCPAppliesToPerUser","description":"Per User","required":["type"],"x-fern-type-name":"RateLimitV2MCPAppliesTo","properties":{"type":{"description":"+value=per-user","type":"string","enum":["per-user"],"default":"per-user","isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.1.type","typeLabel":"enum\u003cstring>"},"overrides":{"type":"array","items":{"type":"object","required":["users","limits"],"properties":{"users":{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.1.overrides.items.[INDEX].users.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.1.overrides.items.[INDEX].users","typeLabel":"string[]"},"limits":{"description":"MCP Rate Limits","type":"object","properties":{"tool_calls_per_minute":{"description":"Tool Calls per Minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.1.overrides.items.[INDEX].limits.tool_calls_per_minute","typeLabel":"integer"},"tool_calls_per_hour":{"description":"Tool Calls per Hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.1.overrides.items.[INDEX].limits.tool_calls_per_hour","typeLabel":"integer"},"tool_calls_per_day":{"description":"Tool Calls per Day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.1.overrides.items.[INDEX].limits.tool_calls_per_day","typeLabel":"integer"}},"title":"RateLimitV2MCPOverrideLimits","x-fern-type-name":"RateLimitV2MCPOverrideLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.1.overrides.items.[INDEX].limits","typeLabel":"RateLimitV2MCPOverrideLimits · object"}},"title":"RateLimitV2MCPPerUserOverride","x-fern-type-name":"RateLimitV2MCPPerUserOverride","uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.1.overrides.items.[INDEX]","typeLabel":"RateLimitV2MCPPerUserOverride · object"},"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.1.overrides","typeLabel":"RateLimitV2MCPPerUserOverride · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.1","typeLabel":"RateLimitV2MCPAppliesToPerUser · object"},{"type":"object","title":"RateLimitV2MCPAppliesToPerMCP","description":"Per MCP","required":["type"],"x-fern-type-name":"RateLimitV2MCPAppliesTo","properties":{"type":{"description":"+value=per-mcp","type":"string","enum":["per-mcp"],"default":"per-mcp","isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.2.type","typeLabel":"enum\u003cstring>"},"overrides":{"type":"array","items":{"type":"object","required":["mcps","limits"],"properties":{"mcps":{"description":"MCP Servers","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.2.overrides.items.[INDEX].mcps.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.2.overrides.items.[INDEX].mcps","typeLabel":"string[]"},"limits":{"description":"MCP Rate Limits","type":"object","properties":{"tool_calls_per_minute":{"description":"Tool Calls per Minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.2.overrides.items.[INDEX].limits.tool_calls_per_minute","typeLabel":"integer"},"tool_calls_per_hour":{"description":"Tool Calls per Hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.2.overrides.items.[INDEX].limits.tool_calls_per_hour","typeLabel":"integer"},"tool_calls_per_day":{"description":"Tool Calls per Day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.2.overrides.items.[INDEX].limits.tool_calls_per_day","typeLabel":"integer"}},"title":"RateLimitV2MCPOverrideLimits","x-fern-type-name":"RateLimitV2MCPOverrideLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.2.overrides.items.[INDEX].limits","typeLabel":"RateLimitV2MCPOverrideLimits · object"}},"title":"RateLimitV2MCPPerMCPOverride","x-fern-type-name":"RateLimitV2MCPPerMCPOverride","uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.2.overrides.items.[INDEX]","typeLabel":"RateLimitV2MCPPerMCPOverride · object"},"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.2.overrides","typeLabel":"RateLimitV2MCPPerMCPOverride · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.2","typeLabel":"RateLimitV2MCPAppliesToPerMCP · object"},{"type":"object","title":"RateLimitV2MCPAppliesToPerVirtualAccount","description":"Per Virtual Account","required":["type"],"x-fern-type-name":"RateLimitV2MCPAppliesTo","properties":{"type":{"description":"+value=per-virtual-account","type":"string","enum":["per-virtual-account"],"default":"per-virtual-account","isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.3.type","typeLabel":"enum\u003cstring>"},"overrides":{"type":"array","items":{"type":"object","required":["virtual_accounts","limits"],"properties":{"virtual_accounts":{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts","typeLabel":"string[]"},"limits":{"description":"MCP Rate Limits","type":"object","properties":{"tool_calls_per_minute":{"description":"Tool Calls per Minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.3.overrides.items.[INDEX].limits.tool_calls_per_minute","typeLabel":"integer"},"tool_calls_per_hour":{"description":"Tool Calls per Hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.3.overrides.items.[INDEX].limits.tool_calls_per_hour","typeLabel":"integer"},"tool_calls_per_day":{"description":"Tool Calls per Day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.3.overrides.items.[INDEX].limits.tool_calls_per_day","typeLabel":"integer"}},"title":"RateLimitV2MCPOverrideLimits","x-fern-type-name":"RateLimitV2MCPOverrideLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.3.overrides.items.[INDEX].limits","typeLabel":"RateLimitV2MCPOverrideLimits · object"}},"title":"RateLimitV2MCPPerVirtualAccountOverride","x-fern-type-name":"RateLimitV2MCPPerVirtualAccountOverride","uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.3.overrides.items.[INDEX]","typeLabel":"RateLimitV2MCPPerVirtualAccountOverride · object"},"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.3.overrides","typeLabel":"RateLimitV2MCPPerVirtualAccountOverride · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.3","typeLabel":"RateLimitV2MCPAppliesToPerVirtualAccount · object"},{"type":"object","title":"RateLimitV2MCPAppliesToMetadata","description":"Per Metadata Value","required":["type","metadata"],"x-fern-type-name":"RateLimitV2MCPAppliesTo","properties":{"type":{"description":"+value=metadata","type":"string","enum":["metadata"],"default":"metadata","isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.4.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.4.metadata","typeLabel":"string"},"overrides":{"type":"array","items":{"type":"object","required":["metadata_values","limits"],"properties":{"metadata_values":{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.4.overrides.items.[INDEX].metadata_values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.4.overrides.items.[INDEX].metadata_values","typeLabel":"string[]"},"limits":{"description":"MCP Rate Limits","type":"object","properties":{"tool_calls_per_minute":{"description":"Tool Calls per Minute","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.4.overrides.items.[INDEX].limits.tool_calls_per_minute","typeLabel":"integer"},"tool_calls_per_hour":{"description":"Tool Calls per Hour","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.4.overrides.items.[INDEX].limits.tool_calls_per_hour","typeLabel":"integer"},"tool_calls_per_day":{"description":"Tool Calls per Day","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.4.overrides.items.[INDEX].limits.tool_calls_per_day","typeLabel":"integer"}},"title":"RateLimitV2MCPOverrideLimits","x-fern-type-name":"RateLimitV2MCPOverrideLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.4.overrides.items.[INDEX].limits","typeLabel":"RateLimitV2MCPOverrideLimits · object"}},"title":"RateLimitV2MCPPerMetadataOverride","x-fern-type-name":"RateLimitV2MCPPerMetadataOverride","uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.4.overrides.items.[INDEX]","typeLabel":"RateLimitV2MCPPerMetadataOverride · object"},"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.4.overrides","typeLabel":"RateLimitV2MCPPerMetadataOverride · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to.oneOf.4","typeLabel":"RateLimitV2MCPAppliesToMetadata · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.79.applies_to","typeLabel":"RateLimitV2MCPAppliesToAggregate · object | RateLimitV2MCPAppliesToPerUser · object | RateLimitV2MCPAppliesToPerMCP · object | RateLimitV2MCPAppliesToPerVirtualAccount · object | RateLimitV2MCPAppliesToMetadata · object"},"mode":{"description":"Mode","type":"string","enum":["enforce","audit","soft_enforce"],"default":"enforce","isRequired":true,"uniqueKey":"existingManifest.oneOf.79.mode","typeLabel":"enum\u003cstring>"},"log_request_body_on_block":{"description":"Log Request Body on Block","type":"boolean","default":false,"isRequired":true,"uniqueKey":"existingManifest.oneOf.79.log_request_body_on_block","typeLabel":"boolean"},"when":{"description":"MCP Rate Limit Conditions","type":"object","properties":{"subjects":{"type":"object","properties":{"users":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.79.when.subjects.users.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.79.when.subjects.users.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.79.when.subjects.users.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.79.when.subjects.users.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"existingManifest.oneOf.79.when.subjects.users","typeLabel":"RateLimitV2InNotInFilter · object"},"teams":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.79.when.subjects.teams.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.79.when.subjects.teams.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.79.when.subjects.teams.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.79.when.subjects.teams.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"existingManifest.oneOf.79.when.subjects.teams","typeLabel":"RateLimitV2InNotInFilter · object"},"virtual_accounts":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.79.when.subjects.virtual_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.79.when.subjects.virtual_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.79.when.subjects.virtual_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.79.when.subjects.virtual_accounts.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"existingManifest.oneOf.79.when.subjects.virtual_accounts","typeLabel":"RateLimitV2InNotInFilter · object"},"agents":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.79.when.subjects.agents.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.79.when.subjects.agents.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.79.when.subjects.agents.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.79.when.subjects.agents.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"existingManifest.oneOf.79.when.subjects.agents","typeLabel":"RateLimitV2InNotInFilter · object"}},"title":"RateLimitV2Subjects","x-fern-type-name":"RateLimitV2Subjects","uniqueKey":"existingManifest.oneOf.79.when.subjects","typeLabel":"RateLimitV2Subjects · object"},"mcp_servers":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.79.when.mcp_servers.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.79.when.mcp_servers.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.79.when.mcp_servers.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.79.when.mcp_servers.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"existingManifest.oneOf.79.when.mcp_servers","typeLabel":"RateLimitV2InNotInFilter · object"},"metadata":{"description":"Metadata","type":"object","additionalProperties":{"type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.79.when.metadata.additionalProperties.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.79.when.metadata.additionalProperties.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.79.when.metadata.additionalProperties.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.79.when.metadata.additionalProperties.not_in","typeLabel":"string[]"}},"title":"RateLimitV2InNotInFilter","x-fern-type-name":"RateLimitV2InNotInFilter","uniqueKey":"existingManifest.oneOf.79.when.metadata.additionalProperties","typeLabel":"RateLimitV2InNotInFilter · object"},"uniqueKey":"existingManifest.oneOf.79.when.metadata","typeLabel":"object"}},"title":"RateLimitV2MCPWhen","x-fern-type-name":"RateLimitV2MCPWhen","uniqueKey":"existingManifest.oneOf.79.when","typeLabel":"RateLimitV2MCPWhen · object"}},"uniqueKey":"existingManifest.oneOf.79","typeLabel":"TenantMCPRateLimitConfig · object"},{"type":"object","title":"RateLimitConfig","description":"The existing manifest of the resource","required":["type","rules"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=gateway-rate-limiting-config\n+sort=2","type":"string","enum":["gateway-rate-limiting-config"],"default":"gateway-rate-limiting-config","isRequired":true,"uniqueKey":"existingManifest.oneOf.80.type","typeLabel":"enum\u003cstring>"},"rules":{"description":"List of rate limit rules","type":"array","items":{"description":"Rate Limit Rule","type":"object","required":["id","when","limit_to","unit"],"properties":{"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[A-Za-z{}][A-Za-z0-9{}._-]{0,60}[A-Za-z0-9{}._]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.80.rules.items.[INDEX].id","typeLabel":"string"},"when":{"description":"Rule Conditions","type":"object","properties":{"subjects":{"description":"List of subjects that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.80.rules.items.[INDEX].when.subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.80.rules.items.[INDEX].when.subjects","typeLabel":"string[]"},"models":{"description":"List of models that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.80.rules.items.[INDEX].when.models.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.80.rules.items.[INDEX].when.models","typeLabel":"string[]"},"metadata":{"description":"Metadata key-value pairs that this rule applies to","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.80.rules.items.[INDEX].when.metadata.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.80.rules.items.[INDEX].when.metadata","typeLabel":"object"}},"title":"RateLimitWhen","x-fern-type-name":"RateLimitWhen","isRequired":true,"uniqueKey":"existingManifest.oneOf.80.rules.items.[INDEX].when","typeLabel":"RateLimitWhen · object"},"limit_to":{"description":"Maximum number of requests or tokens allowed","type":"integer","isRequired":true,"uniqueKey":"existingManifest.oneOf.80.rules.items.[INDEX].limit_to","typeLabel":"integer"},"unit":{"description":"Unit for rate limit calculation","type":"string","enum":["requests_per_day","tokens_per_minute","requests_per_minute","tokens_per_day","requests_per_hour","tokens_per_hour"],"title":"RateLimitUnit","x-fern-type-name":"RateLimitUnit","isRequired":true,"uniqueKey":"existingManifest.oneOf.80.rules.items.[INDEX].unit","typeLabel":"enum\u003cstring>"},"rate_limit_applies_per":{"description":"Create separate rate limiting rules for each unique value of the selected entity. For example, if \"user\" is selected, a separate rate limit rule will be created for each unique user making requests. Options: user, virtualaccount, model, or a metadata key (e.g., metadata.appId).","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.80.rules.items.[INDEX].rate_limit_applies_per.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.80.rules.items.[INDEX].rate_limit_applies_per","typeLabel":"string[]"}},"title":"RateLimitRule","x-fern-type-name":"RateLimitRule","uniqueKey":"existingManifest.oneOf.80.rules.items.[INDEX]","typeLabel":"RateLimitRule · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.80.rules","typeLabel":"RateLimitRule · object[]"}},"uniqueKey":"existingManifest.oneOf.80","typeLabel":"RateLimitConfig · object"},{"type":"object","title":"LoadBalancingConfig","description":"The existing manifest of the resource","required":["type","rules"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=gateway-load-balancing-config\n+sort=2","type":"string","enum":["gateway-load-balancing-config"],"default":"gateway-load-balancing-config","isRequired":true,"uniqueKey":"existingManifest.oneOf.81.type","typeLabel":"enum\u003cstring>"},"rules":{"description":"List of load balancing rules","type":"array","items":{"oneOf":[{"type":"object","title":"WeightBasedLoadBalancingRule","description":"Weight-based Load Balancing Rule","required":["id","when","type","load_balance_targets"],"x-fern-type-name":"LoadBalancingRule","properties":{"type":{"description":"Routing Type","type":"string","enum":["weight-based-routing"],"default":"weight-based-routing","isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"load_balance_targets":{"description":"List of targets for load balancing with weights","type":"array","items":{"description":"Weight-based Target","type":"object","required":["target","weight"],"properties":{"target":{"description":"Target model or provider FQN","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].target","typeLabel":"string"},"weight":{"description":"Relative weight for routing decisions (higher values mean more traffic)","type":"integer","isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].weight","typeLabel":"integer"},"retry_config":{"type":"object","required":["attempts"],"properties":{"attempts":{"description":"Number of attempts to retry the request","type":"integer","minimum":0,"isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].retry_config.attempts","typeLabel":"integer"},"delay":{"description":"Delay between retries in milliseconds","type":"integer","minimum":0,"exclusiveMinimum":true,"default":100,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].retry_config.delay","typeLabel":"integer"},"on_status_codes":{"description":"Status codes to retry on","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].retry_config.on_status_codes.items.[INDEX]","typeLabel":"string"},"default":["429","500","502","503"],"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].retry_config.on_status_codes","typeLabel":"string[]"}},"title":"RetryConfig","x-fern-type-name":"RetryConfig","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].retry_config","typeLabel":"RetryConfig · object"},"fallback_status_codes":{"description":"Status Codes for which the request will fallback to other targets. If the status code is not present in fallback_status_codes, it fails immediately.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].fallback_status_codes.items.[INDEX]","typeLabel":"string"},"default":["401","403","404","408","429","500","502","503"],"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].fallback_status_codes","typeLabel":"string[]"},"fallback_candidate":{"description":"Whether this target is a fallback candidate. If set to false, this model will not be considered as a fallback option for targets of this load-balance-rule","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].fallback_candidate","typeLabel":"boolean"},"override_params":{"description":"Optional parameters to override in the request","type":"object","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].override_params","typeLabel":"object"},"headers_override":{"description":"Headers Override","type":"object","properties":{"remove":{"description":"List of headers to remove from upstream request","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].headers_override.remove.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].headers_override.remove","typeLabel":"string[]"},"set":{"description":"Headers to add or overwrite in upstream request","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].headers_override.set.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].headers_override.set","typeLabel":"object"}},"title":"HeadersOverride","x-fern-type-name":"HeadersOverride","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].headers_override","typeLabel":"HeadersOverride · object"},"metadata_match":{"description":"Optional metadata key-value pairs that must match incoming request metadata headers for this target to be considered for routing.","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].metadata_match.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX].metadata_match","typeLabel":"object"}},"title":"LoadBalanceTarget","x-fern-type-name":"LoadBalanceTarget","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets.items.[INDEX]","typeLabel":"LoadBalanceTarget · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.load_balance_targets","typeLabel":"LoadBalanceTarget · object[]"},"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.id","typeLabel":"string"},"when":{"description":"Rule Conditions","type":"object","properties":{"subjects":{"description":"List of subjects that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.when.subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.when.subjects","typeLabel":"string[]"},"models":{"description":"List of models that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.when.models.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.when.models","typeLabel":"string[]"},"metadata":{"description":"Metadata key-value pairs that this rule applies to","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.when.metadata.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.when.metadata","typeLabel":"object"}},"title":"LoadBalancingWhen","x-fern-type-name":"LoadBalancingWhen","isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.when","typeLabel":"LoadBalancingWhen · object"},"sticky_routing":{"description":"Sticky Routing","type":"object","required":["ttl_seconds","session_identifiers"],"properties":{"ttl_seconds":{"description":"Sticky mapping TTL in seconds","type":"integer","minimum":1800,"maximum":86400,"isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.sticky_routing.ttl_seconds","typeLabel":"integer"},"session_identifiers":{"description":"List of identifier selectors used to build sticky key","type":"array","items":{"description":"Sticky Session Identifier","type":"object","required":["source","key"],"properties":{"source":{"description":"Source from which session identifier value will be extracted","type":"string","enum":["headers","metadata"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.sticky_routing.session_identifiers.items.[INDEX].source","typeLabel":"enum\u003cstring>"},"key":{"description":"Key to read from selected source","type":"string","pattern":"^[!#$%\u0026'*+.^_`|~0-9A-Za-z-]{1,128}$","isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.sticky_routing.session_identifiers.items.[INDEX].key","typeLabel":"string"}},"title":"StickySessionIdentifier","x-fern-type-name":"StickySessionIdentifier","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.sticky_routing.session_identifiers.items.[INDEX]","typeLabel":"StickySessionIdentifier · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.sticky_routing.session_identifiers","typeLabel":"StickySessionIdentifier · object[]"}},"title":"StickyRouting","x-fern-type-name":"StickyRouting","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0.sticky_routing","typeLabel":"StickyRouting · object"}},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.0","typeLabel":"WeightBasedLoadBalancingRule · object"},{"type":"object","title":"LatencyBasedLoadBalancingRule","description":"Latency-based Load Balancing Rule","required":["id","when","type","load_balance_targets"],"x-fern-type-name":"LoadBalancingRule","properties":{"type":{"description":"Routing Type","type":"string","enum":["latency-based-routing"],"default":"latency-based-routing","isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"load_balance_targets":{"description":"List of targets for latency-based load balancing","type":"array","items":{"description":"Latency-based Target","type":"object","required":["target"],"properties":{"target":{"description":"Target model or provider FQN","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].target","typeLabel":"string"},"retry_config":{"type":"object","required":["attempts"],"properties":{"attempts":{"description":"Number of attempts to retry the request","type":"integer","minimum":0,"isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].retry_config.attempts","typeLabel":"integer"},"delay":{"description":"Delay between retries in milliseconds","type":"integer","minimum":0,"exclusiveMinimum":true,"default":100,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].retry_config.delay","typeLabel":"integer"},"on_status_codes":{"description":"Status codes to retry on","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].retry_config.on_status_codes.items.[INDEX]","typeLabel":"string"},"default":["429","500","502","503"],"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].retry_config.on_status_codes","typeLabel":"string[]"}},"title":"RetryConfig","x-fern-type-name":"RetryConfig","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].retry_config","typeLabel":"RetryConfig · object"},"fallback_status_codes":{"description":"Status Codes for which the request will fallback to other targets. If the status code is not present in fallback_status_codes, it fails immediately.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].fallback_status_codes.items.[INDEX]","typeLabel":"string"},"default":["401","403","404","408","429","500","502","503"],"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].fallback_status_codes","typeLabel":"string[]"},"fallback_candidate":{"description":"Whether this target is a fallback candidate. If set to false, this model will not be considered as a fallback option for targets of this load-balance-rule","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].fallback_candidate","typeLabel":"boolean"},"override_params":{"description":"Optional parameters to override in the request","type":"object","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].override_params","typeLabel":"object"},"headers_override":{"description":"Headers Override","type":"object","properties":{"remove":{"description":"List of headers to remove from upstream request","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].headers_override.remove.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].headers_override.remove","typeLabel":"string[]"},"set":{"description":"Headers to add or overwrite in upstream request","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].headers_override.set.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].headers_override.set","typeLabel":"object"}},"title":"HeadersOverride","x-fern-type-name":"HeadersOverride","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].headers_override","typeLabel":"HeadersOverride · object"},"metadata_match":{"description":"Optional metadata key-value pairs that must match incoming request metadata headers for this target to be considered for routing.","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].metadata_match.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX].metadata_match","typeLabel":"object"}},"title":"LatencyBasedLoadBalanceTarget","x-fern-type-name":"LatencyBasedLoadBalanceTarget","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets.items.[INDEX]","typeLabel":"LatencyBasedLoadBalanceTarget · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.load_balance_targets","typeLabel":"LatencyBasedLoadBalanceTarget · object[]"},"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.id","typeLabel":"string"},"when":{"description":"Rule Conditions","type":"object","properties":{"subjects":{"description":"List of subjects that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.when.subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.when.subjects","typeLabel":"string[]"},"models":{"description":"List of models that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.when.models.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.when.models","typeLabel":"string[]"},"metadata":{"description":"Metadata key-value pairs that this rule applies to","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.when.metadata.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.when.metadata","typeLabel":"object"}},"title":"LoadBalancingWhen","x-fern-type-name":"LoadBalancingWhen","isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1.when","typeLabel":"LoadBalancingWhen · object"}},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.1","typeLabel":"LatencyBasedLoadBalancingRule · object"},{"type":"object","title":"PriorityBasedLoadBalancingRule","description":"Priority-based Load Balancing Rule","required":["id","when","type","load_balance_targets"],"x-fern-type-name":"LoadBalancingRule","properties":{"type":{"description":"Routing Type","type":"string","enum":["priority-based-routing"],"default":"priority-based-routing","isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"load_balance_targets":{"description":"List of targets for priority-based load balancing","type":"array","items":{"type":"object","required":["target","priority"],"properties":{"target":{"description":"Target model or provider FQN","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].target","typeLabel":"string"},"priority":{"description":"Priority for the target, Lower the number, higher the priority (0 is the highest priority)","type":"integer","minimum":0,"default":0,"isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].priority","typeLabel":"integer"},"sla_cutoff":{"type":"object","properties":{"time_per_output_token_ms":{"description":"Time per output token threshold in milliseconds. If time per output token exceeds this value, the target will be marked as unhealthy","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].sla_cutoff.time_per_output_token_ms","typeLabel":"integer"},"time_to_first_token_ms":{"description":"Time to first token threshold in milliseconds. If time to first token exceeds this value, the target will be marked as unhealthy","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].sla_cutoff.time_to_first_token_ms","typeLabel":"integer"}},"title":"SLACutoff","x-fern-type-name":"SLACutoff","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].sla_cutoff","typeLabel":"SLACutoff · object"},"retry_config":{"type":"object","required":["attempts"],"properties":{"attempts":{"description":"Number of attempts to retry the request","type":"integer","minimum":0,"isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].retry_config.attempts","typeLabel":"integer"},"delay":{"description":"Delay between retries in milliseconds","type":"integer","minimum":0,"exclusiveMinimum":true,"default":100,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].retry_config.delay","typeLabel":"integer"},"on_status_codes":{"description":"Status codes to retry on","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].retry_config.on_status_codes.items.[INDEX]","typeLabel":"string"},"default":["429","500","502","503"],"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].retry_config.on_status_codes","typeLabel":"string[]"}},"title":"RetryConfig","x-fern-type-name":"RetryConfig","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].retry_config","typeLabel":"RetryConfig · object"},"fallback_status_codes":{"description":"Status Codes for which the request will fallback to other targets. If the status code is not present in fallback_status_codes, it fails immediately.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].fallback_status_codes.items.[INDEX]","typeLabel":"string"},"default":["401","403","404","408","429","500","502","503"],"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].fallback_status_codes","typeLabel":"string[]"},"fallback_candidate":{"description":"Whether this target is a fallback candidate. If set to false, this model will not be considered as a fallback option for targets of this load-balance-rule","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].fallback_candidate","typeLabel":"boolean"},"override_params":{"description":"Optional parameters to override in the request","type":"object","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].override_params","typeLabel":"object"},"headers_override":{"description":"Headers Override","type":"object","properties":{"remove":{"description":"List of headers to remove from upstream request","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].headers_override.remove.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].headers_override.remove","typeLabel":"string[]"},"set":{"description":"Headers to add or overwrite in upstream request","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].headers_override.set.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].headers_override.set","typeLabel":"object"}},"title":"HeadersOverride","x-fern-type-name":"HeadersOverride","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].headers_override","typeLabel":"HeadersOverride · object"},"metadata_match":{"description":"Optional metadata key-value pairs that must match incoming request metadata headers for this target to be considered for routing.","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].metadata_match.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX].metadata_match","typeLabel":"object"}},"title":"PriorityBasedLoadBalanceTarget","x-fern-type-name":"PriorityBasedLoadBalanceTarget","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets.items.[INDEX]","typeLabel":"PriorityBasedLoadBalanceTarget · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.load_balance_targets","typeLabel":"PriorityBasedLoadBalanceTarget · object[]"},"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.id","typeLabel":"string"},"when":{"description":"Rule Conditions","type":"object","properties":{"subjects":{"description":"List of subjects that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.when.subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.when.subjects","typeLabel":"string[]"},"models":{"description":"List of models that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.when.models.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.when.models","typeLabel":"string[]"},"metadata":{"description":"Metadata key-value pairs that this rule applies to","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.when.metadata.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.when.metadata","typeLabel":"object"}},"title":"LoadBalancingWhen","x-fern-type-name":"LoadBalancingWhen","isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2.when","typeLabel":"LoadBalancingWhen · object"}},"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX].oneOf.2","typeLabel":"PriorityBasedLoadBalancingRule · object"}],"uniqueKey":"existingManifest.oneOf.81.rules.items.[INDEX]","typeLabel":"WeightBasedLoadBalancingRule · object | LatencyBasedLoadBalancingRule · object | PriorityBasedLoadBalancingRule · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.81.rules","typeLabel":"(WeightBasedLoadBalancingRule · object | LatencyBasedLoadBalancingRule · object | PriorityBasedLoadBalancingRule · object)[]"}},"uniqueKey":"existingManifest.oneOf.81","typeLabel":"LoadBalancingConfig · object"},{"type":"object","title":"GuardrailsConfig","description":"The existing manifest of the resource","required":["type","name","when","llm_input_guardrails","llm_output_guardrails","mcp_tool_pre_invoke_guardrails","mcp_tool_post_invoke_guardrails"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=gateway-guardrails-config\n+sort=1","type":"string","enum":["gateway-guardrails-config"],"default":"gateway-guardrails-config","isRequired":true,"uniqueKey":"existingManifest.oneOf.82.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique name for this guardrails configuration","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.82.name","typeLabel":"string"},"when":{"type":"object","properties":{"target":{"type":"object","required":["operator","conditions"],"properties":{"operator":{"type":"string","enum":["or"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.82.when.target.operator","typeLabel":"enum\u003cstring>"},"conditions":{"type":"object","properties":{"mcpServers":{"type":"object","required":["condition","values"],"properties":{"condition":{"type":"string","enum":["in","not_in"],"default":"in","isRequired":true,"uniqueKey":"existingManifest.oneOf.82.when.target.conditions.mcpServers.condition","typeLabel":"enum\u003cstring>"},"values":{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.82.when.target.conditions.mcpServers.values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.82.when.target.conditions.mcpServers.values","typeLabel":"string[]"}},"title":"InNotInOperator","x-fern-type-name":"InNotInOperator","uniqueKey":"existingManifest.oneOf.82.when.target.conditions.mcpServers","typeLabel":"InNotInOperator · object"},"mcpTools":{"type":"object","required":["condition","values"],"properties":{"condition":{"type":"string","enum":["in","not_in"],"default":"in","isRequired":true,"uniqueKey":"existingManifest.oneOf.82.when.target.conditions.mcpTools.condition","typeLabel":"enum\u003cstring>"},"values":{"type":"array","items":{"type":"object","required":["name","enable_all_tools"],"properties":{"name":{"description":"Name of the MCP server","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.82.when.target.conditions.mcpTools.values.items.[INDEX].name","typeLabel":"string"},"enable_all_tools":{"description":"When enabled, all tools from this MCP server are targeted. Disable to select specific tools.","type":"boolean","default":false,"isRequired":true,"uniqueKey":"existingManifest.oneOf.82.when.target.conditions.mcpTools.values.items.[INDEX].enable_all_tools","typeLabel":"boolean"},"enabled_tools":{"description":"List of specific tools to target from this MCP server.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.82.when.target.conditions.mcpTools.values.items.[INDEX].enabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.82.when.target.conditions.mcpTools.values.items.[INDEX].enabled_tools","typeLabel":"string[]"}},"title":"MCPToolTarget","x-fern-type-name":"MCPToolTarget","uniqueKey":"existingManifest.oneOf.82.when.target.conditions.mcpTools.values.items.[INDEX]","typeLabel":"MCPToolTarget · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.82.when.target.conditions.mcpTools.values","typeLabel":"MCPToolTarget · object[]"}},"title":"MCPToolsOperator","x-fern-type-name":"MCPToolsOperator","uniqueKey":"existingManifest.oneOf.82.when.target.conditions.mcpTools","typeLabel":"MCPToolsOperator · object"},"model":{"type":"object","required":["condition","values"],"properties":{"condition":{"type":"string","enum":["in","not_in"],"default":"in","isRequired":true,"uniqueKey":"existingManifest.oneOf.82.when.target.conditions.model.condition","typeLabel":"enum\u003cstring>"},"values":{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.82.when.target.conditions.model.values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.82.when.target.conditions.model.values","typeLabel":"string[]"}},"title":"InNotInOperator","x-fern-type-name":"InNotInOperator","uniqueKey":"existingManifest.oneOf.82.when.target.conditions.model","typeLabel":"InNotInOperator · object"}},"title":"TargetClause","x-fern-type-name":"TargetClause","isRequired":true,"uniqueKey":"existingManifest.oneOf.82.when.target.conditions","typeLabel":"TargetClause · object"}},"title":"TargetConditionGroup","x-fern-type-name":"TargetConditionGroup","uniqueKey":"existingManifest.oneOf.82.when.target","typeLabel":"TargetConditionGroup · object"},"subjects":{"type":"object","required":["operator","conditions"],"properties":{"operator":{"type":"string","enum":["and","or"],"default":"and","isRequired":true,"uniqueKey":"existingManifest.oneOf.82.when.subjects.operator","typeLabel":"enum\u003cstring>"},"conditions":{"type":"object","properties":{"in":{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.82.when.subjects.conditions.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.82.when.subjects.conditions.in","typeLabel":"string[]"},"not_in":{"type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.82.when.subjects.conditions.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.82.when.subjects.conditions.not_in","typeLabel":"string[]"}},"title":"SubjectClause","x-fern-type-name":"SubjectClause","isRequired":true,"uniqueKey":"existingManifest.oneOf.82.when.subjects.conditions","typeLabel":"SubjectClause · object"}},"title":"SubjectConditionGroup","x-fern-type-name":"SubjectConditionGroup","uniqueKey":"existingManifest.oneOf.82.when.subjects","typeLabel":"SubjectConditionGroup · object"},"metadata":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.82.when.metadata.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.82.when.metadata","typeLabel":"object"}},"title":"GuardrailsWhen","x-fern-type-name":"GuardrailsWhen","isRequired":true,"uniqueKey":"existingManifest.oneOf.82.when","typeLabel":"GuardrailsWhen · object"},"llm_input_guardrails":{"description":"Guardrail selectors of the guardrails to apply to the input (format: groupName/guardrailName)","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.82.llm_input_guardrails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.82.llm_input_guardrails","typeLabel":"string[]"},"llm_output_guardrails":{"description":"Guardrail selectors of the guardrails to apply to the output (format: groupName/guardrailName)","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.82.llm_output_guardrails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.82.llm_output_guardrails","typeLabel":"string[]"},"mcp_tool_pre_invoke_guardrails":{"description":"Guardrail selectors of the guardrails to apply to the MCP tool pre invoke (format: groupName/guardrailName)","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.82.mcp_tool_pre_invoke_guardrails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.82.mcp_tool_pre_invoke_guardrails","typeLabel":"string[]"},"mcp_tool_post_invoke_guardrails":{"description":"Guardrail selectors of the guardrails to apply to the MCP tool post invoke (format: groupName/guardrailName)","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.82.mcp_tool_post_invoke_guardrails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.82.mcp_tool_post_invoke_guardrails","typeLabel":"string[]"},"custom_error_message":{"description":"Optional message returned to the client when a guardrail in this config blocks a request. Supported placeholders: {{guardrail_message}} (default guardrail failure detail), {{failed_guardrails}} (comma-separated list of the guardrails that failed).","type":"string","uniqueKey":"existingManifest.oneOf.82.custom_error_message","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.82","typeLabel":"GuardrailsConfig · object"},{"type":"object","title":"BudgetConfig","description":"The existing manifest of the resource","required":["type","rules"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=gateway-budget-config\n+sort=2","type":"string","enum":["gateway-budget-config"],"default":"gateway-budget-config","isRequired":true,"uniqueKey":"existingManifest.oneOf.83.type","typeLabel":"enum\u003cstring>"},"rules":{"description":"List of budget rules","type":"array","items":{"description":"Budget Rule","type":"object","required":["id","when","limit_to","unit"],"properties":{"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].id","typeLabel":"string"},"when":{"description":"Rule Conditions","type":"object","properties":{"subjects":{"description":"List of subjects that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].when.subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].when.subjects","typeLabel":"string[]"},"models":{"description":"List of models that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].when.models.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].when.models","typeLabel":"string[]"},"metadata":{"description":"Metadata key-value pairs that this rule applies to","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].when.metadata.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].when.metadata","typeLabel":"object"}},"title":"BudgetWhen","x-fern-type-name":"BudgetWhen","isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].when","typeLabel":"BudgetWhen · object"},"limit_to":{"description":"Numeric limit value for the budget","type":"number","isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].limit_to","typeLabel":"number"},"unit":{"description":"Unit for budget limit calculation","type":"string","enum":["cost_per_day","cost_per_month","cost_per_week","cost_per_quarter","tokens_per_day","tokens_per_month"],"title":"BudgetLimitUnit","x-fern-type-name":"BudgetLimitUnit","isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].unit","typeLabel":"enum\u003cstring>"},"budget_applies_per":{"description":"Create separate budget rules for each unique value of the selected entity. For example, if \"user\" is selected, a separate budget rule will be created for each unique user making requests. Options: user, virtualaccount, model, or a metadata key (e.g., metadata.appId).","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].budget_applies_per.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].budget_applies_per","typeLabel":"string[]"},"alerts":{"description":"Budget Alert","type":"object","required":["thresholds","notification_target"],"properties":{"thresholds":{"description":"List of usage percentages (0-100) at which alerts should be triggered. Default thresholds are [75, 90, 95, 100].","type":"array","items":{"type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.thresholds.items.[INDEX]","typeLabel":"number"},"default":[75,90,95,100],"isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.thresholds","typeLabel":"number[]"},"notification_target":{"description":"Select where to send budget alert notifications","type":"array","items":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBot","description":"+discriminator=type","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.2.channels","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.2","typeLabel":"SlackBot · object"},{"type":"object","title":"PagerDuty","description":"+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.3","typeLabel":"PagerDuty · object"},{"type":"object","title":"MSTeamsWebhook","description":"MS Teams Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=ms-teams-webhook","type":"string","enum":["ms-teams-webhook"],"default":"ms-teams-webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.4.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX].oneOf.4","typeLabel":"MSTeamsWebhook · object"}],"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target.items.[INDEX]","typeLabel":"Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object | MSTeamsWebhook · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts.notification_target","typeLabel":"(Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object | MSTeamsWebhook · object)[]"}},"title":"BudgetAlert","x-fern-type-name":"BudgetAlert","uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].alerts","typeLabel":"BudgetAlert · object"},"audit_mode":{"description":"When enabled, requests exceeding the budget are tracked but not blocked","type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX].audit_mode","typeLabel":"boolean"}},"title":"BudgetRule","x-fern-type-name":"BudgetRule","uniqueKey":"existingManifest.oneOf.83.rules.items.[INDEX]","typeLabel":"BudgetRule · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.83.rules","typeLabel":"BudgetRule · object[]"}},"uniqueKey":"existingManifest.oneOf.83","typeLabel":"BudgetConfig · object"},{"type":"object","title":"TenantBudgetConfig","description":"The existing manifest of the resource","required":["type","name","limits","applies_to","mode"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=tenant-budget-config\n+sort=1","type":"string","enum":["tenant-budget-config"],"default":"tenant-budget-config","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique name for this budget","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.name","typeLabel":"string"},"limits":{"description":"Budget Limits","type":"object","properties":{"cost_per_day":{"description":"Maximum daily cost in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Maximum weekly cost in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Maximum monthly cost in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Maximum quarterly cost in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Maximum lifetime cost in USD. Mutually exclusive with the day/week/month/quarter limits.","type":"number","uniqueKey":"existingManifest.oneOf.84.limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2Limits","x-fern-type-name":"BudgetV2Limits","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.limits","typeLabel":"BudgetV2Limits · object"},"applies_to":{"oneOf":[{"type":"object","title":"BudgetV2AppliesToAggregate","description":"A single shared budget across every matching request.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["aggregate"],"default":"aggregate","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.0","typeLabel":"BudgetV2AppliesToAggregate · object"},{"type":"object","title":"BudgetV2AppliesToPerUser","description":"Track a separate budget for each unique user.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-user"],"default":"per-user","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.1.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-user limit overrides","type":"array","items":{"description":"Per-User Override","type":"object","required":["users","limits"],"properties":{"users":{"description":"Users whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.1.overrides.items.[INDEX].users.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.1.overrides.items.[INDEX].users","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.1.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerUserOverride","x-fern-type-name":"BudgetV2PerUserOverride","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.1.overrides.items.[INDEX]","typeLabel":"BudgetV2PerUserOverride · object"},"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.1.overrides","typeLabel":"BudgetV2PerUserOverride · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.1","typeLabel":"BudgetV2AppliesToPerUser · object"},{"type":"object","title":"BudgetV2AppliesToPerModel","description":"Track a separate budget for each model.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-model"],"default":"per-model","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.2.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-model limit overrides","type":"array","items":{"description":"Per-Model Override","type":"object","required":["models","limits"],"properties":{"models":{"description":"Models whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.2.overrides.items.[INDEX].models.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.2.overrides.items.[INDEX].models","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.2.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerModelOverride","x-fern-type-name":"BudgetV2PerModelOverride","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.2.overrides.items.[INDEX]","typeLabel":"BudgetV2PerModelOverride · object"},"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.2.overrides","typeLabel":"BudgetV2PerModelOverride · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.2","typeLabel":"BudgetV2AppliesToPerModel · object"},{"type":"object","title":"BudgetV2AppliesToPerVirtualAccount","description":"Track a separate budget for each virtual account.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-virtual-account"],"default":"per-virtual-account","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.3.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-virtual-account limit overrides","type":"array","items":{"description":"Per-Virtual-Account Override","type":"object","required":["virtual_accounts","limits"],"properties":{"virtual_accounts":{"description":"Virtual accounts whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.3.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerVirtualAccountOverride","x-fern-type-name":"BudgetV2PerVirtualAccountOverride","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.3.overrides.items.[INDEX]","typeLabel":"BudgetV2PerVirtualAccountOverride · object"},"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.3.overrides","typeLabel":"BudgetV2PerVirtualAccountOverride · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.3","typeLabel":"BudgetV2AppliesToPerVirtualAccount · object"},{"type":"object","title":"BudgetV2AppliesToPerAgent","description":"Track a separate budget for each agent.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-agent"],"default":"per-agent","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.4.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-agent limit overrides","type":"array","items":{"description":"Per-Agent Override","type":"object","required":["agents","limits"],"properties":{"agents":{"description":"Agents whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.4.overrides.items.[INDEX].agents.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.4.overrides.items.[INDEX].agents","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.4.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerAgentOverride","x-fern-type-name":"BudgetV2PerAgentOverride","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.4.overrides.items.[INDEX]","typeLabel":"BudgetV2PerAgentOverride · object"},"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.4.overrides","typeLabel":"BudgetV2PerAgentOverride · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.4","typeLabel":"BudgetV2AppliesToPerAgent · object"},{"type":"object","title":"BudgetV2AppliesToMetadata","description":"Track a separate budget for each unique value of a metadata key.","required":["type","metadata"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["metadata"],"default":"metadata","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.5.type","typeLabel":"enum\u003cstring>"},"metadata":{"description":"Metadata key whose distinct values each get their own budget bucket","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.5.metadata","typeLabel":"string"},"overrides":{"description":"Optional per-metadata-value limit overrides","type":"array","items":{"description":"Per-Metadata Override","type":"object","required":["metadata_values","limits"],"properties":{"metadata_values":{"description":"Metadata values whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.5.overrides.items.[INDEX].metadata_values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.5.overrides.items.[INDEX].metadata_values","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.5.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerMetadataOverride","x-fern-type-name":"BudgetV2PerMetadataOverride","uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.5.overrides.items.[INDEX]","typeLabel":"BudgetV2PerMetadataOverride · object"},"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.5.overrides","typeLabel":"BudgetV2PerMetadataOverride · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to.oneOf.5","typeLabel":"BudgetV2AppliesToMetadata · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.applies_to","typeLabel":"BudgetV2AppliesToAggregate · object | BudgetV2AppliesToPerUser · object | BudgetV2AppliesToPerModel · object | BudgetV2AppliesToPerVirtualAccount · object | BudgetV2AppliesToPerAgent · object | BudgetV2AppliesToMetadata · object"},"mode":{"description":"`enforce` blocks breaching requests, `audit` only tracks them, `soft_enforce` blocks only when no other matching budget allows the request.","type":"string","enum":["enforce","audit","soft_enforce"],"default":"enforce","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.mode","typeLabel":"enum\u003cstring>"},"when":{"description":"Tenant Budget Conditions\nvirtual_models | virtual_provider_accounts cannot be combined with models | provider_accounts\n(enforced in GatewayBudgetService).","type":"object","properties":{"subjects":{"description":"Tenant Budget Subjects","type":"object","properties":{"users":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.when.subjects.users.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.when.subjects.users.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.when.subjects.users.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.when.subjects.users.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"existingManifest.oneOf.84.when.subjects.users","typeLabel":"BudgetV2InNotInFilter · object"},"teams":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.when.subjects.teams.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.when.subjects.teams.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.when.subjects.teams.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.when.subjects.teams.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"existingManifest.oneOf.84.when.subjects.teams","typeLabel":"BudgetV2InNotInFilter · object"},"virtual_accounts":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.when.subjects.virtual_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.when.subjects.virtual_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.when.subjects.virtual_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.when.subjects.virtual_accounts.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"existingManifest.oneOf.84.when.subjects.virtual_accounts","typeLabel":"BudgetV2InNotInFilter · object"},"agents":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.when.subjects.agents.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.when.subjects.agents.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.when.subjects.agents.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.when.subjects.agents.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"existingManifest.oneOf.84.when.subjects.agents","typeLabel":"BudgetV2InNotInFilter · object"}},"title":"BudgetV2SubjectsTenantScoped","x-fern-type-name":"BudgetV2SubjectsTenantScoped","uniqueKey":"existingManifest.oneOf.84.when.subjects","typeLabel":"BudgetV2SubjectsTenantScoped · object"},"models":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.when.models.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.when.models.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.when.models.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.when.models.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"existingManifest.oneOf.84.when.models","typeLabel":"BudgetV2InNotInFilter · object"},"provider_accounts":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.when.provider_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.when.provider_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.when.provider_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.when.provider_accounts.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"existingManifest.oneOf.84.when.provider_accounts","typeLabel":"BudgetV2InNotInFilter · object"},"virtual_models":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.when.virtual_models.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.when.virtual_models.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.when.virtual_models.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.when.virtual_models.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"existingManifest.oneOf.84.when.virtual_models","typeLabel":"BudgetV2InNotInFilter · object"},"virtual_provider_accounts":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.when.virtual_provider_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.when.virtual_provider_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.when.virtual_provider_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.when.virtual_provider_accounts.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"existingManifest.oneOf.84.when.virtual_provider_accounts","typeLabel":"BudgetV2InNotInFilter · object"},"metadata":{"description":"Filter by metadata key-value pairs this budget applies to","type":"object","additionalProperties":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.when.metadata.additionalProperties.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.when.metadata.additionalProperties.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.when.metadata.additionalProperties.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.when.metadata.additionalProperties.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"existingManifest.oneOf.84.when.metadata.additionalProperties","typeLabel":"BudgetV2InNotInFilter · object"},"uniqueKey":"existingManifest.oneOf.84.when.metadata","typeLabel":"object"}},"title":"BudgetV2WhenTenantScoped","x-fern-type-name":"BudgetV2WhenTenantScoped","uniqueKey":"existingManifest.oneOf.84.when","typeLabel":"BudgetV2WhenTenantScoped · object"},"alerts":{"description":"Budget Alert","type":"object","required":["thresholds"],"properties":{"thresholds":{"description":"List of usage percentages (0-100) at which alerts should be triggered. Default thresholds are [75, 90, 95, 100].","type":"array","items":{"type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.84.alerts.thresholds.items.[INDEX]","typeLabel":"number"},"default":[75,90,95,100],"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.alerts.thresholds","typeLabel":"number[]"},"notification_target":{"description":"Select where to send budget alert notifications","type":"array","items":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBotWithUsers","description":"Budget-only variant. Alertmanager-backed alerts cannot resolve an email to a Slack\nuser, so `users` is kept off the shared #SlackBot.","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.2.channels","typeLabel":"string[]"},"users":{"description":"List of user emails to send direct messages to. Use {{user.email}} to message the user who breached the budget.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.2.users.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.2.users","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.2","typeLabel":"SlackBotWithUsers · object"},{"type":"object","title":"PagerDuty","description":"+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.3","typeLabel":"PagerDuty · object"},{"type":"object","title":"MSTeamsWebhook","description":"MS Teams Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=ms-teams-webhook","type":"string","enum":["ms-teams-webhook"],"default":"ms-teams-webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.4.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.4","typeLabel":"MSTeamsWebhook · object"},{"type":"object","title":"Webhook","description":"Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=webhook","type":"string","enum":["webhook"],"default":"webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.5.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX].oneOf.5","typeLabel":"Webhook · object"}],"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target.items.[INDEX]","typeLabel":"Email · object | SlackWebhook · object | SlackBotWithUsers · object | PagerDuty · object | MSTeamsWebhook · object | Webhook · object"},"uniqueKey":"existingManifest.oneOf.84.alerts.notification_target","typeLabel":"(Email · object | SlackWebhook · object | SlackBotWithUsers · object | PagerDuty · object | MSTeamsWebhook · object | Webhook · object)[]"}},"title":"BudgetV2Alert","x-fern-type-name":"BudgetV2Alert","uniqueKey":"existingManifest.oneOf.84.alerts","typeLabel":"BudgetV2Alert · object"}},"uniqueKey":"existingManifest.oneOf.84","typeLabel":"TenantBudgetConfig · object"},{"type":"object","title":"TeamBudgetConfig","description":"The existing manifest of the resource","required":["type","team_name","name","limits","applies_to","mode"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=team-budget-config\n+sort=1","type":"string","enum":["team-budget-config"],"default":"team-budget-config","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.type","typeLabel":"enum\u003cstring>"},"team_name":{"description":"Name of the team that owns this budget. RBAC is enforced on this value.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.team_name","typeLabel":"string"},"name":{"description":"Unique name for this budget","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.name","typeLabel":"string"},"limits":{"description":"Budget Limits","type":"object","properties":{"cost_per_day":{"description":"Maximum daily cost in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Maximum weekly cost in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Maximum monthly cost in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Maximum quarterly cost in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Maximum lifetime cost in USD. Mutually exclusive with the day/week/month/quarter limits.","type":"number","uniqueKey":"existingManifest.oneOf.85.limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2Limits","x-fern-type-name":"BudgetV2Limits","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.limits","typeLabel":"BudgetV2Limits · object"},"applies_to":{"oneOf":[{"type":"object","title":"BudgetV2AppliesToAggregate","description":"A single shared budget across every matching request.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["aggregate"],"default":"aggregate","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.0","typeLabel":"BudgetV2AppliesToAggregate · object"},{"type":"object","title":"BudgetV2AppliesToPerUser","description":"Track a separate budget for each unique user.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-user"],"default":"per-user","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.1.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-user limit overrides","type":"array","items":{"description":"Per-User Override","type":"object","required":["users","limits"],"properties":{"users":{"description":"Users whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.1.overrides.items.[INDEX].users.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.1.overrides.items.[INDEX].users","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.1.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerUserOverride","x-fern-type-name":"BudgetV2PerUserOverride","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.1.overrides.items.[INDEX]","typeLabel":"BudgetV2PerUserOverride · object"},"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.1.overrides","typeLabel":"BudgetV2PerUserOverride · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.1","typeLabel":"BudgetV2AppliesToPerUser · object"},{"type":"object","title":"BudgetV2AppliesToPerModel","description":"Track a separate budget for each model.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-model"],"default":"per-model","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.2.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-model limit overrides","type":"array","items":{"description":"Per-Model Override","type":"object","required":["models","limits"],"properties":{"models":{"description":"Models whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.2.overrides.items.[INDEX].models.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.2.overrides.items.[INDEX].models","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.2.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerModelOverride","x-fern-type-name":"BudgetV2PerModelOverride","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.2.overrides.items.[INDEX]","typeLabel":"BudgetV2PerModelOverride · object"},"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.2.overrides","typeLabel":"BudgetV2PerModelOverride · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.2","typeLabel":"BudgetV2AppliesToPerModel · object"},{"type":"object","title":"BudgetV2AppliesToPerVirtualAccount","description":"Track a separate budget for each virtual account.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-virtual-account"],"default":"per-virtual-account","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.3.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-virtual-account limit overrides","type":"array","items":{"description":"Per-Virtual-Account Override","type":"object","required":["virtual_accounts","limits"],"properties":{"virtual_accounts":{"description":"Virtual accounts whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.3.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerVirtualAccountOverride","x-fern-type-name":"BudgetV2PerVirtualAccountOverride","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.3.overrides.items.[INDEX]","typeLabel":"BudgetV2PerVirtualAccountOverride · object"},"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.3.overrides","typeLabel":"BudgetV2PerVirtualAccountOverride · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.3","typeLabel":"BudgetV2AppliesToPerVirtualAccount · object"},{"type":"object","title":"BudgetV2AppliesToPerAgent","description":"Track a separate budget for each agent.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-agent"],"default":"per-agent","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.4.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-agent limit overrides","type":"array","items":{"description":"Per-Agent Override","type":"object","required":["agents","limits"],"properties":{"agents":{"description":"Agents whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.4.overrides.items.[INDEX].agents.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.4.overrides.items.[INDEX].agents","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.4.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerAgentOverride","x-fern-type-name":"BudgetV2PerAgentOverride","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.4.overrides.items.[INDEX]","typeLabel":"BudgetV2PerAgentOverride · object"},"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.4.overrides","typeLabel":"BudgetV2PerAgentOverride · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.4","typeLabel":"BudgetV2AppliesToPerAgent · object"},{"type":"object","title":"BudgetV2AppliesToMetadata","description":"Track a separate budget for each unique value of a metadata key.","required":["type","metadata"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["metadata"],"default":"metadata","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.5.type","typeLabel":"enum\u003cstring>"},"metadata":{"description":"Metadata key whose distinct values each get their own budget bucket","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.5.metadata","typeLabel":"string"},"overrides":{"description":"Optional per-metadata-value limit overrides","type":"array","items":{"description":"Per-Metadata Override","type":"object","required":["metadata_values","limits"],"properties":{"metadata_values":{"description":"Metadata values whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.5.overrides.items.[INDEX].metadata_values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.5.overrides.items.[INDEX].metadata_values","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.5.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerMetadataOverride","x-fern-type-name":"BudgetV2PerMetadataOverride","uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.5.overrides.items.[INDEX]","typeLabel":"BudgetV2PerMetadataOverride · object"},"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.5.overrides","typeLabel":"BudgetV2PerMetadataOverride · object[]"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to.oneOf.5","typeLabel":"BudgetV2AppliesToMetadata · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.applies_to","typeLabel":"BudgetV2AppliesToAggregate · object | BudgetV2AppliesToPerUser · object | BudgetV2AppliesToPerModel · object | BudgetV2AppliesToPerVirtualAccount · object | BudgetV2AppliesToPerAgent · object | BudgetV2AppliesToMetadata · object"},"mode":{"description":"`enforce` blocks breaching requests, `audit` only tracks them, `soft_enforce` blocks only when no other matching budget allows the request.","type":"string","enum":["enforce","audit","soft_enforce"],"default":"enforce","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.mode","typeLabel":"enum\u003cstring>"},"when":{"description":"Team Budget Conditions\nvirtual_models | virtual_provider_accounts cannot be combined with models | provider_accounts\n(enforced in GatewayBudgetService).","type":"object","properties":{"subjects":{"description":"Team Budget Subjects","type":"object","properties":{"users":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.when.subjects.users.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.85.when.subjects.users.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.when.subjects.users.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.85.when.subjects.users.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"existingManifest.oneOf.85.when.subjects.users","typeLabel":"BudgetV2InNotInFilter · object"},"virtual_accounts":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.when.subjects.virtual_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.85.when.subjects.virtual_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.when.subjects.virtual_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.85.when.subjects.virtual_accounts.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"existingManifest.oneOf.85.when.subjects.virtual_accounts","typeLabel":"BudgetV2InNotInFilter · object"}},"title":"BudgetV2SubjectsTeamScoped","x-fern-type-name":"BudgetV2SubjectsTeamScoped","uniqueKey":"existingManifest.oneOf.85.when.subjects","typeLabel":"BudgetV2SubjectsTeamScoped · object"},"models":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.when.models.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.85.when.models.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.when.models.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.85.when.models.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"existingManifest.oneOf.85.when.models","typeLabel":"BudgetV2InNotInFilter · object"},"provider_accounts":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.when.provider_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.85.when.provider_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.when.provider_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.85.when.provider_accounts.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"existingManifest.oneOf.85.when.provider_accounts","typeLabel":"BudgetV2InNotInFilter · object"},"virtual_models":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.when.virtual_models.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.85.when.virtual_models.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.when.virtual_models.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.85.when.virtual_models.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"existingManifest.oneOf.85.when.virtual_models","typeLabel":"BudgetV2InNotInFilter · object"},"virtual_provider_accounts":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.when.virtual_provider_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.85.when.virtual_provider_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.when.virtual_provider_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.85.when.virtual_provider_accounts.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"existingManifest.oneOf.85.when.virtual_provider_accounts","typeLabel":"BudgetV2InNotInFilter · object"},"metadata":{"description":"Filter by metadata key-value pairs this budget applies to","type":"object","additionalProperties":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.when.metadata.additionalProperties.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.85.when.metadata.additionalProperties.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.when.metadata.additionalProperties.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.85.when.metadata.additionalProperties.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"existingManifest.oneOf.85.when.metadata.additionalProperties","typeLabel":"BudgetV2InNotInFilter · object"},"uniqueKey":"existingManifest.oneOf.85.when.metadata","typeLabel":"object"}},"title":"BudgetV2WhenTeamScoped","x-fern-type-name":"BudgetV2WhenTeamScoped","uniqueKey":"existingManifest.oneOf.85.when","typeLabel":"BudgetV2WhenTeamScoped · object"},"alerts":{"description":"Budget Alert","type":"object","required":["thresholds"],"properties":{"thresholds":{"description":"List of usage percentages (0-100) at which alerts should be triggered. Default thresholds are [75, 90, 95, 100].","type":"array","items":{"type":"number","minimum":0,"maximum":100,"uniqueKey":"existingManifest.oneOf.85.alerts.thresholds.items.[INDEX]","typeLabel":"number"},"default":[75,90,95,100],"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.alerts.thresholds","typeLabel":"number[]"},"notification_target":{"description":"Select where to send budget alert notifications","type":"array","items":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBotWithUsers","description":"Budget-only variant. Alertmanager-backed alerts cannot resolve an email to a Slack\nuser, so `users` is kept off the shared #SlackBot.","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.2.channels","typeLabel":"string[]"},"users":{"description":"List of user emails to send direct messages to. Use {{user.email}} to message the user who breached the budget.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.2.users.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.2.users","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.2","typeLabel":"SlackBotWithUsers · object"},{"type":"object","title":"PagerDuty","description":"+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.3","typeLabel":"PagerDuty · object"},{"type":"object","title":"MSTeamsWebhook","description":"MS Teams Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=ms-teams-webhook","type":"string","enum":["ms-teams-webhook"],"default":"ms-teams-webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.4.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.4","typeLabel":"MSTeamsWebhook · object"},{"type":"object","title":"Webhook","description":"Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=webhook","type":"string","enum":["webhook"],"default":"webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.5.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX].oneOf.5","typeLabel":"Webhook · object"}],"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target.items.[INDEX]","typeLabel":"Email · object | SlackWebhook · object | SlackBotWithUsers · object | PagerDuty · object | MSTeamsWebhook · object | Webhook · object"},"uniqueKey":"existingManifest.oneOf.85.alerts.notification_target","typeLabel":"(Email · object | SlackWebhook · object | SlackBotWithUsers · object | PagerDuty · object | MSTeamsWebhook · object | Webhook · object)[]"}},"title":"BudgetV2Alert","x-fern-type-name":"BudgetV2Alert","uniqueKey":"existingManifest.oneOf.85.alerts","typeLabel":"BudgetV2Alert · object"}},"uniqueKey":"existingManifest.oneOf.85","typeLabel":"TeamBudgetConfig · object"},{"type":"object","title":"GatewayOTELConfig","description":"The existing manifest of the resource","required":["type"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=gateway-otel-config\n+sort=1","type":"string","enum":["gateway-otel-config"],"default":"gateway-otel-config","isRequired":true,"uniqueKey":"existingManifest.oneOf.86.type","typeLabel":"enum\u003cstring>"},"otel_traces_exporter_config":{"oneOf":[{"type":"object","title":"OTELTracesExporterHttpConfig","description":"HTTP Configuration","required":["type","endpoint","encoding"],"x-fern-type-name":"OTELTracesExporterHttpConfig","properties":{"endpoint":{"description":"Endpoint URL where OpenTelemetry data will be sent","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.0.endpoint","typeLabel":"string"},"encoding":{"description":"Encoding for OpenTelemetry data","type":"string","enum":["proto","json"],"default":"proto","isRequired":true,"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.0.encoding","typeLabel":"enum\u003cstring>"},"type":{"description":"Configuration type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"HTTP headers to include in OpenTelemetry export requests","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.0.headers.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.0.headers","typeLabel":"object"},"additional_resource_attributes":{"description":"Set additional attributes to append them to existing resource attributes of every exported trace","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.0.additional_resource_attributes.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.0.additional_resource_attributes","typeLabel":"object"},"exclude_request_data":{"description":"Enable to prevent forwarding the LLM or MCP request and response body in exported traces. The following span attributes are dropped: tfy.input, tfy.output, tfy.input_short_hand","type":"boolean","uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.0.exclude_request_data","typeLabel":"boolean"},"when":{"description":"Export spans only when they match all of the following filters. Only matching on spanAttributes with string values in supported.","type":"array","items":{"description":"Filter configuration for filtering spans by attributes before exporting","type":"object","required":["field","key","operator","value"],"properties":{"field":{"description":"Type of attribute field to filter on","type":"string","enum":["spanAttributes"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.0.when.items.[INDEX].field","typeLabel":"enum\u003cstring>"},"key":{"description":"Key name of the span attribute to filter on","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.0.when.items.[INDEX].key","typeLabel":"string"},"operator":{"description":"Comparison operator to use for filtering","type":"string","enum":["IN"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.0.when.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Values","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.0.when.items.[INDEX].value.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.0.when.items.[INDEX].value","typeLabel":"string[]"}},"title":"OTELTracesExporterSpanAttributeFilter","x-fern-type-name":"OTELTracesExporterSpanAttributeFilter","uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.0.when.items.[INDEX]","typeLabel":"OTELTracesExporterSpanAttributeFilter · object"},"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.0.when","typeLabel":"OTELTracesExporterSpanAttributeFilter · object[]"}},"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.0","typeLabel":"OTELTracesExporterHttpConfig · object"},{"type":"object","title":"OTELTracesExporterGrpcConfig","description":"gRPC Configuration","required":["type","endpoint"],"x-fern-type-name":"OTELTracesExporterGrpcConfig","properties":{"endpoint":{"description":"Endpoint URL where OpenTelemetry data will be sent","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.1.endpoint","typeLabel":"string"},"type":{"description":"Configuration type","type":"string","enum":["grpc"],"default":"grpc","isRequired":true,"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"gRPC metadata to include in OpenTelemetry export requests","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.1.headers.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.1.headers","typeLabel":"object"},"additional_resource_attributes":{"description":"Set additional attributes to append them to existing resource attributes of every exported trace","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.1.additional_resource_attributes.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.1.additional_resource_attributes","typeLabel":"object"},"exclude_request_data":{"description":"Enable to prevent forwarding the LLM or MCP request and response body in exported traces. The following span attributes are dropped: tfy.input, tfy.output, tfy.input_short_hand","type":"boolean","uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.1.exclude_request_data","typeLabel":"boolean"},"when":{"description":"Export spans only when they match all of the following filters. Only matching on spanAttributes with string values in supported.","type":"array","items":{"description":"Filter configuration for filtering spans by attributes before exporting","type":"object","required":["field","key","operator","value"],"properties":{"field":{"description":"Type of attribute field to filter on","type":"string","enum":["spanAttributes"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.1.when.items.[INDEX].field","typeLabel":"enum\u003cstring>"},"key":{"description":"Key name of the span attribute to filter on","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.1.when.items.[INDEX].key","typeLabel":"string"},"operator":{"description":"Comparison operator to use for filtering","type":"string","enum":["IN"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.1.when.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Values","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.1.when.items.[INDEX].value.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.1.when.items.[INDEX].value","typeLabel":"string[]"}},"title":"OTELTracesExporterSpanAttributeFilter","x-fern-type-name":"OTELTracesExporterSpanAttributeFilter","uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.1.when.items.[INDEX]","typeLabel":"OTELTracesExporterSpanAttributeFilter · object"},"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.1.when","typeLabel":"OTELTracesExporterSpanAttributeFilter · object[]"}},"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config.oneOf.1","typeLabel":"OTELTracesExporterGrpcConfig · object"}],"uniqueKey":"existingManifest.oneOf.86.otel_traces_exporter_config","typeLabel":"OTELTracesExporterHttpConfig · object | OTELTracesExporterGrpcConfig · object"},"otel_metrics_exporter_config":{"oneOf":[{"type":"object","title":"OTELMetricsExporterHttpConfig","description":"HTTP Configuration","required":["type","endpoint","encoding"],"x-fern-type-name":"OTELMetricsExporterHttpConfig","properties":{"endpoint":{"description":"Endpoint URL where OpenTelemetry data will be sent","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.86.otel_metrics_exporter_config.oneOf.0.endpoint","typeLabel":"string"},"encoding":{"description":"Encoding for OpenTelemetry data","type":"string","enum":["proto","json"],"default":"proto","isRequired":true,"uniqueKey":"existingManifest.oneOf.86.otel_metrics_exporter_config.oneOf.0.encoding","typeLabel":"enum\u003cstring>"},"type":{"description":"Configuration type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"existingManifest.oneOf.86.otel_metrics_exporter_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"HTTP headers to include in OpenTelemetry export requests","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.86.otel_metrics_exporter_config.oneOf.0.headers.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.86.otel_metrics_exporter_config.oneOf.0.headers","typeLabel":"object"},"export_delta_metrics":{"description":"Export counters and histograms with delta temporality instead of cumulative. Enable this for backends such as Datadog that expect delta-encoded metrics.","type":"boolean","uniqueKey":"existingManifest.oneOf.86.otel_metrics_exporter_config.oneOf.0.export_delta_metrics","typeLabel":"boolean"}},"uniqueKey":"existingManifest.oneOf.86.otel_metrics_exporter_config.oneOf.0","typeLabel":"OTELMetricsExporterHttpConfig · object"},{"type":"object","title":"OTELMetricsExporterGrpcConfig","description":"gRPC Configuration","required":["type","endpoint"],"x-fern-type-name":"OTELMetricsExporterGrpcConfig","properties":{"endpoint":{"description":"Endpoint URL where OpenTelemetry data will be sent","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.86.otel_metrics_exporter_config.oneOf.1.endpoint","typeLabel":"string"},"type":{"description":"Configuration type","type":"string","enum":["grpc"],"default":"grpc","isRequired":true,"uniqueKey":"existingManifest.oneOf.86.otel_metrics_exporter_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"gRPC metadata to include in OpenTelemetry export requests","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.86.otel_metrics_exporter_config.oneOf.1.headers.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.86.otel_metrics_exporter_config.oneOf.1.headers","typeLabel":"object"},"export_delta_metrics":{"description":"Export counters and histograms with delta temporality instead of cumulative. Enable this for backends such as Datadog that expect delta-encoded metrics.","type":"boolean","uniqueKey":"existingManifest.oneOf.86.otel_metrics_exporter_config.oneOf.1.export_delta_metrics","typeLabel":"boolean"}},"uniqueKey":"existingManifest.oneOf.86.otel_metrics_exporter_config.oneOf.1","typeLabel":"OTELMetricsExporterGrpcConfig · object"}],"uniqueKey":"existingManifest.oneOf.86.otel_metrics_exporter_config","typeLabel":"OTELMetricsExporterHttpConfig · object | OTELMetricsExporterGrpcConfig · object"}},"uniqueKey":"existingManifest.oneOf.86","typeLabel":"GatewayOTELConfig · object"},{"type":"object","title":"GatewayMetadataConfig","description":"The existing manifest of the resource","required":["name","type","rules"],"x-fern-type-name":"GatewayConfig","properties":{"name":{"description":"Name of the metadata configuration","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.87.name","typeLabel":"string"},"type":{"description":"+value=gateway-metadata-config\n+sort=2","type":"string","enum":["gateway-metadata-config"],"default":"gateway-metadata-config","isRequired":true,"uniqueKey":"existingManifest.oneOf.87.type","typeLabel":"enum\u003cstring>"},"rules":{"description":"List of metadata rules","type":"array","items":{"description":"Metadata Rule","type":"object","required":["id","when","metadata_override"],"properties":{"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.87.rules.items.[INDEX].id","typeLabel":"string"},"when":{"description":"Rule Conditions","type":"object","properties":{"subjects":{"description":"List of subjects that this rule applies to","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.87.rules.items.[INDEX].when.subjects.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.87.rules.items.[INDEX].when.subjects","typeLabel":"string[]"}},"title":"GatewayMetadataWhen","x-fern-type-name":"GatewayMetadataWhen","isRequired":true,"uniqueKey":"existingManifest.oneOf.87.rules.items.[INDEX].when","typeLabel":"GatewayMetadataWhen · object"},"metadata_override":{"description":"Metadata key-value pairs to override in the request metadata","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.87.rules.items.[INDEX].metadata_override.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.87.rules.items.[INDEX].metadata_override","typeLabel":"object"}},"title":"GatewayMetadataRule","x-fern-type-name":"GatewayMetadataRule","uniqueKey":"existingManifest.oneOf.87.rules.items.[INDEX]","typeLabel":"GatewayMetadataRule · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.87.rules","typeLabel":"GatewayMetadataRule · object[]"}},"uniqueKey":"existingManifest.oneOf.87","typeLabel":"GatewayMetadataConfig · object"},{"type":"object","title":"GlobalSettings","description":"The existing manifest of the resource","required":["type"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=gateway-global-settings\n+sort=2","type":"string","enum":["gateway-global-settings"],"default":"gateway-global-settings","isRequired":true,"uniqueKey":"existingManifest.oneOf.88.type","typeLabel":"enum\u003cstring>"},"retry_settings":{"type":"object","required":["attempts"],"properties":{"attempts":{"description":"Number of attempts to retry the request","type":"integer","minimum":0,"isRequired":true,"uniqueKey":"existingManifest.oneOf.88.retry_settings.attempts","typeLabel":"integer"},"delay":{"description":"Delay between retries in milliseconds","type":"integer","minimum":0,"exclusiveMinimum":true,"default":100,"uniqueKey":"existingManifest.oneOf.88.retry_settings.delay","typeLabel":"integer"},"on_status_codes":{"description":"Status codes to retry on","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.88.retry_settings.on_status_codes.items.[INDEX]","typeLabel":"string"},"default":["429","500","502","503"],"uniqueKey":"existingManifest.oneOf.88.retry_settings.on_status_codes","typeLabel":"string[]"}},"title":"RetryConfig","x-fern-type-name":"RetryConfig","uniqueKey":"existingManifest.oneOf.88.retry_settings","typeLabel":"RetryConfig · object"},"logging_settings":{"oneOf":[{"type":"object","title":"LoggingModeAlways","description":"Enable this mode to log request and response bodies for all incoming gateway requests, ignoring request headers. Use it for in-depth logging required for debugging, compliance, or auditing.","required":["type"],"x-fern-type-name":"LoggingMode","properties":{"type":{"description":"+value=always","type":"string","enum":["always"],"default":"always","isRequired":true,"uniqueKey":"existingManifest.oneOf.88.logging_settings.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.88.logging_settings.oneOf.0","typeLabel":"LoggingModeAlways · object"},{"type":"object","title":"LoggingModeNever","description":"Enable this mode to disable request and response body logging for all gateway requests, regardless of headers. Request metadata and headers are still logged, but body content is excluded.","required":["type"],"x-fern-type-name":"LoggingMode","properties":{"type":{"description":"+value=never","type":"string","enum":["never"],"default":"never","isRequired":true,"uniqueKey":"existingManifest.oneOf.88.logging_settings.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.88.logging_settings.oneOf.1","typeLabel":"LoggingModeNever · object"},{"type":"object","title":"LoggingModeHeaderControlled","description":"Enable this mode to allow per-request control of request body logging via HTTP headers. Individual requests can opt in or opt out of body logging using specific headers.","required":["type","log_body_by_default"],"x-fern-type-name":"LoggingMode","properties":{"type":{"description":"+value=header_controlled","type":"string","enum":["header_controlled"],"default":"header_controlled","isRequired":true,"uniqueKey":"existingManifest.oneOf.88.logging_settings.oneOf.2.type","typeLabel":"enum\u003cstring>"},"log_body_by_default":{"description":"Sets the default body logging behaviour when no header is present. Enabling it will log requests by default and clients can opt out. Disabling it will NOT log by default and clients can opt in to log requests.","type":"boolean","isRequired":true,"uniqueKey":"existingManifest.oneOf.88.logging_settings.oneOf.2.log_body_by_default","typeLabel":"boolean"}},"uniqueKey":"existingManifest.oneOf.88.logging_settings.oneOf.2","typeLabel":"LoggingModeHeaderControlled · object"}],"uniqueKey":"existingManifest.oneOf.88.logging_settings","typeLabel":"LoggingModeAlways · object | LoggingModeNever · object | LoggingModeHeaderControlled · object"},"semantic_cache_settings":{"description":"Semantic Cache Settings","type":"object","required":["semantic_cache_embedding_model"],"properties":{"semantic_cache_embedding_model":{"description":"Select the embedding model to use for semantic caching across the gateway. This model will be used to generate embeddings for cache lookups when semantic caching is enabled. The embedding model helps identify semantically similar requests to serve cached responses, improving performance for similar queries.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.88.semantic_cache_settings.semantic_cache_embedding_model","typeLabel":"string"}},"title":"SemanticCacheSettings","x-fern-type-name":"SemanticCacheSettings","uniqueKey":"existingManifest.oneOf.88.semantic_cache_settings","typeLabel":"SemanticCacheSettings · object"},"guardrail_settings":{"description":"Guardrail Settings","type":"object","properties":{"timeout_ms":{"description":"Maximum time in milliseconds the gateway waits for a guardrail provider to respond before timing out the call. Increase this value if guardrails are being invoked on large payloads (e.g. big files) and frequently exceed the default timeout. Applies to all guardrail integrations for this tenant. When unset, the gateway falls back to its built-in default (5000ms) or the GUARDRAIL_TIMEOUT_MS environment variable on the gateway instance.","type":"integer","minimum":1,"uniqueKey":"existingManifest.oneOf.88.guardrail_settings.timeout_ms","typeLabel":"integer"},"enable_parallel_execution":{"description":"Controls whether input guardrails run in parallel with the model request or sequentially before it. When enabled (default), input guardrails are dispatched concurrently with the model request which lowers user-perceived latency but may invoke the model with payloads that a guardrail later rejects. Disable to force input guardrails to fully complete before the model is called, ensuring no wasted model invocations at the cost of additional latency. This sets the tenant-wide default and can still be overridden per-request via the x-tfy-guardrails header.","type":"boolean","uniqueKey":"existingManifest.oneOf.88.guardrail_settings.enable_parallel_execution","typeLabel":"boolean"}},"title":"GuardrailSettings","x-fern-type-name":"GuardrailSettings","uniqueKey":"existingManifest.oneOf.88.guardrail_settings","typeLabel":"GuardrailSettings · object"}},"uniqueKey":"existingManifest.oneOf.88","typeLabel":"GlobalSettings · object"},{"type":"object","title":"GatewayDataAccessConfig","description":"The existing manifest of the resource","required":["type","rules"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=gateway-data-access-config\n+sort=1","type":"string","enum":["gateway-data-access-config"],"default":"gateway-data-access-config","isRequired":true,"uniqueKey":"existingManifest.oneOf.89.type","typeLabel":"enum\u003cstring>"},"rules":{"description":"List of data access rules","type":"array","items":{"oneOf":[{"type":"object","title":"OwnDataAccessRule","description":"Own Data","required":["scope","id","subjects","data_types"],"x-fern-type-name":"DataAccessRule","properties":{"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[A-Za-z{}][A-Za-z0-9{}._-]{0,60}[A-Za-z0-9{}._]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.0.id","typeLabel":"string"},"subjects":{"description":"List of subjects that this rule applies to (users, teams, roles)","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.0.subjects.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.0.subjects","typeLabel":"string[]"},"data_types":{"description":"List of data types that this rule applies to","type":"array","items":{"type":"string","enum":["traces","metrics"],"title":"GatewayDataType","x-fern-type-name":"GatewayDataType","uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.0.data_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["traces","metrics"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.0.data_types","typeLabel":"enum\u003cstring>[]"},"scope":{"description":"Data access scope - access to own data only","type":"string","enum":["own_data"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.0.scope","typeLabel":"enum\u003cstring>"},"description":{"description":"Description of the rule","type":"string","uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.0.description","typeLabel":"string"},"enabled":{"description":"Whether this rule is enabled","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.0.enabled","typeLabel":"boolean"}},"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.0","typeLabel":"OwnDataAccessRule · object"},{"type":"object","title":"TeamDataAccessRule","description":"Team Data","required":["scope","id","subjects","data_types"],"x-fern-type-name":"DataAccessRule","properties":{"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[A-Za-z{}][A-Za-z0-9{}._-]{0,60}[A-Za-z0-9{}._]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.1.id","typeLabel":"string"},"subjects":{"description":"List of subjects that this rule applies to (users, teams, roles)","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.1.subjects.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.1.subjects","typeLabel":"string[]"},"data_types":{"description":"List of data types that this rule applies to","type":"array","items":{"type":"string","enum":["traces","metrics"],"title":"GatewayDataType","x-fern-type-name":"GatewayDataType","uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.1.data_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["traces","metrics"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.1.data_types","typeLabel":"enum\u003cstring>[]"},"scope":{"description":"Data access scope - access to data created by teammates and by virtual accounts owned by the team","type":"string","enum":["team_data"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.1.scope","typeLabel":"enum\u003cstring>"},"description":{"description":"Description of the rule","type":"string","uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.1.description","typeLabel":"string"},"enabled":{"description":"Whether this rule is enabled","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.1.enabled","typeLabel":"boolean"}},"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.1","typeLabel":"TeamDataAccessRule · object"},{"type":"object","title":"TeamVirtualAccountDataAccessRule","description":"Team Applications Data","required":["scope","id","subjects","data_types"],"x-fern-type-name":"DataAccessRule","properties":{"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[A-Za-z{}][A-Za-z0-9{}._-]{0,60}[A-Za-z0-9{}._]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.2.id","typeLabel":"string"},"subjects":{"description":"List of subjects that this rule applies to (users, teams, roles)","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.2.subjects.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.2.subjects","typeLabel":"string[]"},"data_types":{"description":"List of data types that this rule applies to","type":"array","items":{"type":"string","enum":["traces","metrics"],"title":"GatewayDataType","x-fern-type-name":"GatewayDataType","uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.2.data_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["traces","metrics"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.2.data_types","typeLabel":"enum\u003cstring>[]"},"scope":{"description":"Data access scope - access only to data created by virtual accounts owned by the team","type":"string","enum":["team_virtual_account_data"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.2.scope","typeLabel":"enum\u003cstring>"},"description":{"description":"Description of the rule","type":"string","uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.2.description","typeLabel":"string"},"enabled":{"description":"Whether this rule is enabled","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.2.enabled","typeLabel":"boolean"}},"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.2","typeLabel":"TeamVirtualAccountDataAccessRule · object"},{"type":"object","title":"AllDataAccessRule","description":"All Data","required":["scope","id","subjects","data_types"],"x-fern-type-name":"DataAccessRule","properties":{"id":{"description":"Unique identifier for the rule","type":"string","pattern":"^[A-Za-z{}][A-Za-z0-9{}._-]{0,60}[A-Za-z0-9{}._]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.3.id","typeLabel":"string"},"subjects":{"description":"List of subjects that this rule applies to (users, teams, roles)","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.3.subjects.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.3.subjects","typeLabel":"string[]"},"data_types":{"description":"List of data types that this rule applies to","type":"array","items":{"type":"string","enum":["traces","metrics"],"title":"GatewayDataType","x-fern-type-name":"GatewayDataType","uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.3.data_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["traces","metrics"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.3.data_types","typeLabel":"enum\u003cstring>[]"},"scope":{"description":"Data access scope - access to all data with optional filters","type":"string","enum":["all_data"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.3.scope","typeLabel":"enum\u003cstring>"},"description":{"description":"Description of the rule","type":"string","uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.3.description","typeLabel":"string"},"enabled":{"description":"Whether this rule is enabled","type":"boolean","default":true,"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.3.enabled","typeLabel":"boolean"},"filters":{"description":"Optional filters to restrict data access (only applicable for all_data scope)","type":"array","items":{"type":"any","uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.3.filters.items.[INDEX]","typeLabel":"any"},"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.3.filters","typeLabel":"any[]"}},"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX].oneOf.3","typeLabel":"AllDataAccessRule · object"}],"uniqueKey":"existingManifest.oneOf.89.rules.items.[INDEX]","typeLabel":"OwnDataAccessRule · object | TeamDataAccessRule · object | TeamVirtualAccountDataAccessRule · object | AllDataAccessRule · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.89.rules","typeLabel":"(OwnDataAccessRule · object | TeamDataAccessRule · object | TeamVirtualAccountDataAccessRule · object | AllDataAccessRule · object)[]"}},"uniqueKey":"existingManifest.oneOf.89","typeLabel":"GatewayDataAccessConfig · object"},{"type":"object","title":"GatewayDataRoutingConfig","description":"The existing manifest of the resource","required":["type","default"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"Type of configuration","type":"string","enum":["gateway-data-routing-config"],"default":"gateway-data-routing-config","isRequired":true,"uniqueKey":"existingManifest.oneOf.90.type","typeLabel":"enum\u003cstring>"},"default":{"type":"object","required":["storage"],"properties":{"storage":{"oneOf":[{"type":"object","title":"GatewayDataRoutingConfigDestinationControlPlaneManagedStorage","description":"Managed Storage in Control-Plane.","default":{"type":"controlplane-managed"},"required":["type"],"x-fern-type-name":"GatewayDataRoutingConfigDestinationControlPlaneManagedStorage","properties":{"type":{"description":"Type of storage configuration","type":"string","enum":["controlplane-managed"],"default":"controlplane-managed","isRequired":true,"uniqueKey":"existingManifest.oneOf.90.default.storage.oneOf.0.type","typeLabel":"enum\u003cstring>"},"region":{"description":"Specifies the region where control plane–managed storage is located.","type":"string","enum":["us","australia","india"],"uniqueKey":"existingManifest.oneOf.90.default.storage.oneOf.0.region","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.90.default.storage.oneOf.0","typeLabel":"GatewayDataRoutingConfigDestinationControlPlaneManagedStorage · object"},{"type":"object","title":"GatewayDataRoutingConfigDestinationCustomerManagedStorage","description":"Bring your own storage.","default":{"type":"controlplane-managed"},"required":["type","storage_integration_fqn"],"x-fern-type-name":"GatewayDataRoutingConfigDestinationCustomerManagedStorage","properties":{"type":{"description":"Type of storage configuration","type":"string","enum":["customer-managed"],"default":"customer-managed","isRequired":true,"uniqueKey":"existingManifest.oneOf.90.default.storage.oneOf.1.type","typeLabel":"enum\u003cstring>"},"storage_integration_fqn":{"description":"Storage Integration FQN to store traces and spans. A storage integration represents a connected blob storage like AWS S3 / Azure Blob Storage / Google Cloud Storage.","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._:-]*[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.90.default.storage.oneOf.1.storage_integration_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.90.default.storage.oneOf.1","typeLabel":"GatewayDataRoutingConfigDestinationCustomerManagedStorage · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.90.default.storage","typeLabel":"GatewayDataRoutingConfigDestinationControlPlaneManagedStorage · object | GatewayDataRoutingConfigDestinationCustomerManagedStorage · object"},"traces_retention_period_days":{"description":"Number of days to retain traces (this does not affect metrics storage)","type":"integer","minimum":7,"uniqueKey":"existingManifest.oneOf.90.default.traces_retention_period_days","typeLabel":"integer"},"metrics_retention_period_days":{"description":"Number of days to retain metrics (this does not affect traces storage)","type":"integer","minimum":7,"uniqueKey":"existingManifest.oneOf.90.default.metrics_retention_period_days","typeLabel":"integer"}},"title":"GatewayDataRoutingConfigDestinationStorage","x-fern-type-name":"GatewayDataRoutingConfigDestinationStorage","isRequired":true,"uniqueKey":"existingManifest.oneOf.90.default","typeLabel":"GatewayDataRoutingConfigDestinationStorage · object"},"destinations":{"description":"List of conditional routing destinations","type":"array","items":{"type":"object","title":"GatewayDataRoutingConfigDestination","description":"Destination for data routing based on conditions.","required":["name","enabled","when","storage"],"x-fern-type-name":"GatewayDataRoutingConfigDestination","properties":{"storage":{"oneOf":[{"type":"object","title":"GatewayDataRoutingConfigDestinationControlPlaneManagedStorage","description":"Managed Storage in Control-Plane.","default":{"type":"controlplane-managed"},"required":["type"],"x-fern-type-name":"GatewayDataRoutingConfigDestinationControlPlaneManagedStorage","properties":{"type":{"description":"Type of storage configuration","type":"string","enum":["controlplane-managed"],"default":"controlplane-managed","isRequired":true,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].storage.oneOf.0.type","typeLabel":"enum\u003cstring>"},"region":{"description":"Specifies the region where control plane–managed storage is located.","type":"string","enum":["us","australia","india"],"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].storage.oneOf.0.region","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].storage.oneOf.0","typeLabel":"GatewayDataRoutingConfigDestinationControlPlaneManagedStorage · object"},{"type":"object","title":"GatewayDataRoutingConfigDestinationCustomerManagedStorage","description":"Bring your own storage.","default":{"type":"controlplane-managed"},"required":["type","storage_integration_fqn"],"x-fern-type-name":"GatewayDataRoutingConfigDestinationCustomerManagedStorage","properties":{"type":{"description":"Type of storage configuration","type":"string","enum":["customer-managed"],"default":"customer-managed","isRequired":true,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].storage.oneOf.1.type","typeLabel":"enum\u003cstring>"},"storage_integration_fqn":{"description":"Storage Integration FQN to store traces and spans. A storage integration represents a connected blob storage like AWS S3 / Azure Blob Storage / Google Cloud Storage.","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._:-]*[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].storage.oneOf.1.storage_integration_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].storage.oneOf.1","typeLabel":"GatewayDataRoutingConfigDestinationCustomerManagedStorage · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].storage","typeLabel":"GatewayDataRoutingConfigDestinationControlPlaneManagedStorage · object | GatewayDataRoutingConfigDestinationCustomerManagedStorage · object"},"name":{"description":"Name for the destination","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].name","typeLabel":"string"},"enabled":{"description":"Whether this destination is enabled","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].enabled","typeLabel":"boolean"},"when":{"description":"Conditions that must be met to use this destination","type":"array","items":{"oneOf":[{"type":"object","title":"GatewayDataRoutingConfigDestinationMetadataCondition","description":"Metadata condition for data routing destinations.","required":["field","key","operator","value"],"x-fern-type-name":"GatewayDataRoutingConfigDestinationCondition","properties":{"field":{"description":"Field to evaluate the condition on","type":"string","enum":["metadata"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.0.field","typeLabel":"enum\u003cstring>"},"key":{"description":"Metadata key to match","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.0.key","typeLabel":"string"},"operator":{"description":"Operator to use for comparison","type":"string","enum":["IN"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.0.operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Value to compare against","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.0.value.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.0.value","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.0","typeLabel":"GatewayDataRoutingConfigDestinationMetadataCondition · object"},{"type":"object","title":"GatewayDataRoutingConfigDestinationCreatedByCondition","description":"Created by condition for data routing destinations.","required":["field","operator","value"],"x-fern-type-name":"GatewayDataRoutingConfigDestinationCondition","properties":{"field":{"description":"Field to evaluate the condition on","type":"string","enum":["created_by"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.1.field","typeLabel":"enum\u003cstring>"},"operator":{"description":"Operator to use for comparison","type":"string","enum":["IN"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.1.operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Value to compare against","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.1.value.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.1.value","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX].oneOf.1","typeLabel":"GatewayDataRoutingConfigDestinationCreatedByCondition · object"}],"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].when.items.[INDEX]","typeLabel":"GatewayDataRoutingConfigDestinationMetadataCondition · object | GatewayDataRoutingConfigDestinationCreatedByCondition · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].when","typeLabel":"(GatewayDataRoutingConfigDestinationMetadataCondition · object | GatewayDataRoutingConfigDestinationCreatedByCondition · object)[]"},"traces_retention_period_days":{"description":"Number of days to retain traces (this does not affect metrics storage)","type":"integer","minimum":7,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].traces_retention_period_days","typeLabel":"integer"},"metrics_retention_period_days":{"description":"Number of days to retain metrics (this does not affect traces storage)","type":"integer","minimum":7,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].metrics_retention_period_days","typeLabel":"integer"},"description":{"description":"Description of the destination","type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.90.destinations.items.[INDEX]","typeLabel":"GatewayDataRoutingConfigDestination · object"},"uniqueKey":"existingManifest.oneOf.90.destinations","typeLabel":"GatewayDataRoutingConfigDestination · object[]"}},"uniqueKey":"existingManifest.oneOf.90","typeLabel":"GatewayDataRoutingConfig · object"},{"type":"object","title":"GatewayLoggingConfig","description":"The existing manifest of the resource","required":["type","name","log"],"x-fern-type-name":"GatewayConfig","properties":{"type":{"description":"+value=gateway-logging-config\n+sort=1","type":"string","enum":["gateway-logging-config"],"default":"gateway-logging-config","isRequired":true,"uniqueKey":"existingManifest.oneOf.91.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique name for this logging configuration","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"existingManifest.oneOf.91.name","typeLabel":"string"},"log":{"description":"Whether requests matched by this config should be logged.","type":"boolean","isRequired":true,"uniqueKey":"existingManifest.oneOf.91.log","typeLabel":"boolean"},"when":{"description":"Conditions","type":"object","properties":{"subjects":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list. Absent or [\"*\"] means all.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.91.when.subjects.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.91.when.subjects.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list. A value listed here never matches.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.91.when.subjects.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.91.when.subjects.not_in","typeLabel":"string[]"}},"title":"InNotIn","x-fern-type-name":"InNotIn","uniqueKey":"existingManifest.oneOf.91.when.subjects","typeLabel":"InNotIn · object"},"models":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list. Absent or [\"*\"] means all.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.91.when.models.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.91.when.models.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list. A value listed here never matches.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.91.when.models.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.91.when.models.not_in","typeLabel":"string[]"}},"title":"InNotIn","x-fern-type-name":"InNotIn","uniqueKey":"existingManifest.oneOf.91.when.models","typeLabel":"InNotIn · object"},"mcp_servers":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list. Absent or [\"*\"] means all.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.91.when.mcp_servers.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.91.when.mcp_servers.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list. A value listed here never matches.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.91.when.mcp_servers.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.91.when.mcp_servers.not_in","typeLabel":"string[]"}},"title":"InNotIn","x-fern-type-name":"InNotIn","uniqueKey":"existingManifest.oneOf.91.when.mcp_servers","typeLabel":"InNotIn · object"},"metadata":{"description":"Metadata key-value pairs this config applies to (exact match)","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.91.when.metadata.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.91.when.metadata","typeLabel":"object"}},"title":"LoggingWhen","x-fern-type-name":"LoggingWhen","uniqueKey":"existingManifest.oneOf.91.when","typeLabel":"LoggingWhen · object"},"redact_with":{"description":"Redaction","type":"object","properties":{"presets":{"description":"Predefined patterns to redact from the logged copy.","type":"array","items":{"type":"string","enum":["us_ssn","us_ssn_no_dash","email","us_phone","india_aadhaar","india_pan","visa","mastercard","amex","discover","credit_card","aws_access_key","aws_secret_key","github_token","slack_token","generic_api_key","ipv4","ipv6","url","passport_us","passport_uk","passport_germany","passport_france","passport_netherlands","passport_canada","passport_india","passport_australia","passport_china","passport_japan","gender_sexual_orientation","race_ethnicity_national_origin","religion","age_discrimination","disability","marital_family_status","military_status","public_assistance","weapons_firearms","weapons_other","explosives","violence_threats","terrorism","self_harm_suicide","illegal_activities","harassment_hate"],"title":"PresetRegexPatternEnum","x-fern-type-name":"PresetRegexPatternEnum","uniqueKey":"existingManifest.oneOf.91.redact_with.presets.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"existingManifest.oneOf.91.redact_with.presets","typeLabel":"enum\u003cstring>[]"},"custom_patterns":{"description":"Custom patterns to redact from the logged copy.","type":"array","items":{"description":"Custom Regex Pattern","type":"object","required":["pattern"],"properties":{"pattern":{"description":"A custom regex pattern to match against content (e.g., \"\\\\b\\\\d{3}-\\\\d{2}-\\\\d{4}\\\\b\" for SSN)","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.91.redact_with.custom_patterns.items.[INDEX].pattern","typeLabel":"string"},"redaction_text":{"description":"Text to use when redacting matched content (only applicable in mutate mode). Defaults to '[REDACTED]'.","type":"string","default":"[REDACTED]","uniqueKey":"existingManifest.oneOf.91.redact_with.custom_patterns.items.[INDEX].redaction_text","typeLabel":"string"}},"title":"CustomRegexPattern","x-fern-type-name":"CustomRegexPattern","uniqueKey":"existingManifest.oneOf.91.redact_with.custom_patterns.items.[INDEX]","typeLabel":"CustomRegexPattern · object"},"uniqueKey":"existingManifest.oneOf.91.redact_with.custom_patterns","typeLabel":"CustomRegexPattern · object[]"}},"title":"Redaction","x-fern-type-name":"Redaction","uniqueKey":"existingManifest.oneOf.91.redact_with","typeLabel":"Redaction · object"}},"uniqueKey":"existingManifest.oneOf.91","typeLabel":"GatewayLoggingConfig · object"},{"type":"object","title":"TeamManifest","description":"The existing manifest of the resource","required":["type","name"],"x-fern-type-name":"TeamManifest","properties":{"type":{"description":"+value=team","type":"string","enum":["team"],"default":"team","isRequired":true,"uniqueKey":"existingManifest.oneOf.92.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Team","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9_-]{1,48}[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.92.name","typeLabel":"string"},"displayName":{"description":"A human-readable label for the team in the UI. If omitted, the team name is shown.","type":"string","maxLength":128,"uniqueKey":"existingManifest.oneOf.92.displayName","typeLabel":"string"},"description":{"description":"A short description of the team and its purpose.","type":"string","maxLength":1024,"uniqueKey":"existingManifest.oneOf.92.description","typeLabel":"string"},"managers":{"description":"Emails of each of the user who can manage the members of the team. Any tenant admin is by default a team manager. Still applied from YAML/manifests when present; omit to leave managers unchanged. Dedicated manager endpoints are also available.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.92.managers.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.92.managers","typeLabel":"string[]"},"members":{"description":"Enter email of each user to add to the team. Use an empty list for a team with no members yet. Still applied from YAML/manifests when present; omit to leave membership unchanged. Dedicated member endpoints are also available.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.92.members.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.92.members","typeLabel":"string[]"},"ownedBy":{"description":"Names of the owners that own the team","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns the team","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.92.ownedBy.account","typeLabel":"string"}},"title":"TeamOwnedBy","x-fern-type-name":"TeamOwnedBy","uniqueKey":"existingManifest.oneOf.92.ownedBy","typeLabel":"TeamOwnedBy · object"},"tags":{"description":"Key-value pairs to categorize this Team (e.g., by owner or environment).","type":"object","uniqueKey":"existingManifest.oneOf.92.tags","typeLabel":"object"},"identity_provider_mapping":{"description":"Mappings from external identity provider claim value to this team","type":"array","items":{"description":"Map specific claim values from an external IdP token (e.g., Okta, Azure AD) to this agent identity.","type":"object","required":["identity_provider"],"properties":{"identity_provider":{"description":"Must already be configured under Platform → Identity Providers. Choosing a SPIRE provider means this agent's credential is an attested JWT-SVID from its runtime.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.92.identity_provider_mapping.items.[INDEX].identity_provider","typeLabel":"string"},"value":{"description":"The value that must appear in the subject claim of the IdP token for this mapping to match. For example, a service account email or a group name.","type":"string","uniqueKey":"existingManifest.oneOf.92.identity_provider_mapping.items.[INDEX].value","typeLabel":"string"},"claims":{"description":"Add a subject key and the value that must match on the token. The keys shown are required for this provider.","type":"object","additionalProperties":{"type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.92.identity_provider_mapping.items.[INDEX].claims.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.92.identity_provider_mapping.items.[INDEX].claims","typeLabel":"object"}},"title":"IdentityProviderMapping","x-fern-type-name":"IdentityProviderMapping","uniqueKey":"existingManifest.oneOf.92.identity_provider_mapping.items.[INDEX]","typeLabel":"IdentityProviderMapping · object"},"uniqueKey":"existingManifest.oneOf.92.identity_provider_mapping","typeLabel":"IdentityProviderMapping · object[]"}},"uniqueKey":"existingManifest.oneOf.92","typeLabel":"TeamManifest · object"},{"type":"object","title":"PolicyManifest","description":"The existing manifest of the resource","required":["type","name","description","operation","mode","entities","actions","code"],"x-fern-type-name":"PolicyManifest","properties":{"type":{"description":"+value=policy","type":"string","enum":["policy"],"default":"policy","isRequired":true,"uniqueKey":"existingManifest.oneOf.93.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique identifier of the policy across the organisation","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.93.name","typeLabel":"string"},"description":{"description":"Description of the policy that explains what the policy does, its purpose, and how it affects resources. This helps other users understand the policy's behavior and impact.","type":"string","minLength":1,"maxLength":1024,"isRequired":true,"uniqueKey":"existingManifest.oneOf.93.description","typeLabel":"string"},"operation":{"oneOf":[{"type":"object","title":"PolicyMutationOperation","description":"Mutate","default":{"type":"validate"},"required":["type","order"],"x-fern-type-name":"PolicyMutationOperation","properties":{"type":{"description":"Mutates or Validates Resources","type":"string","enum":["mutate"],"default":"mutate","isRequired":true,"uniqueKey":"existingManifest.oneOf.93.operation.oneOf.0.type","typeLabel":"enum\u003cstring>"},"order":{"description":"Determines the sequence in which mutation policies are executed. Policies with lower order value run first, followed by higher value. For example, a policy with order 10 runs before one with order 20. This is crucial when multiple mutation policies need to run in a specific sequence. The order must be between 1 and 100.","type":"integer","minimum":1,"maximum":100,"isRequired":true,"uniqueKey":"existingManifest.oneOf.93.operation.oneOf.0.order","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.93.operation.oneOf.0","typeLabel":"PolicyMutationOperation · object"},{"type":"object","title":"PolicyValidationOperation","description":"Validate","default":{"type":"validate"},"required":["type"],"x-fern-type-name":"PolicyValidationOperation","properties":{"type":{"description":"Mutates or Validates Resources","type":"string","enum":["validate"],"default":"validate","isRequired":true,"uniqueKey":"existingManifest.oneOf.93.operation.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.93.operation.oneOf.1","typeLabel":"PolicyValidationOperation · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.93.operation","typeLabel":"PolicyMutationOperation · object | PolicyValidationOperation · object"},"mode":{"description":"Mode of the policy: `Audit` logs all policy evaluations without blocking deployments. `Enforce` blocks deployments if the policy fails. `Disabled` deactivates the policy.","type":"string","enum":["audit","enforce","disabled"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.93.mode","typeLabel":"enum\u003cstring>"},"entities":{"description":"Types of applications this policy applies to","type":"array","items":{"type":"string","enum":["service","async-service","job","notebook","ssh-server","workflow","helm","volume","spark-job"],"title":"PolicyEntityTypes","x-fern-type-name":"PolicyEntityTypes","uniqueKey":"existingManifest.oneOf.93.entities.items.[INDEX]","typeLabel":"enum\u003cstring>"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.93.entities","typeLabel":"enum\u003cstring>[]"},"actions":{"description":"Actions this policy applies to","type":"array","items":{"type":"string","enum":["apply"],"title":"PolicyActions","x-fern-type-name":"PolicyActions","uniqueKey":"existingManifest.oneOf.93.actions.items.[INDEX]","typeLabel":"enum\u003cstring>"},"default":["apply"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.93.actions","typeLabel":"enum\u003cstring>[]"},"code":{"description":"TypeScript code for Policy logic. To write and test your policy code, please refer to this [repository](https://github.com/truefoundry/tfy-typescript-policy)","type":"string","minLength":1,"maxLength":10240,"isRequired":true,"uniqueKey":"existingManifest.oneOf.93.code","typeLabel":"string"},"filters":{"description":"Filters","type":"object","properties":{"cluster_names":{"description":"Cluster names where Policy applies","type":"array","items":{"type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","uniqueKey":"existingManifest.oneOf.93.filters.cluster_names.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.93.filters.cluster_names","typeLabel":"string[]"},"workspace_names":{"description":"Workspace names where Policy applies","type":"array","items":{"type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","uniqueKey":"existingManifest.oneOf.93.filters.workspace_names.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.93.filters.workspace_names","typeLabel":"string[]"},"env_names":{"description":"Environment names where Policy applies","type":"array","items":{"type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","uniqueKey":"existingManifest.oneOf.93.filters.env_names.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.93.filters.env_names","typeLabel":"string[]"}},"title":"PolicyFilters","x-fern-type-name":"PolicyFilters","uniqueKey":"existingManifest.oneOf.93.filters","typeLabel":"PolicyFilters · object"}},"uniqueKey":"existingManifest.oneOf.93","typeLabel":"PolicyManifest · object"},{"type":"object","title":"RoleManifest","description":"The existing manifest of the resource","required":["type","name","displayName","description","resourceType","permissions"],"x-fern-type-name":"RoleManifest","properties":{"type":{"description":"+value=role","type":"string","enum":["role"],"default":"role","isRequired":true,"uniqueKey":"existingManifest.oneOf.94.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique identifier of the role across the organization","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,33}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.94.name","typeLabel":"string"},"displayName":{"description":"Human-readable name for the role","type":"string","minLength":1,"maxLength":255,"isRequired":true,"uniqueKey":"existingManifest.oneOf.94.displayName","typeLabel":"string"},"description":{"description":"Description of the role that explains its purpose and permissions","type":"string","minLength":1,"maxLength":1024,"isRequired":true,"uniqueKey":"existingManifest.oneOf.94.description","typeLabel":"string"},"resourceType":{"description":"Type of resource this role applies to","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.94.resourceType","typeLabel":"string"},"permissions":{"description":"Define the resource type and the corresponding actions this role can perform on the resource","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.94.permissions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.94.permissions","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.94","typeLabel":"RoleManifest · object"},{"type":"object","title":"AlertConfig","description":"The existing manifest of the resource","required":["type","name","resource","notification_targets","rules"],"x-fern-type-name":"AlertConfig","properties":{"type":{"description":"Type","type":"string","enum":["alert-config"],"default":"alert-config","isRequired":true,"uniqueKey":"existingManifest.oneOf.95.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name - 3 to 35 lower case characters long alphanumeric word, may contain - in between, cannot start with a number","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,33}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.95.name","typeLabel":"string"},"resource":{"type":"object","required":["type","fqn"],"properties":{"type":{"description":"The type of resource this alert config belongs to. Can be either an application or a cluster.","type":"string","enum":["application","cluster"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.95.resource.type","typeLabel":"enum\u003cstring>"},"fqn":{"description":"FQN of the resource this alert config belongs to.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.95.resource.fqn","typeLabel":"string"}},"title":"AlertConfigResource","x-fern-type-name":"AlertConfigResource","isRequired":true,"uniqueKey":"existingManifest.oneOf.95.resource","typeLabel":"AlertConfigResource · object"},"notification_targets":{"description":"Configure one or more notification targets where alerts will be sent. Each target specifies a notification channel (email or slack).","type":"array","items":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"existingManifest.oneOf.95.notification_targets.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.95.notification_targets.items.[INDEX].oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.95.notification_targets.items.[INDEX].oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.95.notification_targets.items.[INDEX].oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.95.notification_targets.items.[INDEX].oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.95.notification_targets.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.95.notification_targets.items.[INDEX].oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.95.notification_targets.items.[INDEX].oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBot","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"existingManifest.oneOf.95.notification_targets.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.95.notification_targets.items.[INDEX].oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"existingManifest.oneOf.95.notification_targets.items.[INDEX].oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.95.notification_targets.items.[INDEX].oneOf.2.channels","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.95.notification_targets.items.[INDEX].oneOf.2","typeLabel":"SlackBot · object"},{"type":"object","title":"PagerDuty","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"existingManifest.oneOf.95.notification_targets.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.95.notification_targets.items.[INDEX].oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.95.notification_targets.items.[INDEX].oneOf.3","typeLabel":"PagerDuty · object"}],"uniqueKey":"existingManifest.oneOf.95.notification_targets.items.[INDEX]","typeLabel":"Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.95.notification_targets","typeLabel":"(Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object)[]"},"rules":{"description":"Define one or more alert rules that specify the conditions to monitor, when to trigger alerts, and how they should be handled.","type":"array","items":{"description":"Prometheus Alert Rule","type":"object","required":["type","name","expression","for","severity","notification_enabled"],"properties":{"type":{"description":"Type","type":"string","enum":["prometheus-alert-rule"],"default":"prometheus-alert-rule","isRequired":true,"uniqueKey":"existingManifest.oneOf.95.rules.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"Enter a unique, descriptive name for your Prometheus alert rule. Choose a name that clearly indicates the condition being monitored. Please note that reserved alert names for TrueFoundry managed alerts are not allowed. For checking the list of reserved alert names, please refer to the documentation.","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,33}[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.95.rules.items.[INDEX].name","typeLabel":"string"},"expression":{"description":"Enter a valid PromQL expression that defines the condition for triggering this alert. The alert will fire when this expression evaluates to true for the duration specified in the duration to trigger alert field.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.95.rules.items.[INDEX].expression","typeLabel":"string"},"for":{"description":"The prometheus expression must remain true for this duration (in seconds) before the alert is triggered. If the condition becomes false before this time elapses, the alert will not fire.","type":"number","minimum":60,"isRequired":true,"uniqueKey":"existingManifest.oneOf.95.rules.items.[INDEX].for","typeLabel":"number"},"severity":{"type":"string","enum":["warning","critical"],"title":"AlertSeverity","x-fern-type-name":"AlertSeverity","isRequired":true,"uniqueKey":"existingManifest.oneOf.95.rules.items.[INDEX].severity","typeLabel":"enum\u003cstring>"},"notification_enabled":{"description":"When enabled, notifications will be sent to all configured target channels when the alert conditions are met.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.95.rules.items.[INDEX].notification_enabled","typeLabel":"boolean"},"description":{"description":"Description of the alert rule which will be displayed in the alert rule list. This can be used to provide more context about the alert rule.","type":"string","uniqueKey":"existingManifest.oneOf.95.rules.items.[INDEX].description","typeLabel":"string"}},"title":"PrometheusAlertRule","x-fern-type-name":"PrometheusAlertRule","uniqueKey":"existingManifest.oneOf.95.rules.items.[INDEX]","typeLabel":"PrometheusAlertRule · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.95.rules","typeLabel":"PrometheusAlertRule · object[]"}},"uniqueKey":"existingManifest.oneOf.95","typeLabel":"AlertConfig · object"},{"type":"object","title":"VirtualAccountManifest","description":"The existing manifest of the resource","required":["name","type"],"x-fern-type-name":"VirtualAccountManifest","properties":{"name":{"description":"Virtual Account Name","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.96.name","typeLabel":"string"},"type":{"description":"+value=virtual-account","type":"string","enum":["virtual-account"],"default":"virtual-account","isRequired":true,"uniqueKey":"existingManifest.oneOf.96.type","typeLabel":"enum\u003cstring>"},"permissions":{"description":"Permissions","type":"array","items":{"type":"object","required":["resource_fqn","resource_type","role_id"],"properties":{"resource_fqn":{"description":"The fully qualified name of the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.96.permissions.items.[INDEX].resource_fqn","typeLabel":"string"},"resource_type":{"description":"The type of the resource (cluster, workspace, etc.)","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.96.permissions.items.[INDEX].resource_type","typeLabel":"string"},"role_id":{"description":"The role id of the role to be assigned to the service account for that resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.96.permissions.items.[INDEX].role_id","typeLabel":"string"}},"title":"Permissions","x-fern-type-name":"Permissions","uniqueKey":"existingManifest.oneOf.96.permissions.items.[INDEX]","typeLabel":"Permissions · object"},"uniqueKey":"existingManifest.oneOf.96.permissions","typeLabel":"Permissions · object[]"},"expiration_date":{"description":"Expiration Date of the Virtual Account (should be in the format yyyy-mm-dd)","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","uniqueKey":"existingManifest.oneOf.96.expiration_date","typeLabel":"string"},"auto_rotate":{"description":"Enable Auto Rotation to automatically rotate the token","type":"object","required":["auto_rotate_interval","grace_period"],"properties":{"auto_rotate_interval":{"description":"Rotation Interval in days after which the token will be rotated. Minimum value is 30.","type":"integer","minimum":30,"default":360,"isRequired":true,"uniqueKey":"existingManifest.oneOf.96.auto_rotate.auto_rotate_interval","typeLabel":"integer"},"grace_period":{"description":"Grace Period in days for which the token will be valid after rotation interval. Minimum value is 1.","type":"integer","minimum":1,"default":30,"isRequired":true,"uniqueKey":"existingManifest.oneOf.96.auto_rotate.grace_period","typeLabel":"integer"}},"title":"AutoRotate","x-fern-type-name":"AutoRotate","uniqueKey":"existingManifest.oneOf.96.auto_rotate","typeLabel":"AutoRotate · object"},"notification_target":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBot","description":"+discriminator=type","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.2.channels","typeLabel":"string[]"}},"uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.2","typeLabel":"SlackBot · object"},{"type":"object","title":"PagerDuty","description":"+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.3","typeLabel":"PagerDuty · object"},{"type":"object","title":"MSTeamsWebhook","description":"MS Teams Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=ms-teams-webhook","type":"string","enum":["ms-teams-webhook"],"default":"ms-teams-webhook","isRequired":true,"uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.4.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.4.notification_channel","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.96.notification_target.oneOf.4","typeLabel":"MSTeamsWebhook · object"}],"uniqueKey":"existingManifest.oneOf.96.notification_target","typeLabel":"Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object | MSTeamsWebhook · object"},"secret_store_config":{"oneOf":[{"type":"object","title":"SecretStoreIntegrationConfig","description":"Store the virtual account token directly in an external secret store","required":["type","integration_fqn","secret_path"],"x-fern-type-name":"SecretStoreConfig","properties":{"type":{"description":"+value=secret-store","type":"string","enum":["secret-store"],"default":"secret-store","isRequired":true,"uniqueKey":"existingManifest.oneOf.96.secret_store_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"integration_fqn":{"description":"The secret store to store the virtual account token in","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.96.secret_store_config.oneOf.0.integration_fqn","typeLabel":"string"},"secret_path":{"description":"The path where the virtual account token will be stored in the secret store (example: secret/path/to/virtual-account-token)","type":"string","pattern":"^/?[A-Za-z0-9/-]*[A-Za-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.96.secret_store_config.oneOf.0.secret_path","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.96.secret_store_config.oneOf.0","typeLabel":"SecretStoreIntegrationConfig · object"},{"type":"object","title":"TfySecretsConfig","description":"Store the virtual account token as a secret in a TrueFoundry secret group","required":["type","secret_group","key"],"x-fern-type-name":"SecretStoreConfig","properties":{"type":{"description":"+value=tfy-secrets","type":"string","enum":["tfy-secrets"],"default":"tfy-secrets","isRequired":true,"uniqueKey":"existingManifest.oneOf.96.secret_store_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"secret_group":{"description":"Name of the secret group to store the virtual account token in","type":"string","pattern":"^(?!.*--)[a-z][a-z0-9-]{3,48}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.96.secret_store_config.oneOf.1.secret_group","typeLabel":"string"},"key":{"description":"The key where the virtual account token will be stored in the secret group","type":"string","pattern":"^(?!.*--)[a-zA-Z][a-zA-Z0-9\\/_-]{3,498}[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.96.secret_store_config.oneOf.1.key","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.96.secret_store_config.oneOf.1","typeLabel":"TfySecretsConfig · object"}],"uniqueKey":"existingManifest.oneOf.96.secret_store_config","typeLabel":"SecretStoreIntegrationConfig · object | TfySecretsConfig · object"},"ownedBy":{"description":"Names of the owners that own the virtual account","type":"object","required":["team"],"properties":{"team":{"description":"The name of the team that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.96.ownedBy.team","typeLabel":"string"},"account":{"description":"The name of the account that owns this resource","type":"string","uniqueKey":"existingManifest.oneOf.96.ownedBy.account","typeLabel":"string"}},"title":"VirtualAccountOwnedBy","x-fern-type-name":"VirtualAccountOwnedBy","uniqueKey":"existingManifest.oneOf.96.ownedBy","typeLabel":"VirtualAccountOwnedBy · object"},"tags":{"description":"Key-value pairs to categorize this Virtual Account (e.g., by owner or environment).","type":"object","uniqueKey":"existingManifest.oneOf.96.tags","typeLabel":"object"},"identity_provider_mapping":{"description":"Mappings from external identity provider claim value to this virtual account","type":"array","items":{"description":"Map specific claim values from an external IdP token (e.g., Okta, Azure AD) to this agent identity.","type":"object","required":["identity_provider"],"properties":{"identity_provider":{"description":"Must already be configured under Platform → Identity Providers. Choosing a SPIRE provider means this agent's credential is an attested JWT-SVID from its runtime.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.96.identity_provider_mapping.items.[INDEX].identity_provider","typeLabel":"string"},"value":{"description":"The value that must appear in the subject claim of the IdP token for this mapping to match. For example, a service account email or a group name.","type":"string","uniqueKey":"existingManifest.oneOf.96.identity_provider_mapping.items.[INDEX].value","typeLabel":"string"},"claims":{"description":"Add a subject key and the value that must match on the token. The keys shown are required for this provider.","type":"object","additionalProperties":{"type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.96.identity_provider_mapping.items.[INDEX].claims.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.96.identity_provider_mapping.items.[INDEX].claims","typeLabel":"object"}},"title":"IdentityProviderMapping","x-fern-type-name":"IdentityProviderMapping","uniqueKey":"existingManifest.oneOf.96.identity_provider_mapping.items.[INDEX]","typeLabel":"IdentityProviderMapping · object"},"uniqueKey":"existingManifest.oneOf.96.identity_provider_mapping","typeLabel":"IdentityProviderMapping · object[]"},"token_type":{"description":"Format of the issued token. Leave empty to use the platform default.","type":"string","enum":["jwt","opaque"],"uniqueKey":"existingManifest.oneOf.96.token_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.96","typeLabel":"VirtualAccountManifest · object"},{"type":"object","title":"CommonToolsSettings","description":"The existing manifest of the resource","required":["type","web_search","code_executor","sandbox_exec","sequential_thinking","web_scrape"],"x-fern-type-name":"CommonToolsSettings","properties":{"type":{"description":"+value=settings/common-tools","type":"string","enum":["settings/common-tools"],"default":"settings/common-tools","isRequired":true,"uniqueKey":"existingManifest.oneOf.97.type","typeLabel":"enum\u003cstring>"},"web_search":{"description":"Enable web search tool\nAllows model to search the web for information.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.97.web_search","typeLabel":"boolean"},"code_executor":{"description":"Enable code executor tool\nAllows model to execute code and return the results.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.97.code_executor","typeLabel":"boolean"},"sandbox_exec":{"description":"Enable sandbox executor tool\nAllows model to execute shell command in an isolated stateful sandbox environment.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.97.sandbox_exec","typeLabel":"boolean"},"sequential_thinking":{"description":"Enable sequential thinking tool\nAllows model to reason step-by-step to solve complex problems.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.97.sequential_thinking","typeLabel":"boolean"},"web_scrape":{"description":"Enable web scraping tool.\nAllows model to scrape content from web pages with intelligent format selection for structured or unstructured data.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.97.web_scrape","typeLabel":"boolean"}},"uniqueKey":"existingManifest.oneOf.97","typeLabel":"CommonToolsSettings · object"},{"type":"object","title":"MCPGatewaySettings","description":"The existing manifest of the resource","required":["type","enable_tools_by_default"],"x-fern-type-name":"MCPGatewaySettings","properties":{"type":{"description":"+value=settings/mcp-gateway","type":"string","enum":["settings/mcp-gateway"],"default":"settings/mcp-gateway","isRequired":true,"uniqueKey":"existingManifest.oneOf.98.type","typeLabel":"enum\u003cstring>"},"enable_tools_by_default":{"description":"When enabled, newly created MCP servers expose all tools unless you disable specific ones. When disabled, new servers expose only tools you explicitly enable. Existing servers are not changed.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.98.enable_tools_by_default","typeLabel":"boolean"}},"uniqueKey":"existingManifest.oneOf.98","typeLabel":"MCPGatewaySettings · object"},{"type":"object","title":"AIFeaturesSettings","description":"The existing manifest of the resource","required":["type","enabled"],"x-fern-type-name":"AIFeaturesSettings","properties":{"type":{"description":"+value=settings/ai-features","type":"string","enum":["settings/ai-features"],"default":"settings/ai-features","isRequired":true,"uniqueKey":"existingManifest.oneOf.99.type","typeLabel":"enum\u003cstring>"},"enabled":{"description":"Enabled","type":"boolean","isRequired":true,"uniqueKey":"existingManifest.oneOf.99.enabled","typeLabel":"boolean"},"ai_provider":{"oneOf":[{"type":"object","title":"AIFeaturesTrueFoundryProvider","description":"TrueFoundry provides and manages the models. There is nothing for you to set up.","required":["type"],"x-fern-type-name":"AIFeaturesTrueFoundryProvider","properties":{"type":{"description":"+value=truefoundry","type":"string","enum":["truefoundry"],"default":"truefoundry","isRequired":true,"uniqueKey":"existingManifest.oneOf.99.ai_provider.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.99.ai_provider.oneOf.0","typeLabel":"AIFeaturesTrueFoundryProvider · object"},{"type":"object","title":"AIFeaturesBringYourOwnModelsProvider","description":"Use your own Gateway models. You pick one for each level of task difficulty, and the\nusage is billed to your own provider accounts.","required":["type","models"],"x-fern-type-name":"AIFeaturesBringYourOwnModelsProvider","properties":{"type":{"description":"+value=self-managed","type":"string","enum":["self-managed"],"default":"self-managed","isRequired":true,"uniqueKey":"existingManifest.oneOf.99.ai_provider.oneOf.1.type","typeLabel":"enum\u003cstring>"},"models":{"description":"Pick one of your Gateway models for each level of task difficulty.","type":"object","required":["simple","medium","complex"],"properties":{"simple":{"description":"Quick, well-defined work such as classification, extraction and short summaries.\nUse Claude Haiku 5.5 or GPT-6 Luna.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.99.ai_provider.oneOf.1.models.simple","typeLabel":"string"},"medium":{"description":"Everyday work such as answering questions and summarizing longer content.\nUse Claude Sonnet 5.5, GPT-6.1 Sol or Grok 4.7.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.99.ai_provider.oneOf.1.models.medium","typeLabel":"string"},"complex":{"description":"Demanding work such as multi-step reasoning and writing code.\nUse Claude Opus 5.5 or GPT-6 Astra.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.99.ai_provider.oneOf.1.models.complex","typeLabel":"string"}},"title":"AIFeaturesModels","x-fern-type-name":"AIFeaturesModels","isRequired":true,"uniqueKey":"existingManifest.oneOf.99.ai_provider.oneOf.1.models","typeLabel":"AIFeaturesModels · object"}},"uniqueKey":"existingManifest.oneOf.99.ai_provider.oneOf.1","typeLabel":"AIFeaturesBringYourOwnModelsProvider · object"}],"uniqueKey":"existingManifest.oneOf.99.ai_provider","typeLabel":"AIFeaturesTrueFoundryProvider · object | AIFeaturesBringYourOwnModelsProvider · object"}},"uniqueKey":"existingManifest.oneOf.99","typeLabel":"AIFeaturesSettings · object"},{"type":"object","title":"SecuritySettings","description":"The existing manifest of the resource","required":["type","enabled","max_pat_expiry_minutes"],"x-fern-type-name":"SecuritySettings","properties":{"type":{"description":"+value=settings/security","type":"string","enum":["settings/security"],"default":"settings/security","isRequired":true,"uniqueKey":"existingManifest.oneOf.100.type","typeLabel":"enum\u003cstring>"},"enabled":{"description":"Enable/Disable security settings.\nOther fields only apply when this is true","type":"boolean","isRequired":true,"uniqueKey":"existingManifest.oneOf.100.enabled","typeLabel":"boolean"},"max_pat_expiry_minutes":{"description":"Personal Access Tokens cannot be created with an expiry longer than this. Maximum allowed is 7000 days.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.100.max_pat_expiry_minutes","typeLabel":"integer"},"max_pats_per_user":{"description":"Leave blank to allow unlimited PATs per user.","type":"integer","minimum":1,"uniqueKey":"existingManifest.oneOf.100.max_pats_per_user","typeLabel":"integer"},"pat_team_assignment_mode":{"description":"Controls whether assigning a team owner while creating a Personal Access Token is required, optional, or disabled.","type":"string","enum":["optional","required","disabled"],"default":"optional","uniqueKey":"existingManifest.oneOf.100.pat_team_assignment_mode","typeLabel":"enum\u003cstring>"},"enable_pat_retrieval_after_creation":{"description":"Allow users to retrieve the value of their own Personal Access Tokens via API after creation.","type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.100.enable_pat_retrieval_after_creation","typeLabel":"boolean"},"enable_viewing_secrets":{"description":"Allow users with permission to view plaintext secret values in the UI and API. When disabled, secret values are never returned.","type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.100.enable_viewing_secrets","typeLabel":"boolean"},"to_emails":{"description":"Email addresses to receive security-related notifications.","type":"array","items":{"type":"string","pattern":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$","uniqueKey":"existingManifest.oneOf.100.to_emails.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.100.to_emails","typeLabel":"string[]"},"access_restrictions":{"description":"Restrict UI Logins by IP","type":"object","required":["allowed_ip_cidrs"],"properties":{"allowed_ip_cidrs":{"description":"Limits TrueFoundry UI logins to the listed IPs/CIDRs. Does not restrict API or AI Gateway access.\nNote: Include the IP address you are currently accessing from. If it is missing from the allowlist, you will not be able to save these settings.","type":"array","items":{"type":"string","pattern":"^[0-9A-Fa-f:.]+(/[0-9]{1,3})?$","uniqueKey":"existingManifest.oneOf.100.access_restrictions.allowed_ip_cidrs.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.100.access_restrictions.allowed_ip_cidrs","typeLabel":"string[]"}},"title":"SecurityAccessRestrictions","x-fern-type-name":"SecurityAccessRestrictions","uniqueKey":"existingManifest.oneOf.100.access_restrictions","typeLabel":"SecurityAccessRestrictions · object"}},"uniqueKey":"existingManifest.oneOf.100","typeLabel":"SecuritySettings · object"},{"type":"object","title":"SecretGroupManifest","description":"The existing manifest of the resource","required":["type","name","integration_fqn"],"x-fern-type-name":"SecretGroupManifest","properties":{"type":{"description":"+value=secret-group","type":"string","enum":["secret-group"],"default":"secret-group","isRequired":true,"uniqueKey":"existingManifest.oneOf.101.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the secret group","type":"string","pattern":"^(?!.*--)[a-z][a-z0-9-]{3,48}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.101.name","typeLabel":"string"},"integration_fqn":{"description":"Secret Store to be associated with the secret group","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.101.integration_fqn","typeLabel":"string"},"collaborators":{"description":"Users and Teams that have access to Secret Group","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.101.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.101.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.101.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.101.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.101.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.101.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.101","typeLabel":"SecretGroupManifest · object"},{"type":"object","title":"AgentManifestV2","description":"The existing manifest of the resource","required":["type","name","description","proxy_via_gateway"],"x-fern-type-name":"AgentManifestV2","properties":{"type":{"description":"Type of the manifest","type":"string","enum":["agent/remote"],"default":"agent/remote","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique across your organization. Used as the reference key in policies and YAML specs.","type":"string","pattern":"^[a-z][a-z0-9\\-]{0,62}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.name","typeLabel":"string"},"description":{"description":"A short note on what this agent does — shown in the registry list and audit trail.","type":"string","maxLength":2000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.102.description","typeLabel":"string"},"proxy_via_gateway":{"description":"When enabled, the Agent Gateway proxies calls to this endpoint and enforces policy on the way in. When disabled, the agent is embedded (governance-only) — the gateway does not proxy its inbound calls.","type":"object","required":["enabled"],"properties":{"enabled":{"description":"Enable to route inbound calls through the Agent Gateway (policy enforced on the way in). Disable for governance-only registration.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.enabled","typeLabel":"boolean"},"url":{"description":"The agent's endpoint. When proxying is enabled, the Agent Gateway forwards requests here. Not applicable to Embedded (no callable URL) agents. The uischema shows + requires it only when proxying is enabled.","type":"string","pattern":"^https?:\\/\\/[^\\s]+$","uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.url","typeLabel":"string"},"framework":{"oneOf":[{"type":"object","title":"A2AFramework","description":"A2A","required":["type","agent_card_path"],"x-fern-type-name":"AgentFramework","properties":{"type":{"description":"Type","type":"string","enum":["a2a"],"default":"a2a","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.framework.oneOf.0.type","typeLabel":"enum\u003cstring>"},"agent_card_path":{"description":"Path to the agent card JSON, relative to the base URL","type":"string","default":"/.well-known/agent-card.json","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.framework.oneOf.0.agent_card_path","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.framework.oneOf.0","typeLabel":"A2AFramework · object"},{"type":"object","title":"CustomFramework","description":"Custom","required":["type"],"x-fern-type-name":"AgentFramework","properties":{"type":{"description":"Type","type":"string","enum":["custom"],"default":"custom","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.framework.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.framework.oneOf.1","typeLabel":"CustomFramework · object"}],"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.framework","typeLabel":"A2AFramework · object | CustomFramework · object"},"auth_data":{"oneOf":[{"type":"object","title":"CustomServerHeaderAuth","description":"Static API key or token authentication via request headers.","required":["type","headers"],"x-fern-type-name":"RemoteAgentProxyAuth","properties":{"type":{"description":"+value=header","type":"string","enum":["header"],"default":"header","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.0.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"Map each header name to its value.","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.0.headers.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.0.headers","typeLabel":"object"}},"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.0","typeLabel":"CustomServerHeaderAuth · object"},{"type":"object","title":"CustomServerPassthrough","description":"Authenticate using your existing TrueFoundry account (PAT or Virtual Accounts). Your credentials are automatically passed to the server.","required":["type"],"x-fern-type-name":"RemoteAgentProxyAuth","properties":{"type":{"description":"+value=passthrough","type":"string","enum":["passthrough"],"default":"passthrough","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.1","typeLabel":"CustomServerPassthrough · object"},{"type":"object","title":"RemoteAgentOAuth2","description":"The Gateway acquires an access token from your identity provider with the machine-to-machine credentials below and presents it when calling the agent. The token is acquired on first use and refreshed automatically.","required":["type","provider","grant_type","token_url","client_id"],"x-fern-type-name":"RemoteAgentProxyAuth","properties":{"type":{"description":"+value=oauth2","type":"string","enum":["oauth2"],"default":"oauth2","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.type","typeLabel":"enum\u003cstring>"},"provider":{"description":"Select the OAuth provider. Provider-specific behaviour is unlocked based on this value.","type":"string","enum":["custom","microsoft-entra","okta"],"default":"custom","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.provider","typeLabel":"enum\u003cstring>"},"grant_type":{"description":"How the Gateway acquires the token: client_credentials (machine-to-machine), jwt_bearer (Microsoft Entra on-behalf-of) or token_exchange (Okta on-behalf-of).","type":"string","enum":["client_credentials","jwt_bearer","token_exchange"],"default":"client_credentials","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.grant_type","typeLabel":"enum\u003cstring>"},"token_url":{"description":"The identity provider endpoint that issues the access token.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.token_url","typeLabel":"string"},"client_id":{"description":"Client ID of the machine-to-machine application, or the TrueFoundry secret FQN containing it.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.client_id","typeLabel":"string"},"client_authentication":{"description":"How the OAuth client authenticates to the token endpoint. Certificate auth is available for Microsoft Entra client_credentials and jwt_bearer (on-behalf-of).","type":"string","enum":["client_secret","certificate"],"default":"client_secret","uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.client_authentication","typeLabel":"enum\u003cstring>"},"client_secret":{"description":"Client secret of the machine-to-machine application, or the TrueFoundry secret FQN containing it.","type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.client_secret","typeLabel":"string"},"certificate_thumbprint":{"description":"Hex SHA-1 thumbprint from the Azure portal, or the TrueFoundry secret FQN containing it.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.certificate_thumbprint","typeLabel":"string"},"private_key":{"description":"PEM private key for Microsoft Entra certificate-based client authentication, or the TrueFoundry secret FQN containing it.","type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.private_key","typeLabel":"string"},"audience":{"description":"Okta target audience (RFC 8693 'audience'). Required when the token_exchange grant type is used with the okta provider.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.audience","typeLabel":"string"},"scopes":{"description":"Scopes requested on every token request.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.scopes.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.scopes","typeLabel":"string[]"},"additional_token_params":{"description":"Extra key/value pairs sent on every token endpoint request (e.g. Auth0 'organization').","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.additional_token_params.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2.additional_token_params","typeLabel":"object"}},"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.2","typeLabel":"RemoteAgentOAuth2 · object"},{"type":"object","title":"CustomServerAwsSigV4","description":"Sign requests to AWS Bedrock AgentCore with AWS credentials (SigV4).","required":["type","region","auth"],"x-fern-type-name":"RemoteAgentProxyAuth","properties":{"type":{"description":"+value=aws-sigv4","type":"string","enum":["aws-sigv4"],"default":"aws-sigv4","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.type","typeLabel":"enum\u003cstring>"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.region","typeLabel":"enum\u003cstring>"},"auth":{"oneOf":[{"type":"object","title":"CustomServerAwsAccessKeyAuth","description":"Authenticate with an AWS access key pair.","required":["type","access_key_id","secret_access_key"],"x-fern-type-name":"CustomServerAwsAccessKeyAuth","properties":{"type":{"description":"+value=aws-access-key","type":"string","enum":["aws-access-key"],"default":"aws-access-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"access_key_id":{"description":"AWS access key ID. Prefer a tfy-secret reference.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.auth.oneOf.0.access_key_id","typeLabel":"string"},"secret_access_key":{"description":"AWS secret access key. Prefer a tfy-secret reference.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.auth.oneOf.0.secret_access_key","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.auth.oneOf.0","typeLabel":"CustomServerAwsAccessKeyAuth · object"},{"type":"object","title":"CustomServerAwsAssumeRoleAuth","description":"Authenticate by assuming an IAM role (SigV4).","required":["type","assumed_role_arn"],"x-fern-type-name":"CustomServerAwsAssumeRoleAuth","properties":{"type":{"description":"+value=aws-assumed-role","type":"string","enum":["aws-assumed-role"],"default":"aws-assumed-role","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"assumed_role_arn":{"description":"ARN of the role you want to assume. Prefer a tfy-secret reference.","type":"string","pattern":"^(arn:(aws|aws-us-gov|aws-cn):iam::[0-9]{12}:role(/[\\w+=,.@-]+)+|tfy-secret:\\/\\/.+:.+:.+)$","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.auth.oneOf.1.assumed_role_arn","typeLabel":"string"},"external_id":{"description":"Optional external ID to use when assuming the role. This provides an added layer of security by ensuring only parties with the correct external ID can assume the role.","type":"string","uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.auth.oneOf.1.external_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.auth.oneOf.1","typeLabel":"CustomServerAwsAssumeRoleAuth · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3.auth","typeLabel":"CustomServerAwsAccessKeyAuth · object | CustomServerAwsAssumeRoleAuth · object"}},"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data.oneOf.3","typeLabel":"CustomServerAwsSigV4 · object"}],"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway.auth_data","typeLabel":"CustomServerHeaderAuth · object | CustomServerPassthrough · object | RemoteAgentOAuth2 · object | CustomServerAwsSigV4 · object"}},"title":"RemoteAgentProxyViaGatewayConfig","x-fern-type-name":"RemoteAgentProxyViaGatewayConfig","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.proxy_via_gateway","typeLabel":"RemoteAgentProxyViaGatewayConfig · object"},"display_name":{"description":"A human-readable label for the Agent in the UI. If omitted, the agent name is shown.","type":"string","minLength":1,"maxLength":128,"uniqueKey":"existingManifest.oneOf.102.display_name","typeLabel":"string"},"source":{"description":"Where the agent originated from.","type":"object","required":["type"],"properties":{"type":{"description":"Where the agent originated from.","type":"string","enum":["trueforge","aws-agentcore-harness","aws-agentcore-runtime","snowflake-cortex-agent","microsoft-foundry","microsoft-copilot-studio"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.102.source.type","typeLabel":"enum\u003cstring>"},"provider_integration_fqn":{"description":"FQN of the provider integration used by this agent source.","type":"string","uniqueKey":"existingManifest.oneOf.102.source.provider_integration_fqn","typeLabel":"string"},"external_name":{"description":"Name of the agent in the external source system.","type":"string","uniqueKey":"existingManifest.oneOf.102.source.external_name","typeLabel":"string"},"external_id":{"description":"ID of the agent in the external source system.","type":"string","uniqueKey":"existingManifest.oneOf.102.source.external_id","typeLabel":"string"},"entra_agent_identity_id":{"description":"Entra agent identity object ID (AgentIdentityId).","type":"string","uniqueKey":"existingManifest.oneOf.102.source.entra_agent_identity_id","typeLabel":"string"},"entra_blueprint_id":{"description":"Entra Agent Identity Blueprint ID (AgentIdentityBlueprintId).","type":"string","uniqueKey":"existingManifest.oneOf.102.source.entra_blueprint_id","typeLabel":"string"}},"title":"RemoteAgentSource","x-fern-type-name":"RemoteAgentSource","uniqueKey":"existingManifest.oneOf.102.source","typeLabel":"RemoteAgentSource · object"},"identity":{"oneOf":[{"type":"object","title":"TrueFoundryBackedAgentIdentity","description":"We issue and sign the token. Simplest option for agents you build and run yourself.","required":["type"],"x-fern-type-name":"RemoteAgentV2AgentIdentity","properties":{"type":{"description":"+value=truefoundry-backed","type":"string","enum":["truefoundry-backed"],"default":"truefoundry-backed","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.identity.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.102.identity.oneOf.0","typeLabel":"TrueFoundryBackedAgentIdentity · object"},{"type":"object","title":"IdentityProviderBackedAgentIdentity","description":"Authenticates to Okta, Entra, or your own IdP. Unlocks ID-JAG / OBO.","required":["type","identity_provider_mapping"],"x-fern-type-name":"RemoteAgentV2AgentIdentity","properties":{"type":{"description":"Type of the identity","type":"string","enum":["identity-provider-backed"],"default":"identity-provider-backed","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.identity.oneOf.1.type","typeLabel":"enum\u003cstring>"},"identity_provider_mapping":{"description":"One or more mappings from external IdP claim values to this agent identity. The agent is authenticated when any mapping matches.","type":"array","items":{"description":"Map specific claim values from an external IdP token (e.g., Okta, Azure AD) to this agent identity.","type":"object","required":["identity_provider"],"properties":{"identity_provider":{"description":"Must already be configured under Platform → Identity Providers. Choosing a SPIRE provider means this agent's credential is an attested JWT-SVID from its runtime.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.identity.oneOf.1.identity_provider_mapping.items.[INDEX].identity_provider","typeLabel":"string"},"value":{"description":"The value that must appear in the subject claim of the IdP token for this mapping to match. For example, a service account email or a group name.","type":"string","uniqueKey":"existingManifest.oneOf.102.identity.oneOf.1.identity_provider_mapping.items.[INDEX].value","typeLabel":"string"},"claims":{"description":"Add a subject key and the value that must match on the token. The keys shown are required for this provider.","type":"object","additionalProperties":{"type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.102.identity.oneOf.1.identity_provider_mapping.items.[INDEX].claims.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.102.identity.oneOf.1.identity_provider_mapping.items.[INDEX].claims","typeLabel":"object"}},"title":"IdentityProviderMapping","x-fern-type-name":"IdentityProviderMapping","uniqueKey":"existingManifest.oneOf.102.identity.oneOf.1.identity_provider_mapping.items.[INDEX]","typeLabel":"IdentityProviderMapping · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.102.identity.oneOf.1.identity_provider_mapping","typeLabel":"IdentityProviderMapping · object[]"}},"uniqueKey":"existingManifest.oneOf.102.identity.oneOf.1","typeLabel":"IdentityProviderBackedAgentIdentity · object"}],"uniqueKey":"existingManifest.oneOf.102.identity","typeLabel":"TrueFoundryBackedAgentIdentity · object | IdentityProviderBackedAgentIdentity · object"},"collaborators":{"description":"List of users who have access to this Agent","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.102.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.102.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["team"],"properties":{"team":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.102.ownedBy.team","typeLabel":"string"}},"title":"RemoteAgentV2OwnedBy","x-fern-type-name":"RemoteAgentV2OwnedBy","uniqueKey":"existingManifest.oneOf.102.ownedBy","typeLabel":"RemoteAgentV2OwnedBy · object"},"tags":{"description":"Free-form key context — environment, framework, cost-center.","type":"object","uniqueKey":"existingManifest.oneOf.102.tags","typeLabel":"object"}},"uniqueKey":"existingManifest.oneOf.102","typeLabel":"AgentManifestV2 · object"},{"type":"object","title":"EnvironmentManifest","description":"The existing manifest of the resource","required":["type","name","color","isProduction","optimizeFor"],"x-fern-type-name":"EnvironmentManifest","properties":{"type":{"description":"+value=environment","type":"string","enum":["environment"],"default":"environment","isRequired":true,"uniqueKey":"existingManifest.oneOf.103.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Environment Name","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.103.name","typeLabel":"string"},"color":{"type":"object","properties":{"colorHex":{"type":"string","uniqueKey":"existingManifest.oneOf.103.color.colorHex","typeLabel":"string"},"backgroundColorHex":{"type":"string","uniqueKey":"existingManifest.oneOf.103.color.backgroundColorHex","typeLabel":"string"},"color":{"type":"string","uniqueKey":"existingManifest.oneOf.103.color.color","typeLabel":"string"},"backgroundColor":{"type":"string","uniqueKey":"existingManifest.oneOf.103.color.backgroundColor","typeLabel":"string"}},"title":"EnvironmentColor","x-fern-type-name":"EnvironmentColor","isRequired":true,"uniqueKey":"existingManifest.oneOf.103.color","typeLabel":"EnvironmentColor · object"},"isProduction":{"description":"Environment Type - Indicates if the environment is for production use","type":"boolean","isRequired":true,"uniqueKey":"existingManifest.oneOf.103.isProduction","typeLabel":"boolean"},"optimizeFor":{"type":"string","enum":["COST","AVAILABILITY"],"title":"EnvironmentOptimizeFor","x-fern-type-name":"EnvironmentOptimizeFor","isRequired":true,"uniqueKey":"existingManifest.oneOf.103.optimizeFor","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.103","typeLabel":"EnvironmentManifest · object"},{"type":"object","title":"TracingProjectManifest","description":"The existing manifest of the resource","required":["type","name","storage"],"x-fern-type-name":"TracingProjectManifest","properties":{"type":{"description":"+value=tracing-project","type":"string","enum":["tracing-project"],"default":"tracing-project","isRequired":true,"uniqueKey":"existingManifest.oneOf.104.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Tracing Project","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,61}[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.104.name","typeLabel":"string"},"storage":{"oneOf":[{"type":"object","title":"TracingProjectControlPlaneManagedStorage","description":"Managed Storage in Control-Plane.","required":["type"],"x-fern-type-name":"TracingProjectStorageConfig","properties":{"type":{"description":"Type of storage configuration","type":"string","enum":["controlplane-managed"],"default":"controlplane-managed","isRequired":true,"uniqueKey":"existingManifest.oneOf.104.storage.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.104.storage.oneOf.0","typeLabel":"TracingProjectControlPlaneManagedStorage · object"},{"type":"object","title":"TracingProjectCustomerManagedStorage","description":"Bring your own storage. Please note that this cannot be changed once set.","required":["type","storage_integration_fqn"],"x-fern-type-name":"TracingProjectStorageConfig","properties":{"type":{"description":"Type of storage configuration","type":"string","enum":["customer-managed"],"default":"customer-managed","isRequired":true,"uniqueKey":"existingManifest.oneOf.104.storage.oneOf.1.type","typeLabel":"enum\u003cstring>"},"storage_integration_fqn":{"description":"Storage Integration FQN to store traces and spans. A storage integration represents a connected blob storage like AWS S3 / Azure Blob Storage / Google Cloud Storage. Please note that this cannot be changed once set.","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._:-]*[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.104.storage.oneOf.1.storage_integration_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.104.storage.oneOf.1","typeLabel":"TracingProjectCustomerManagedStorage · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.104.storage","typeLabel":"TracingProjectControlPlaneManagedStorage · object | TracingProjectCustomerManagedStorage · object"},"description":{"description":"Description for the Tracing Project.","type":"string","pattern":"^.{0,500}$","uniqueKey":"existingManifest.oneOf.104.description","typeLabel":"string"},"collaborators":{"description":"Users and Teams that have access to Tracing Project","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.104.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.104.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.104.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.104.collaborators","typeLabel":"Collaborator · object[]"},"traces_retention_duration_days":{"description":"Number of days to retain traces for (minimum 7 days).\nTraces older than these number of days will be deleted automatically.\nWhen not set, traces are retained indefinitely.\nNote: Metrics will be retained regardless of this setting.","type":"number","minimum":7,"uniqueKey":"existingManifest.oneOf.104.traces_retention_duration_days","typeLabel":"number"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.104.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.104.ownedBy","typeLabel":"OwnedBy · object"}},"uniqueKey":"existingManifest.oneOf.104","typeLabel":"TracingProjectManifest · object"},{"type":"object","title":"RemoteMCPServerManifest","description":"The existing manifest of the resource","required":["type","name","description","url"],"x-fern-type-name":"MCPServerManifest","properties":{"type":{"description":"+value=mcp-server/remote","type":"string","enum":["mcp-server/remote"],"default":"mcp-server/remote","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,71}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.105.description","typeLabel":"string"},"url":{"description":"The endpoint URL for the MCP Server.","type":"string","pattern":"^https?:\\/\\/[^\\s]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.url","typeLabel":"string"},"display_name":{"description":"A human-readable label for the MCP Server in the UI. If omitted, the server name is shown.","type":"string","minLength":1,"maxLength":128,"uniqueKey":"existingManifest.oneOf.105.display_name","typeLabel":"string"},"tls_settings":{"description":"Configure TLS settings for secure connections with custom CA certificates.","type":"object","required":["reject_unauthorized"],"properties":{"reject_unauthorized":{"description":"When set to true, it will reject any connection which is not authorized with the list of supplied CAs.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.105.tls_settings.reject_unauthorized","typeLabel":"boolean"},"ca_cert":{"description":"Add custom CA certificates to use for TLS verification.","type":"string","uniqueKey":"existingManifest.oneOf.105.tls_settings.ca_cert","typeLabel":"string"}},"title":"CustomTLSSettings","x-fern-type-name":"CustomTLSSettings","uniqueKey":"existingManifest.oneOf.105.tls_settings","typeLabel":"CustomTLSSettings · object"},"tool_settings":{"description":"Customize tool descriptions or enable/disable specific tools from the MCP Server.","type":"array","items":{"description":"MCP Tool Setting","type":"object","required":["name"],"properties":{"name":{"description":"The unique name of the tool.","type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.tool_settings.items.[INDEX].name","typeLabel":"string"},"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"uniqueKey":"existingManifest.oneOf.105.tool_settings.items.[INDEX].description","typeLabel":"string"},"disabled":{"description":"Allows to disable the tool.","type":"boolean","uniqueKey":"existingManifest.oneOf.105.tool_settings.items.[INDEX].disabled","typeLabel":"boolean"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"existingManifest.oneOf.105.tool_settings.items.[INDEX].annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"existingManifest.oneOf.105.tool_settings.items.[INDEX].annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"existingManifest.oneOf.105.tool_settings.items.[INDEX].annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"MCPToolSetting","x-fern-type-name":"MCPToolSetting","uniqueKey":"existingManifest.oneOf.105.tool_settings.items.[INDEX]","typeLabel":"MCPToolSetting · object"},"uniqueKey":"existingManifest.oneOf.105.tool_settings","typeLabel":"MCPToolSetting · object[]"},"tool_policy":{"description":"Enable/disable policy for MCP tools.","type":"object","required":["enable_tools_by_default"],"properties":{"enable_tools_by_default":{"description":"When true, all tools are exposed except those in disabled_tools. When false, only tools listed in enabled_tools are exposed.","type":"boolean","enum":[true,false],"default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.105.tool_policy.enable_tools_by_default","typeLabel":"enum\u003cboolean>"},"disabled_tools":{"description":"Tool names to disable when enable_tools_by_default is true.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","uniqueKey":"existingManifest.oneOf.105.tool_policy.disabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.105.tool_policy.disabled_tools","typeLabel":"string[]"},"enabled_tools":{"description":"Tool names to enable when enable_tools_by_default is false.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","uniqueKey":"existingManifest.oneOf.105.tool_policy.enabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.105.tool_policy.enabled_tools","typeLabel":"string[]"}},"title":"MCPToolPolicy","x-fern-type-name":"MCPToolPolicy","uniqueKey":"existingManifest.oneOf.105.tool_policy","typeLabel":"MCPToolPolicy · object"},"tool_metadata":{"description":"Per-tool description and annotation overrides keyed by tool name.","type":"object","additionalProperties":{"description":"Description and annotation overrides for a single MCP tool.","type":"object","properties":{"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"uniqueKey":"existingManifest.oneOf.105.tool_metadata.additionalProperties.description","typeLabel":"string"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"existingManifest.oneOf.105.tool_metadata.additionalProperties.annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"existingManifest.oneOf.105.tool_metadata.additionalProperties.annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"existingManifest.oneOf.105.tool_metadata.additionalProperties.annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"MCPToolMetadata","x-fern-type-name":"MCPToolMetadata","uniqueKey":"existingManifest.oneOf.105.tool_metadata.additionalProperties","typeLabel":"MCPToolMetadata · object"},"uniqueKey":"existingManifest.oneOf.105.tool_metadata","typeLabel":"object"},"auth_data":{"oneOf":[{"type":"object","title":"MCPServerHeaderAuth","description":"Authenticate using a static key or token sent as a request header. Choose shared vs individual credentials below.","required":["type","headers","auth_level"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=header","type":"string","enum":["header"],"default":"header","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.0.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"Map each header name to its value. For shared, enter the actual value. For individual, use a placeholder that will be filled in by each user (e.g. Bearer {{API_KEY}}).","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.0.headers.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.0.headers","typeLabel":"object"},"auth_level":{"description":"Level at which this authentication will be applied. Values: global (default), per_user","type":"string","enum":["global","per_user"],"default":"global","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.0.auth_level","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.0","typeLabel":"MCPServerHeaderAuth · object"},{"type":"object","title":"MCPServerOAuth2","description":"OAuth2","required":["type","grant_type","provider"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"OAuth2 authentication","type":"string","enum":["oauth2"],"default":"oauth2","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.type","typeLabel":"enum\u003cstring>"},"grant_type":{"description":"The OAuth2 grant type to use for authentication.","type":"string","enum":["authorization_code","client_credentials","token_exchange","id_jag","jwt_bearer"],"default":"authorization_code","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.grant_type","typeLabel":"enum\u003cstring>"},"provider":{"description":"Select the OAuth provider. Provider-specific configuration (e.g. Auth0 organization) is unlocked based on this value.","type":"string","enum":["custom","auth0","okta","microsoft-entra"],"default":"custom","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.provider","typeLabel":"enum\u003cstring>"},"use_organization":{"description":"When enabled, organization will be extracted from the inbound token and it will be included as the organization parameter on token endpoint requests.","type":"boolean","uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.use_organization","typeLabel":"boolean"},"default_organization":{"description":"Fallback Auth0 organization when the inbound token does not include organization.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.default_organization","typeLabel":"string"},"audience":{"description":"Okta target audience (RFC 8693 'audience'). Required when the token_exchange grant type is used with the okta provider.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.audience","typeLabel":"string"},"issuer_uri":{"description":"Issuer URI of the authorization server the ID-JAG token is issued for. Sent as the 'audience' parameter on the ID-JAG token exchange.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.issuer_uri","typeLabel":"string"},"authorization_url":{"description":"URL for the authorization request","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.authorization_url","typeLabel":"string"},"token_url":{"description":"The endpoint to exchange auth code for tokens.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.token_url","typeLabel":"string"},"client_id":{"description":"client ID for OAuth2 or the TrueFoundry secret FQN containing the client ID.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.client_id","typeLabel":"string"},"client_authentication":{"description":"How the OAuth client authenticates to the token endpoint. Certificate auth is available for Microsoft Entra client_credentials and jwt_bearer (on-behalf-of).","type":"string","enum":["client_secret","certificate"],"default":"client_secret","uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.client_authentication","typeLabel":"enum\u003cstring>"},"client_secret":{"description":"Client secret or the TrueFoundry secret FQN containing the client secret for OAuth2.","type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.client_secret","typeLabel":"string"},"certificate_thumbprint":{"description":"Hex SHA-1 thumbprint from the Azure portal, or the TrueFoundry secret FQN containing it.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.certificate_thumbprint","typeLabel":"string"},"private_key":{"description":"PEM private key for Microsoft Entra certificate-based client authentication, or the TrueFoundry secret FQN containing it.","type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.private_key","typeLabel":"string"},"registration_url":{"description":"URL for dynamic client registration (RFC 7591). If provided, client credentials will be obtained automatically using the Dynamic Client Registration (DCR) process.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.registration_url","typeLabel":"string"},"introspection_url":{"description":"URL to fetch token expiry (RFC 7662) when the provider does not return expires_in (e.g. Salesforce). Requires client_id and client_secret.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.introspection_url","typeLabel":"string"},"include_resource":{"description":"When enabled, the MCP server URL is sent as the resource parameter (RFC 8707) on both authorization and token endpoint requests.","type":"boolean","uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.include_resource","typeLabel":"boolean"},"code_challenge_methods_supported":{"description":"List of supported PKCE code challenge methods (S256 only)","type":"array","items":{"type":"string","enum":["S256"],"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.code_challenge_methods_supported.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.code_challenge_methods_supported","typeLabel":"enum\u003cstring>[]"},"jwt_source":{"description":"Source of the JWT token to be used for verification.","type":"string","enum":["access_token","id_token"],"default":"access_token","uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.jwt_source","typeLabel":"enum\u003cstring>"},"scopes":{"description":"List of scopes to request from the OAuth2 provider.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.scopes.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.scopes","typeLabel":"string[]"},"additional_token_params":{"description":"Extra key/value pairs sent on every token endpoint request (e.g. Auth0 'organization').","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.additional_token_params.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1.additional_token_params","typeLabel":"object"}},"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.1","typeLabel":"MCPServerOAuth2 · object"},{"type":"object","title":"MCPServerPassthrough","description":"Authenticate using your existing TrueFoundry account (PAT or Virtual Accounts). Your credentials are automatically passed to the MCP server.","required":["type"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=passthrough","type":"string","enum":["passthrough"],"default":"passthrough","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.2","typeLabel":"MCPServerPassthrough · object"},{"type":"object","title":"MCPServerAwsSigV4Auth","description":"Sign requests to AWS Bedrock AgentCore with AWS credentials (SigV4).","required":["type","region","auth"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=aws-sigv4","type":"string","enum":["aws-sigv4"],"default":"aws-sigv4","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.3.type","typeLabel":"enum\u003cstring>"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.3.region","typeLabel":"enum\u003cstring>"},"auth":{"oneOf":[{"type":"object","title":"MCPServerAwsAccessKeyAuth","description":"Authenticate with an AWS access key pair.","required":["type","access_key_id","secret_access_key"],"x-fern-type-name":"MCPServerAwsAccessKeyAuth","properties":{"type":{"description":"+value=aws-access-key","type":"string","enum":["aws-access-key"],"default":"aws-access-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.3.auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"access_key_id":{"description":"AWS access key ID. Prefer a tfy-secret reference.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.3.auth.oneOf.0.access_key_id","typeLabel":"string"},"secret_access_key":{"description":"AWS secret access key. Prefer a tfy-secret reference.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.3.auth.oneOf.0.secret_access_key","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.3.auth.oneOf.0","typeLabel":"MCPServerAwsAccessKeyAuth · object"},{"type":"object","title":"MCPServerAwsAssumeRoleAuth","description":"Authenticate by assuming an IAM role (SigV4).","required":["type","assumed_role_arn"],"x-fern-type-name":"MCPServerAwsAssumeRoleAuth","properties":{"type":{"description":"+value=aws-assumed-role","type":"string","enum":["aws-assumed-role"],"default":"aws-assumed-role","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.3.auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"assumed_role_arn":{"description":"ARN of the role you want to assume. Prefer a tfy-secret reference.","type":"string","pattern":"^(arn:(aws|aws-us-gov|aws-cn):iam::[0-9]{12}:role(/[\\w+=,.@-]+)+|tfy-secret:\\/\\/.+:.+:.+)$","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.3.auth.oneOf.1.assumed_role_arn","typeLabel":"string"},"external_id":{"description":"Optional external ID to use when assuming the role. This provides an added layer of security by ensuring only parties with the correct external ID can assume the role.","type":"string","uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.3.auth.oneOf.1.external_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.3.auth.oneOf.1","typeLabel":"MCPServerAwsAssumeRoleAuth · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.3.auth","typeLabel":"MCPServerAwsAccessKeyAuth · object | MCPServerAwsAssumeRoleAuth · object"}},"uniqueKey":"existingManifest.oneOf.105.auth_data.oneOf.3","typeLabel":"MCPServerAwsSigV4Auth · object"}],"uniqueKey":"existingManifest.oneOf.105.auth_data","typeLabel":"MCPServerHeaderAuth · object | MCPServerOAuth2 · object | MCPServerPassthrough · object | MCPServerAwsSigV4Auth · object"},"collaborators":{"description":"Users and Teams that have access to this MCP Server","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.105.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.105.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.105.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.105.ownedBy","typeLabel":"OwnedBy · object"},"additional_headers":{"description":"Additional HTTP headers sent on each request to the MCP server. If the same header is set in both `additional_headers` and `auth_data`, the `auth_data` value wins.","type":"object","uniqueKey":"existingManifest.oneOf.105.additional_headers","typeLabel":"object"},"forwarded_headers":{"description":"Extra header names copied from the client request to the upstream MCP server. Content-Type, Accept, Last-Event-ID, and every header starting with mcp- (Mcp-Session-Id, Mcp-Protocol-Version, Mcp-Param-*) are already forwarded automatically.","type":"array","items":{"type":"string","pattern":"^[!#$%\u0026'+\\-.^_`|~0-9A-Za-z]+$","uniqueKey":"existingManifest.oneOf.105.forwarded_headers.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.105.forwarded_headers","typeLabel":"string[]"},"tags":{"description":"Key-value pairs to categorize this MCP Server (e.g., by owner or environment).","type":"object","uniqueKey":"existingManifest.oneOf.105.tags","typeLabel":"object"}},"uniqueKey":"existingManifest.oneOf.105","typeLabel":"RemoteMCPServerManifest · object"},{"type":"object","title":"VirtualMCPServerManifest","description":"The existing manifest of the resource","required":["type","name","description","servers"],"x-fern-type-name":"MCPServerManifest","properties":{"type":{"description":"+value=mcp-server/virtual","type":"string","enum":["mcp-server/virtual"],"default":"mcp-server/virtual","isRequired":true,"uniqueKey":"existingManifest.oneOf.106.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Virtual MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,71}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.106.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this Virtual MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.106.description","typeLabel":"string"},"servers":{"description":"List of source MCP servers to include in this virtual server.","type":"array","items":{"description":"MCP Server Source","type":"object","required":["name"],"properties":{"name":{"description":"Name of the MCP server","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.106.servers.items.[INDEX].name","typeLabel":"string"},"enabled_tools":{"description":"List of tools to enable from this source server.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.106.servers.items.[INDEX].enabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.106.servers.items.[INDEX].enabled_tools","typeLabel":"string[]"},"tool_slug":{"description":"Suffix appended to this server's tool names. Defaults to an auto-generated suffix.","type":"string","pattern":"^[a-z0-9]([a-z0-9-]{0,14}[a-z0-9])?$","uniqueKey":"existingManifest.oneOf.106.servers.items.[INDEX].tool_slug","typeLabel":"string"}},"title":"McpServerSource","x-fern-type-name":"McpServerSource","uniqueKey":"existingManifest.oneOf.106.servers.items.[INDEX]","typeLabel":"McpServerSource · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.106.servers","typeLabel":"McpServerSource · object[]"},"display_name":{"description":"A human-readable label for the Virtual MCP Server in the UI. If omitted, the server name is shown.","type":"string","minLength":1,"maxLength":128,"uniqueKey":"existingManifest.oneOf.106.display_name","typeLabel":"string"},"best_effort_mode":{"description":"When enabled, the virtual MCP server continues with available source servers even if some servers fail.","type":"boolean","default":false,"uniqueKey":"existingManifest.oneOf.106.best_effort_mode","typeLabel":"boolean"},"collaborators":{"description":"Users and Teams that have access to this Virtual MCP Server","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.106.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.106.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.106.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.106.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.106.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.106.ownedBy","typeLabel":"OwnedBy · object"},"tags":{"description":"Key-value pairs to categorize this Virtual MCP Server (e.g., by owner or environment).","type":"object","uniqueKey":"existingManifest.oneOf.106.tags","typeLabel":"object"}},"uniqueKey":"existingManifest.oneOf.106","typeLabel":"VirtualMCPServerManifest · object"},{"type":"object","title":"OpenAPIMCPServerManifest","description":"The existing manifest of the resource","required":["type","name","description","url","openapi_spec_source"],"x-fern-type-name":"MCPServerManifest","properties":{"type":{"description":"+value=mcp-server/openapi","type":"string","enum":["mcp-server/openapi"],"default":"mcp-server/openapi","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the OpenAPI MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,71}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this OpenAPI MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.107.description","typeLabel":"string"},"url":{"description":"The base URL where API requests will be sent. This should be the root endpoint of your API server, without any path suffix.","type":"string","pattern":"^https?:\\/\\/[^\\s]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.url","typeLabel":"string"},"openapi_spec_source":{"oneOf":[{"type":"object","title":"RemoteSpecSource","description":"Fetch the OpenAPI specification from a remote HTTP/HTTPS endpoint.","required":["type","url"],"x-fern-type-name":"OpenAPISpecSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.openapi_spec_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"url":{"description":"URL to fetch the OpenAPI specification (JSON or YAML format).","type":"string","pattern":"^https?:\\/\\/[^\\s]+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.openapi_spec_source.oneOf.0.url","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.107.openapi_spec_source.oneOf.0","typeLabel":"RemoteSpecSource · object"},{"type":"object","title":"UploadSpecSource","description":"Fetch the stored/uploaded OpenAPI specification.","required":["type","url"],"x-fern-type-name":"OpenAPISpecSource","properties":{"type":{"description":"+value=upload","type":"string","enum":["upload"],"default":"upload","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.openapi_spec_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"url":{"description":"Cloud storage path where the OpenAPI specification is stored (S3, GCS, or Azure Blob).","type":"string","pattern":"^(s3://[^/]+|gs://[^/]+|https://[^.]+\\.blob\\.core\\.windows\\.net/[^/]+)/tfy-openapi-specs/(?:\\d{4}-\\d{2}/|[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/)[a-f0-9-]+\\.json$","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.openapi_spec_source.oneOf.1.url","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.107.openapi_spec_source.oneOf.1","typeLabel":"UploadSpecSource · object"},{"type":"object","title":"InlineSpecSource","description":"Inline your OpenAPI specification directly. The spec will be stored securely.","required":["type","openapi_spec"],"x-fern-type-name":"OpenAPISpecSource","properties":{"type":{"description":"+value=inline","type":"string","enum":["inline"],"default":"inline","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.openapi_spec_source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"openapi_spec":{"oneOf":[{"type":"object","description":"The OpenAPI specification as a JSON object or a JSON/YAML string.","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.openapi_spec_source.oneOf.2.openapi_spec.oneOf.0","typeLabel":"object"},{"type":"string","description":"The OpenAPI specification as a JSON object or a JSON/YAML string.","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.openapi_spec_source.oneOf.2.openapi_spec.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.107.openapi_spec_source.oneOf.2.openapi_spec","typeLabel":"object | string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.107.openapi_spec_source.oneOf.2","typeLabel":"InlineSpecSource · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.107.openapi_spec_source","typeLabel":"RemoteSpecSource · object | UploadSpecSource · object | InlineSpecSource · object"},"display_name":{"description":"A human-readable label for the OpenAPI MCP Server in the UI. If omitted, the server name is shown.","type":"string","minLength":1,"maxLength":128,"uniqueKey":"existingManifest.oneOf.107.display_name","typeLabel":"string"},"tls_settings":{"description":"Configure TLS settings for secure connections with custom CA certificates.","type":"object","required":["reject_unauthorized"],"properties":{"reject_unauthorized":{"description":"When set to true, it will reject any connection which is not authorized with the list of supplied CAs.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.107.tls_settings.reject_unauthorized","typeLabel":"boolean"},"ca_cert":{"description":"Add custom CA certificates to use for TLS verification.","type":"string","uniqueKey":"existingManifest.oneOf.107.tls_settings.ca_cert","typeLabel":"string"}},"title":"CustomTLSSettings","x-fern-type-name":"CustomTLSSettings","uniqueKey":"existingManifest.oneOf.107.tls_settings","typeLabel":"CustomTLSSettings · object"},"enable_all_tools":{"description":"When enabled, all tools from the OpenAPI spec will be available (up to 30 tools). Disable to select specific tools.","type":"boolean","uniqueKey":"existingManifest.oneOf.107.enable_all_tools","typeLabel":"boolean"},"tool_settings":{"description":"The tools to customize from the OpenAPI Server.","type":"array","items":{"description":"OpenAPI MCP Tool Setting","type":"object","required":["method","path","name","description"],"properties":{"method":{"description":"The HTTP method for this endpoint.","type":"string","enum":["get","post","put","patch","delete","head"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.107.tool_settings.items.[INDEX].method","typeLabel":"enum\u003cstring>"},"path":{"description":"The API endpoint path (e.g., /users/{id}).","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.tool_settings.items.[INDEX].path","typeLabel":"string"},"name":{"description":"The unique name of this tool, derived from OpenAPI operationId.","type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.tool_settings.items.[INDEX].name","typeLabel":"string"},"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.107.tool_settings.items.[INDEX].description","typeLabel":"string"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"existingManifest.oneOf.107.tool_settings.items.[INDEX].annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"existingManifest.oneOf.107.tool_settings.items.[INDEX].annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"existingManifest.oneOf.107.tool_settings.items.[INDEX].annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"OpenAPIMCPToolSetting","x-fern-type-name":"OpenAPIMCPToolSetting","uniqueKey":"existingManifest.oneOf.107.tool_settings.items.[INDEX]","typeLabel":"OpenAPIMCPToolSetting · object"},"uniqueKey":"existingManifest.oneOf.107.tool_settings","typeLabel":"OpenAPIMCPToolSetting · object[]"},"auth_data":{"oneOf":[{"type":"object","title":"MCPServerHeaderAuth","description":"Authenticate using a static key or token sent as a request header. Choose shared vs individual credentials below.","required":["type","headers","auth_level"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=header","type":"string","enum":["header"],"default":"header","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.0.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"Map each header name to its value. For shared, enter the actual value. For individual, use a placeholder that will be filled in by each user (e.g. Bearer {{API_KEY}}).","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.0.headers.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.0.headers","typeLabel":"object"},"auth_level":{"description":"Level at which this authentication will be applied. Values: global (default), per_user","type":"string","enum":["global","per_user"],"default":"global","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.0.auth_level","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.0","typeLabel":"MCPServerHeaderAuth · object"},{"type":"object","title":"MCPServerOAuth2","description":"OAuth2","required":["type","grant_type","provider"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"OAuth2 authentication","type":"string","enum":["oauth2"],"default":"oauth2","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.type","typeLabel":"enum\u003cstring>"},"grant_type":{"description":"The OAuth2 grant type to use for authentication.","type":"string","enum":["authorization_code","client_credentials","token_exchange","id_jag","jwt_bearer"],"default":"authorization_code","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.grant_type","typeLabel":"enum\u003cstring>"},"provider":{"description":"Select the OAuth provider. Provider-specific configuration (e.g. Auth0 organization) is unlocked based on this value.","type":"string","enum":["custom","auth0","okta","microsoft-entra"],"default":"custom","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.provider","typeLabel":"enum\u003cstring>"},"use_organization":{"description":"When enabled, organization will be extracted from the inbound token and it will be included as the organization parameter on token endpoint requests.","type":"boolean","uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.use_organization","typeLabel":"boolean"},"default_organization":{"description":"Fallback Auth0 organization when the inbound token does not include organization.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.default_organization","typeLabel":"string"},"audience":{"description":"Okta target audience (RFC 8693 'audience'). Required when the token_exchange grant type is used with the okta provider.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.audience","typeLabel":"string"},"issuer_uri":{"description":"Issuer URI of the authorization server the ID-JAG token is issued for. Sent as the 'audience' parameter on the ID-JAG token exchange.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.issuer_uri","typeLabel":"string"},"authorization_url":{"description":"URL for the authorization request","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.authorization_url","typeLabel":"string"},"token_url":{"description":"The endpoint to exchange auth code for tokens.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.token_url","typeLabel":"string"},"client_id":{"description":"client ID for OAuth2 or the TrueFoundry secret FQN containing the client ID.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.client_id","typeLabel":"string"},"client_authentication":{"description":"How the OAuth client authenticates to the token endpoint. Certificate auth is available for Microsoft Entra client_credentials and jwt_bearer (on-behalf-of).","type":"string","enum":["client_secret","certificate"],"default":"client_secret","uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.client_authentication","typeLabel":"enum\u003cstring>"},"client_secret":{"description":"Client secret or the TrueFoundry secret FQN containing the client secret for OAuth2.","type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.client_secret","typeLabel":"string"},"certificate_thumbprint":{"description":"Hex SHA-1 thumbprint from the Azure portal, or the TrueFoundry secret FQN containing it.","type":"string","pattern":"^\\S+$","uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.certificate_thumbprint","typeLabel":"string"},"private_key":{"description":"PEM private key for Microsoft Entra certificate-based client authentication, or the TrueFoundry secret FQN containing it.","type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.private_key","typeLabel":"string"},"registration_url":{"description":"URL for dynamic client registration (RFC 7591). If provided, client credentials will be obtained automatically using the Dynamic Client Registration (DCR) process.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.registration_url","typeLabel":"string"},"introspection_url":{"description":"URL to fetch token expiry (RFC 7662) when the provider does not return expires_in (e.g. Salesforce). Requires client_id and client_secret.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.introspection_url","typeLabel":"string"},"include_resource":{"description":"When enabled, the MCP server URL is sent as the resource parameter (RFC 8707) on both authorization and token endpoint requests.","type":"boolean","uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.include_resource","typeLabel":"boolean"},"code_challenge_methods_supported":{"description":"List of supported PKCE code challenge methods (S256 only)","type":"array","items":{"type":"string","enum":["S256"],"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.code_challenge_methods_supported.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.code_challenge_methods_supported","typeLabel":"enum\u003cstring>[]"},"jwt_source":{"description":"Source of the JWT token to be used for verification.","type":"string","enum":["access_token","id_token"],"default":"access_token","uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.jwt_source","typeLabel":"enum\u003cstring>"},"scopes":{"description":"List of scopes to request from the OAuth2 provider.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.scopes.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.scopes","typeLabel":"string[]"},"additional_token_params":{"description":"Extra key/value pairs sent on every token endpoint request (e.g. Auth0 'organization').","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.additional_token_params.additionalProperties","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1.additional_token_params","typeLabel":"object"}},"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.1","typeLabel":"MCPServerOAuth2 · object"},{"type":"object","title":"MCPServerPassthrough","description":"Authenticate using your existing TrueFoundry account (PAT or Virtual Accounts). Your credentials are automatically passed to the MCP server.","required":["type"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=passthrough","type":"string","enum":["passthrough"],"default":"passthrough","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.2","typeLabel":"MCPServerPassthrough · object"},{"type":"object","title":"MCPServerAwsSigV4Auth","description":"Sign requests to AWS Bedrock AgentCore with AWS credentials (SigV4).","required":["type","region","auth"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=aws-sigv4","type":"string","enum":["aws-sigv4"],"default":"aws-sigv4","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.3.type","typeLabel":"enum\u003cstring>"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.3.region","typeLabel":"enum\u003cstring>"},"auth":{"oneOf":[{"type":"object","title":"MCPServerAwsAccessKeyAuth","description":"Authenticate with an AWS access key pair.","required":["type","access_key_id","secret_access_key"],"x-fern-type-name":"MCPServerAwsAccessKeyAuth","properties":{"type":{"description":"+value=aws-access-key","type":"string","enum":["aws-access-key"],"default":"aws-access-key","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.3.auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"access_key_id":{"description":"AWS access key ID. Prefer a tfy-secret reference.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.3.auth.oneOf.0.access_key_id","typeLabel":"string"},"secret_access_key":{"description":"AWS secret access key. Prefer a tfy-secret reference.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.3.auth.oneOf.0.secret_access_key","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.3.auth.oneOf.0","typeLabel":"MCPServerAwsAccessKeyAuth · object"},{"type":"object","title":"MCPServerAwsAssumeRoleAuth","description":"Authenticate by assuming an IAM role (SigV4).","required":["type","assumed_role_arn"],"x-fern-type-name":"MCPServerAwsAssumeRoleAuth","properties":{"type":{"description":"+value=aws-assumed-role","type":"string","enum":["aws-assumed-role"],"default":"aws-assumed-role","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.3.auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"assumed_role_arn":{"description":"ARN of the role you want to assume. Prefer a tfy-secret reference.","type":"string","pattern":"^(arn:(aws|aws-us-gov|aws-cn):iam::[0-9]{12}:role(/[\\w+=,.@-]+)+|tfy-secret:\\/\\/.+:.+:.+)$","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.3.auth.oneOf.1.assumed_role_arn","typeLabel":"string"},"external_id":{"description":"Optional external ID to use when assuming the role. This provides an added layer of security by ensuring only parties with the correct external ID can assume the role.","type":"string","uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.3.auth.oneOf.1.external_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.3.auth.oneOf.1","typeLabel":"MCPServerAwsAssumeRoleAuth · object"}],"isRequired":true,"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.3.auth","typeLabel":"MCPServerAwsAccessKeyAuth · object | MCPServerAwsAssumeRoleAuth · object"}},"uniqueKey":"existingManifest.oneOf.107.auth_data.oneOf.3","typeLabel":"MCPServerAwsSigV4Auth · object"}],"uniqueKey":"existingManifest.oneOf.107.auth_data","typeLabel":"MCPServerHeaderAuth · object | MCPServerOAuth2 · object | MCPServerPassthrough · object | MCPServerAwsSigV4Auth · object"},"collaborators":{"description":"Users and Teams that have access to this OpenAPI Server","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.107.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.107.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.107.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.107.ownedBy","typeLabel":"OwnedBy · object"},"additional_headers":{"description":"Additional HTTP headers sent on each request to the upstream OpenAPI server. If the same header is set in both `additional_headers` and `auth_data`, the `auth_data` value wins.","type":"object","uniqueKey":"existingManifest.oneOf.107.additional_headers","typeLabel":"object"},"forwarded_headers":{"description":"Extra header names copied from the client request to the upstream OpenAPI server. Content-Type, Accept, Last-Event-ID, and every header starting with mcp- (Mcp-Session-Id, Mcp-Protocol-Version, Mcp-Param-*) are already forwarded automatically.","type":"array","items":{"type":"string","pattern":"^[!#$%\u0026'+\\-.^_`|~0-9A-Za-z]+$","uniqueKey":"existingManifest.oneOf.107.forwarded_headers.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.107.forwarded_headers","typeLabel":"string[]"},"tags":{"description":"Key-value pairs to categorize this OpenAPI MCP Server (e.g., by owner or environment).","type":"object","uniqueKey":"existingManifest.oneOf.107.tags","typeLabel":"object"}},"uniqueKey":"existingManifest.oneOf.107","typeLabel":"OpenAPIMCPServerManifest · object"},{"type":"object","title":"StdioMCPServerManifest","description":"The existing manifest of the resource","required":["name","description","type","command"],"x-fern-type-name":"MCPServerManifest","properties":{"name":{"description":"The name of the MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,71}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.108.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.108.description","typeLabel":"string"},"type":{"description":"+value=mcp-server/stdio\n+sort=400","type":"string","enum":["mcp-server/stdio"],"default":"mcp-server/stdio","isRequired":true,"uniqueKey":"existingManifest.oneOf.108.type","typeLabel":"enum\u003cstring>"},"command":{"description":"Executable to run for the stdio MCP server process.","type":"string","minLength":1,"default":"npx","isRequired":true,"uniqueKey":"existingManifest.oneOf.108.command","typeLabel":"string"},"display_name":{"description":"A human-readable label for the MCP Server in the UI. If omitted, the server name is shown.","type":"string","minLength":1,"maxLength":128,"uniqueKey":"existingManifest.oneOf.108.display_name","typeLabel":"string"},"collaborators":{"description":"Users and Teams that have access to this MCP Server","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.108.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.108.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.108.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.108.collaborators","typeLabel":"Collaborator · object[]"},"args":{"description":"Arguments passed to the stdio MCP server command.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.108.args.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.108.args","typeLabel":"string[]"},"tool_settings":{"description":"Customize tool descriptions or enable/disable specific tools from the MCP Server.","type":"array","items":{"description":"MCP Tool Setting","type":"object","required":["name"],"properties":{"name":{"description":"The unique name of the tool.","type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","isRequired":true,"uniqueKey":"existingManifest.oneOf.108.tool_settings.items.[INDEX].name","typeLabel":"string"},"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"uniqueKey":"existingManifest.oneOf.108.tool_settings.items.[INDEX].description","typeLabel":"string"},"disabled":{"description":"Allows to disable the tool.","type":"boolean","uniqueKey":"existingManifest.oneOf.108.tool_settings.items.[INDEX].disabled","typeLabel":"boolean"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"existingManifest.oneOf.108.tool_settings.items.[INDEX].annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"existingManifest.oneOf.108.tool_settings.items.[INDEX].annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"existingManifest.oneOf.108.tool_settings.items.[INDEX].annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"MCPToolSetting","x-fern-type-name":"MCPToolSetting","uniqueKey":"existingManifest.oneOf.108.tool_settings.items.[INDEX]","typeLabel":"MCPToolSetting · object"},"uniqueKey":"existingManifest.oneOf.108.tool_settings","typeLabel":"MCPToolSetting · object[]"},"tool_policy":{"description":"Enable/disable policy for MCP tools.","type":"object","required":["enable_tools_by_default"],"properties":{"enable_tools_by_default":{"description":"When true, all tools are exposed except those in disabled_tools. When false, only tools listed in enabled_tools are exposed.","type":"boolean","enum":[true,false],"default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.108.tool_policy.enable_tools_by_default","typeLabel":"enum\u003cboolean>"},"disabled_tools":{"description":"Tool names to disable when enable_tools_by_default is true.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","uniqueKey":"existingManifest.oneOf.108.tool_policy.disabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.108.tool_policy.disabled_tools","typeLabel":"string[]"},"enabled_tools":{"description":"Tool names to enable when enable_tools_by_default is false.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","uniqueKey":"existingManifest.oneOf.108.tool_policy.enabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.108.tool_policy.enabled_tools","typeLabel":"string[]"}},"title":"MCPToolPolicy","x-fern-type-name":"MCPToolPolicy","uniqueKey":"existingManifest.oneOf.108.tool_policy","typeLabel":"MCPToolPolicy · object"},"tool_metadata":{"description":"Per-tool description and annotation overrides keyed by tool name.","type":"object","additionalProperties":{"description":"Description and annotation overrides for a single MCP tool.","type":"object","properties":{"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"uniqueKey":"existingManifest.oneOf.108.tool_metadata.additionalProperties.description","typeLabel":"string"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"existingManifest.oneOf.108.tool_metadata.additionalProperties.annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"existingManifest.oneOf.108.tool_metadata.additionalProperties.annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"existingManifest.oneOf.108.tool_metadata.additionalProperties.annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"MCPToolMetadata","x-fern-type-name":"MCPToolMetadata","uniqueKey":"existingManifest.oneOf.108.tool_metadata.additionalProperties","typeLabel":"MCPToolMetadata · object"},"uniqueKey":"existingManifest.oneOf.108.tool_metadata","typeLabel":"object"},"auth_data":{"description":"Environment variable authentication for stdio MCP. For individual credentials, use one or more {{placeholder}} names in values (same rules as header auth).","type":"object","required":["type","env"],"properties":{"type":{"description":"+value=env","type":"string","enum":["env"],"default":"env","isRequired":true,"uniqueKey":"existingManifest.oneOf.108.auth_data.type","typeLabel":"enum\u003cstring>"},"env":{"description":"Map each env variable to its value. For shared, enter the actual value. For individual, use a placeholder that will be filled in by each user (e.g. API_KEY {{API_KEY}}).","type":"object","additionalProperties":{"type":"string","uniqueKey":"existingManifest.oneOf.108.auth_data.env.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.108.auth_data.env","typeLabel":"object"},"auth_level":{"description":"Level at which this authentication will be applied. Values: global (default), per_user","type":"string","enum":["global","per_user"],"default":"global","uniqueKey":"existingManifest.oneOf.108.auth_data.auth_level","typeLabel":"enum\u003cstring>"}},"title":"MCPServerEnvAuth","x-fern-type-name":"MCPServerEnvAuth","uniqueKey":"existingManifest.oneOf.108.auth_data","typeLabel":"MCPServerEnvAuth · object"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.108.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.108.ownedBy","typeLabel":"OwnedBy · object"},"tags":{"description":"Key-value pairs to categorize this MCP Server (e.g., by owner or environment).","type":"object","uniqueKey":"existingManifest.oneOf.108.tags","typeLabel":"object"}},"uniqueKey":"existingManifest.oneOf.108","typeLabel":"StdioMCPServerManifest · object"},{"type":"object","title":"TfyManagedMCPServerManifest","description":"The existing manifest of the resource","required":["type","name","description","server_identifier"],"x-fern-type-name":"MCPServerManifest","properties":{"type":{"description":"+value=mcp-server/tfy-managed","type":"string","enum":["mcp-server/tfy-managed"],"default":"mcp-server/tfy-managed","isRequired":true,"uniqueKey":"existingManifest.oneOf.109.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,71}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.109.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"existingManifest.oneOf.109.description","typeLabel":"string"},"server_identifier":{"description":"Catalog slug of the TrueFoundry-managed MCP server to connect to. Used to resolve the hosted endpoint and available tools.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,71}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.109.server_identifier","typeLabel":"string"},"display_name":{"description":"A human-readable label for the MCP Server in the UI. If omitted, the server name is shown.","type":"string","minLength":1,"maxLength":128,"uniqueKey":"existingManifest.oneOf.109.display_name","typeLabel":"string"},"tool_settings":{"description":"Customize tool descriptions or enable/disable specific tools from the MCP Server.","type":"array","items":{"description":"MCP Tool Setting","type":"object","required":["name"],"properties":{"name":{"description":"The unique name of the tool.","type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","isRequired":true,"uniqueKey":"existingManifest.oneOf.109.tool_settings.items.[INDEX].name","typeLabel":"string"},"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"uniqueKey":"existingManifest.oneOf.109.tool_settings.items.[INDEX].description","typeLabel":"string"},"disabled":{"description":"Allows to disable the tool.","type":"boolean","uniqueKey":"existingManifest.oneOf.109.tool_settings.items.[INDEX].disabled","typeLabel":"boolean"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"existingManifest.oneOf.109.tool_settings.items.[INDEX].annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"existingManifest.oneOf.109.tool_settings.items.[INDEX].annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"existingManifest.oneOf.109.tool_settings.items.[INDEX].annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"MCPToolSetting","x-fern-type-name":"MCPToolSetting","uniqueKey":"existingManifest.oneOf.109.tool_settings.items.[INDEX]","typeLabel":"MCPToolSetting · object"},"uniqueKey":"existingManifest.oneOf.109.tool_settings","typeLabel":"MCPToolSetting · object[]"},"tool_policy":{"description":"Enable/disable policy for MCP tools.","type":"object","required":["enable_tools_by_default"],"properties":{"enable_tools_by_default":{"description":"When true, all tools are exposed except those in disabled_tools. When false, only tools listed in enabled_tools are exposed.","type":"boolean","enum":[true,false],"default":true,"isRequired":true,"uniqueKey":"existingManifest.oneOf.109.tool_policy.enable_tools_by_default","typeLabel":"enum\u003cboolean>"},"disabled_tools":{"description":"Tool names to disable when enable_tools_by_default is true.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","uniqueKey":"existingManifest.oneOf.109.tool_policy.disabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.109.tool_policy.disabled_tools","typeLabel":"string[]"},"enabled_tools":{"description":"Tool names to enable when enable_tools_by_default is false.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","uniqueKey":"existingManifest.oneOf.109.tool_policy.enabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"existingManifest.oneOf.109.tool_policy.enabled_tools","typeLabel":"string[]"}},"title":"MCPToolPolicy","x-fern-type-name":"MCPToolPolicy","uniqueKey":"existingManifest.oneOf.109.tool_policy","typeLabel":"MCPToolPolicy · object"},"tool_metadata":{"description":"Per-tool description and annotation overrides keyed by tool name.","type":"object","additionalProperties":{"description":"Description and annotation overrides for a single MCP tool.","type":"object","properties":{"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"uniqueKey":"existingManifest.oneOf.109.tool_metadata.additionalProperties.description","typeLabel":"string"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"existingManifest.oneOf.109.tool_metadata.additionalProperties.annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"existingManifest.oneOf.109.tool_metadata.additionalProperties.annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"existingManifest.oneOf.109.tool_metadata.additionalProperties.annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"MCPToolMetadata","x-fern-type-name":"MCPToolMetadata","uniqueKey":"existingManifest.oneOf.109.tool_metadata.additionalProperties","typeLabel":"MCPToolMetadata · object"},"uniqueKey":"existingManifest.oneOf.109.tool_metadata","typeLabel":"object"},"collaborators":{"description":"Users and Teams that have access to this MCP Server","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.109.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.109.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"existingManifest.oneOf.109.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"existingManifest.oneOf.109.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.109.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"existingManifest.oneOf.109.ownedBy","typeLabel":"OwnedBy · object"},"auth_data":{"description":"TfyManaged OAuth2","type":"object","required":["type","grant_type"],"properties":{"type":{"description":"OAuth2 authentication","type":"string","enum":["oauth2"],"default":"oauth2","isRequired":true,"uniqueKey":"existingManifest.oneOf.109.auth_data.type","typeLabel":"enum\u003cstring>"},"grant_type":{"description":"The OAuth2 grant type to use for authentication.","type":"string","enum":["authorization_code"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.109.auth_data.grant_type","typeLabel":"enum\u003cstring>"}},"title":"TfyManagedMCPServerOAuth","x-fern-type-name":"TfyManagedMCPServerOAuth","uniqueKey":"existingManifest.oneOf.109.auth_data","typeLabel":"TfyManagedMCPServerOAuth · object"},"tags":{"description":"Key-value pairs to categorize this MCP Server (e.g., by owner or environment).","type":"object","uniqueKey":"existingManifest.oneOf.109.tags","typeLabel":"object"}},"uniqueKey":"existingManifest.oneOf.109","typeLabel":"TfyManagedMCPServerManifest · object"},{"type":"object","title":"RoleBindingManifest","description":"The existing manifest of the resource","required":["type","name","subjects","permissions"],"x-fern-type-name":"RoleBindingManifest","properties":{"type":{"description":"+value=role-binding","type":"string","enum":["role-binding"],"default":"role-binding","isRequired":true,"uniqueKey":"existingManifest.oneOf.110.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique name for this role binding.","type":"string","pattern":"^[a-z][a-z0-9-]{1,64}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.110.name","typeLabel":"string"},"subjects":{"description":"One row per principal; set type and name (email, team name, virtual account name, agent name, or external identity name).","type":"array","items":{"description":"Single row per principal: type selects how to interpret name (email vs names).\nField names mirror the manifest root (type + name) for consistency in the UI and YAML.","type":"object","required":["type","name"],"properties":{"type":{"description":"Whether this row identifies a user (email), a team (name), a virtual account (name), or an agent (name).","type":"string","enum":["user","team","virtualaccount","agent"],"isRequired":true,"uniqueKey":"existingManifest.oneOf.110.subjects.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"User email when type is user; team, virtual account, or agent name otherwise.","type":"string","minLength":1,"maxLength":1024,"isRequired":true,"uniqueKey":"existingManifest.oneOf.110.subjects.items.[INDEX].name","typeLabel":"string"}},"title":"RoleBindingSubject","x-fern-type-name":"RoleBindingSubject","uniqueKey":"existingManifest.oneOf.110.subjects.items.[INDEX]","typeLabel":"RoleBindingSubject · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.110.subjects","typeLabel":"RoleBindingSubject · object[]"},"permissions":{"description":"Resource-scoped role grants (resource type, FQN, and role name).","type":"array","items":{"description":"Grants a named account role on a specific resource identified by FQN.","type":"object","required":["resourceType","resourceFqn","role"],"properties":{"resourceType":{"description":"Target resource kind (e.g. workspace, cluster, ml-repo).","type":"string","minLength":1,"maxLength":128,"isRequired":true,"uniqueKey":"existingManifest.oneOf.110.permissions.items.[INDEX].resourceType","typeLabel":"string"},"resourceFqn":{"description":"Fully qualified name of the resource.","type":"string","minLength":1,"maxLength":1024,"isRequired":true,"uniqueKey":"existingManifest.oneOf.110.permissions.items.[INDEX].resourceFqn","typeLabel":"string"},"role":{"description":"Name of the role to bind (e.g. workspace-editor, model-user).","type":"string","minLength":1,"maxLength":255,"isRequired":true,"uniqueKey":"existingManifest.oneOf.110.permissions.items.[INDEX].role","typeLabel":"string"}},"title":"RoleBindingPermission","x-fern-type-name":"RoleBindingPermission","uniqueKey":"existingManifest.oneOf.110.permissions.items.[INDEX]","typeLabel":"RoleBindingPermission · object"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.110.permissions","typeLabel":"RoleBindingPermission · object[]"}},"uniqueKey":"existingManifest.oneOf.110","typeLabel":"RoleBindingManifest · object"},{"type":"object","title":"AgentChannelManifest","description":"The existing manifest of the resource","required":["type","name","agent","channel"],"x-fern-type-name":"AgentChannelManifest","properties":{"type":{"description":"+value=agent-channel","type":"string","enum":["agent-channel"],"default":"agent-channel","isRequired":true,"uniqueKey":"existingManifest.oneOf.111.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the agent channel.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.111.name","typeLabel":"string"},"agent":{"description":"Agent","type":"object","required":["name"],"properties":{"name":{"description":"The name of the agent this channel routes messages to.","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.111.agent.name","typeLabel":"string"}},"title":"AgentChannelAgent","x-fern-type-name":"AgentChannelAgent","isRequired":true,"uniqueKey":"existingManifest.oneOf.111.agent","typeLabel":"AgentChannelAgent · object"},"channel":{"description":"Reach the agent from a Slack app (one Slack app per channel).","type":"object","required":["type","app_id","signing_secret","auth"],"properties":{"type":{"description":"+uiType=Hidden\n+value=slack","type":"string","enum":["slack"],"default":"slack","isRequired":true,"uniqueKey":"existingManifest.oneOf.111.channel.type","typeLabel":"enum\u003cstring>"},"app_id":{"description":"The Slack app id (api_app_id). Inbound events are routed to this channel by app id.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.111.channel.app_id","typeLabel":"string"},"signing_secret":{"description":"Slack app signing secret, used to verify inbound event request signatures. App-level; common to all auth methods.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.111.channel.signing_secret","typeLabel":"string"},"auth":{"description":"Provide the Slack bot token directly.","type":"object","required":["type","bot_token"],"properties":{"type":{"description":"+value=bot-token\n+uiType=Hidden","type":"string","enum":["bot-token"],"default":"bot-token","isRequired":true,"uniqueKey":"existingManifest.oneOf.111.channel.auth.type","typeLabel":"enum\u003cstring>"},"bot_token":{"description":"Slack bot token (xoxb-…) used to post replies. Requires chat:write, chat:write.public.","type":"string","isRequired":true,"uniqueKey":"existingManifest.oneOf.111.channel.auth.bot_token","typeLabel":"string"}},"title":"AgentChannelSlackAuth","x-fern-type-name":"AgentChannelSlackAuth","isRequired":true,"uniqueKey":"existingManifest.oneOf.111.channel.auth","typeLabel":"AgentChannelSlackAuth · object"}},"title":"AgentChannelConfig","x-fern-type-name":"AgentChannelConfig","isRequired":true,"uniqueKey":"existingManifest.oneOf.111.channel","typeLabel":"AgentChannelConfig · object"}},"uniqueKey":"existingManifest.oneOf.111","typeLabel":"AgentChannelManifest · object"},{"type":"object","title":"OidcClientManifest","description":"The existing manifest of the resource","required":["type","name","client_type","redirect_uris","allowed_scopes","allowed_grant_types","token_endpoint_auth_method","pkce","application_type","access_token_ttl","refresh_token_ttl","refresh_token_max_uses"],"x-fern-type-name":"OidcClientManifest","properties":{"type":{"description":"+value=oidc-client","type":"string","enum":["oidc-client"],"default":"oidc-client","isRequired":true,"uniqueKey":"existingManifest.oneOf.112.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique name of the OAuth app within the tenant. At most 63 characters, so the fqn built from it fits the column that holds it.","type":"string","pattern":"^[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])?$","isRequired":true,"uniqueKey":"existingManifest.oneOf.112.name","typeLabel":"string"},"client_type":{"description":"confidential clients hold a secret; public clients rely on PKCE","type":"string","enum":["confidential","public"],"default":"confidential","isRequired":true,"uniqueKey":"existingManifest.oneOf.112.client_type","typeLabel":"enum\u003cstring>"},"redirect_uris":{"description":"Absolute URIs the authorization code may be returned to. No fragments.","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.112.redirect_uris.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.112.redirect_uris","typeLabel":"string[]"},"allowed_scopes":{"description":"Scopes this client may request","type":"array","items":{"type":"string","uniqueKey":"existingManifest.oneOf.112.allowed_scopes.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.112.allowed_scopes","typeLabel":"string[]"},"allowed_grant_types":{"description":"OAuth2 grants this client may use at the token endpoint","type":"array","items":{"type":"string","enum":["authorization_code","refresh_token","client_credentials"],"uniqueKey":"existingManifest.oneOf.112.allowed_grant_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"isRequired":true,"uniqueKey":"existingManifest.oneOf.112.allowed_grant_types","typeLabel":"enum\u003cstring>[]"},"token_endpoint_auth_method":{"description":"How the client authenticates at the token endpoint. Must be none for a public client.","type":"string","enum":["client_secret_basic","client_secret_post","none"],"default":"client_secret_basic","isRequired":true,"uniqueKey":"existingManifest.oneOf.112.token_endpoint_auth_method","typeLabel":"enum\u003cstring>"},"pkce":{"description":"required is the OAuth 2.1 default and is enforced for public clients","type":"string","enum":["required","not_required","not_required_with_client_auth"],"default":"required","isRequired":true,"uniqueKey":"existingManifest.oneOf.112.pkce","typeLabel":"enum\u003cstring>"},"application_type":{"description":"web allows https redirect URIs only; native additionally allows loopback and custom schemes","type":"string","enum":["web","native"],"default":"web","isRequired":true,"uniqueKey":"existingManifest.oneOf.112.application_type","typeLabel":"enum\u003cstring>"},"access_token_ttl":{"description":"How long an issued access token stays valid. This is the revocation lag, so keep it short.","type":"string","default":"1h","pattern":"^[1-9][0-9]{0,4}[smhd]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.112.access_token_ttl","typeLabel":"string"},"refresh_token_ttl":{"description":"How long a refresh token session may be resumed for","type":"string","default":"30d","pattern":"^[1-9][0-9]{0,4}[smhd]$","isRequired":true,"uniqueKey":"existingManifest.oneOf.112.refresh_token_ttl","typeLabel":"string"},"refresh_token_max_uses":{"description":"0 for unlimited, 1 for single use. Must be 1 for a public client.","type":"integer","enum":[1,0],"default":1,"isRequired":true,"uniqueKey":"existingManifest.oneOf.112.refresh_token_max_uses","typeLabel":"enum\u003cinteger>"},"display_name":{"description":"Human-readable label shown in the UI. Metadata only — never used for lookup or uniqueness. Omit it and the key is simply absent.","type":"string","uniqueKey":"existingManifest.oneOf.112.display_name","typeLabel":"string"}},"uniqueKey":"existingManifest.oneOf.112","typeLabel":"OidcClientManifest · object"},{"type":"null","uniqueKey":"existingManifest.oneOf.113","typeLabel":"null"}],"uniqueKey":"existingManifest","typeLabel":"MLRepoManifest · object | ArtifactManifest · object | ModelManifest · object | ChatPromptManifest · object | DataDirectoryManifest · object | Service · object | ApplicationSet · object | AwsProviderAccount · object | SnowflakeProviderAccount · object | AzureProviderAccount · object | GcpProviderAccount · object | DockerhubProviderAccount · object | BitbucketProviderAccount · object | CustomProviderAccount · object | GithubProviderAccount · object | GitlabProviderAccount · object | JfrogProviderAccount · object | TTLProviderAccount · object | TrueFoundryProviderAccount · object | QuayProviderAccount · object | SlackProviderAccount · object | WebhookProviderAccount · object | PagerDutyProviderAccount · object | MSTeamsProviderAccount · object | HashicorpProviderAccount · object | AwsBedrockProviderAccount · object | GoogleVertexProviderAccount · object | GoogleGeminiProviderAccount · object | AzureOpenAIProviderAccount · object | AzureFoundryProviderAccount · object | MicrosoftFoundryProviderAccount · object | CohereProviderAccount · object | AI21ProviderAccount · object | AnthropicProviderAccount · object | DeepinfraProviderAccount · object | GroqProviderAccount · object | MistralAIProviderAccount · object | PerplexityAIProviderAccount · object | TogetherAIProviderAccount · object | NomicProviderAccount · object | PalmProviderAccount · object | OllamaProviderAccount · object | OpenaiProviderAccount · object | DatabricksProviderAccount · object | ClouderaProviderAccount · object | SelfHostedModelProviderAccount · object | OpenRouterProviderAccount · object | SambaNovaProviderAccount · object | XAIProviderAccount · object | BasetenProviderAccount · object | AwsSagemakerProviderAccount · object | CerebrasProviderAccount · object | WaferProviderAccount · object | FireworksAIProviderAccount · object | TypeSafeProviderAccount · object | SnowflakeCortexProviderAccount · object | ElevenLabsProviderAccount · object | DeepgramProviderAccount · object | CartesiaProviderAccount · object | SmallestAiProviderAccount · object | AWSClaudePlatformProviderAccount · object | AwsBedrockMantleProviderAccount · object | VirtualModelProviderAccount · object | CustomEndpointProviderAccount · object | TrueFoundryManagedProviderAccount · object | MCPServerProviderAccount · object | GuardrailConfigGroup · object | ClusterManifest · object | WorkspaceManifest · object | Job · object | Helm · object | Volume · object | Notebook · object | RStudio · object | Workflow · object | AsyncService · object | SSHServer · object | SparkJob · object | TenantModelRateLimitConfig · object | TenantMCPRateLimitConfig · object | RateLimitConfig · object | LoadBalancingConfig · object | GuardrailsConfig · object | BudgetConfig · object | TenantBudgetConfig · object | TeamBudgetConfig · object | GatewayOTELConfig · object | GatewayMetadataConfig · object | GlobalSettings · object | GatewayDataAccessConfig · object | GatewayDataRoutingConfig · object | GatewayLoggingConfig · object | TeamManifest · object | PolicyManifest · object | RoleManifest · object | AlertConfig · object | VirtualAccountManifest · object | CommonToolsSettings · object | MCPGatewaySettings · object | AIFeaturesSettings · object | SecuritySettings · object | SecretGroupManifest · object | AgentManifestV2 · object | EnvironmentManifest · object | TracingProjectManifest · object | RemoteMCPServerManifest · object | VirtualMCPServerManifest · object | OpenAPIMCPServerManifest · object | StdioMCPServerManifest · object | TfyManagedMCPServerManifest · object | RoleBindingManifest · object | AgentChannelManifest · object | OidcClientManifest · object | null"},"action":{"oneOf":[{"type":"string","description":"The action performed: CREATE or UPDATE","enum":["CREATE","UPDATE"],"uniqueKey":"action.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"The action performed: CREATE or UPDATE","enum":["CREATE","UPDATE"],"uniqueKey":"action.oneOf.1","typeLabel":"null"}],"uniqueKey":"action","typeLabel":"enum\u003cstring> | null"},"data":{"oneOf":[{"type":"object","title":"ProviderAccount","description":"The created or updated resource","required":["fqn","provider","manifest","accountId"],"x-fern-type-name":"ProviderAccount","properties":{"fqn":{"type":"string","description":"Human-readable Fully Qualified Name of the provider account.","isRequired":true,"uniqueKey":"data.oneOf.0.fqn","typeLabel":"string"},"provider":{"type":"string","enum":["aws","gcp","azure","dockerhub","openai","databricks","truefoundry","jfrog","ttl","custom","quay","github","gitlab","bitbucket","bitbucket_data_center","ai21","cohere","anthropic","anyscale","deepinfra","groq","mistral-ai","nomic","palm","perplexity-ai","together-ai","ollama","slack","aws-bedrock","google-vertex","google-gemini","azure-openai","azure-foundry","microsoft-foundry","self-hosted-model","mcp-server-group","pagerduty","ms-teams","model-provider-accounts","guardrail-config-group","openrouter","sambanova","aws-sagemaker","cerebras","wafer","fireworks-ai","typesafe","hashicorp","snowflake-cortex","snowflake","cloudera","xai","baseten","virtual-model","elevenlabs","deepgram","cartesia","custom-endpoint","smallest-ai","aws-claude-platform","aws-bedrock-mantle","truefoundry-managed"],"isRequired":true,"uniqueKey":"data.oneOf.0.provider","typeLabel":"enum\u003cstring>"},"manifest":{"type":"object","additionalProperties":true,"isRequired":true,"uniqueKey":"data.oneOf.0.manifest","typeLabel":"object"},"accountId":{"type":"string","nullable":false,"isRequired":true,"uniqueKey":"data.oneOf.0.accountId","typeLabel":"string"},"id":{"oneOf":[{"type":"string","description":"System-generated provider account ID.","example":"jqfwg345gi25n5ju2yz5iz6m","uniqueKey":"data.oneOf.0.id.oneOf.0","typeLabel":"string"},{"type":"null","description":"System-generated provider account ID.","example":"jqfwg345gi25n5ju2yz5iz6m","uniqueKey":"data.oneOf.0.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.id","typeLabel":"string | null"},"category":{"oneOf":[{"type":"string","enum":["model-provider-accounts","infra-provider-accounts","mcp-server-group","guardrail-config-group"],"description":"Authorization grouping for {category}:* grants. Derived from the provider; null if the provider is unrecognised.","uniqueKey":"data.oneOf.0.category.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["model-provider-accounts","infra-provider-accounts","mcp-server-group","guardrail-config-group"],"description":"Authorization grouping for {category}:* grants. Derived from the provider; null if the provider is unrecognised.","uniqueKey":"data.oneOf.0.category.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.category","typeLabel":"enum\u003cstring> | null"},"integrations":{"oneOf":[{"description":"List of Provider Integrations","type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"System-generated provider integration ID.","example":"jqfwg345gi25n5ju2yz5iz6m","isRequired":true,"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].name","typeLabel":"string"},"fqn":{"type":"string","description":"Human-readable Fully Qualified Name of the provider integration.","isRequired":true,"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].fqn","typeLabel":"string"},"type":{"type":"string","enum":["blob-storage","secret-store","docker-registry","model","vcs","cluster","notification-channel","helm-repo","jwt-auth","mcp-server","guardrail-config","agent-registry","tfy-otel-collector"],"isRequired":true,"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"providerAccountFqn":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].providerAccountFqn","typeLabel":"string"},"tenantName":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].tenantName","typeLabel":"string"},"createdBySubject":{"type":"object","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBySubject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBySubject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBySubject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBySubject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBySubject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBySubject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBySubject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBySubject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBySubject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBySubject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBySubject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBySubject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBySubject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBySubject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBySubject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBySubject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBySubject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"required":["subjectId","subjectType"],"title":"Subject","x-fern-type-name":"Subject","isRequired":true,"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBySubject","typeLabel":"Subject · object"},"manifest":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].manifest.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].manifest.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].manifest","typeLabel":"object | null"},"metadata":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].metadata.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].metadata","typeLabel":"object | null"},"providerAccount":{"oneOf":[{"type":"object","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].providerAccount.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].providerAccount.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].providerAccount","typeLabel":"object | null"},"createdAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time> | null"},"updatedAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].updatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].updatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].updatedAt","typeLabel":"string\u003cdate-time> | null"},"createdBy":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBy.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBy.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX].createdBy","typeLabel":"string | null"}},"required":["id","name","fqn","type","providerAccountFqn","tenantName","createdBySubject"],"title":"ProviderIntegration","x-fern-type-name":"ProviderIntegration","uniqueKey":"data.oneOf.0.integrations.oneOf.0.items.[INDEX]","typeLabel":"ProviderIntegration · object"},"uniqueKey":"data.oneOf.0.integrations.oneOf.0","typeLabel":"ProviderIntegration · object[]"},{"description":"List of Provider Integrations","type":"null","items":{"type":"object","properties":{"id":{"type":"string","description":"System-generated provider integration ID.","example":"jqfwg345gi25n5ju2yz5iz6m"},"name":{"type":"string"},"fqn":{"type":"string","description":"Human-readable Fully Qualified Name of the provider integration."},"type":{"type":"string","enum":["blob-storage","secret-store","docker-registry","model","vcs","cluster","notification-channel","helm-repo","jwt-auth","mcp-server","guardrail-config","agent-registry","tfy-otel-collector"]},"manifest":{"oneOf":[{"type":"object","additionalProperties":true},{"type":"null","additionalProperties":true}]},"metadata":{"oneOf":[{"type":"object","additionalProperties":true},{"type":"null","additionalProperties":true}]},"providerAccountFqn":{"type":"string"},"tenantName":{"type":"string"},"providerAccount":{"oneOf":[{"type":"object"},{"type":"null"}]},"createdBySubject":{"type":"object","properties":{"subjectId":{"type":"string","description":"Subject ID"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"]},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug"},{"type":"null","description":"Subject slug"}]},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name"},{"type":"null","description":"Subject display name"}]},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name"},{"type":"null","description":"Subject PAT name"}]},"subjectControllerName":{"oneOf":[{"type":"string"},{"type":"null"}]},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)"}]}},"required":["subjectId","subjectType"],"title":"Subject","x-fern-type-name":"Subject"},"createdAt":{"oneOf":[{"format":"date-time","type":"string"},{"format":"date-time","type":"null"}]},"updatedAt":{"oneOf":[{"format":"date-time","type":"string"},{"format":"date-time","type":"null"}]},"createdBy":{"oneOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","fqn","type","providerAccountFqn","tenantName","createdBySubject"],"title":"ProviderIntegration","x-fern-type-name":"ProviderIntegration"},"uniqueKey":"data.oneOf.0.integrations.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.integrations","typeLabel":"ProviderIntegration · object[] | null"},"createdBySubject":{"oneOf":[{"type":"object","title":"Subject","required":["subjectId","subjectType"],"x-fern-type-name":"Subject","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.0.createdBySubject.oneOf.0.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.0.createdBySubject.oneOf.0.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.0.createdBySubject.oneOf.0.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.0.createdBySubject.oneOf.0.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.createdBySubject.oneOf.0.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.0.createdBySubject.oneOf.0.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.0.createdBySubject.oneOf.0.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.createdBySubject.oneOf.0.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.0.createdBySubject.oneOf.0.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.0.createdBySubject.oneOf.0.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.createdBySubject.oneOf.0.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.0.createdBySubject.oneOf.0.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.0.createdBySubject.oneOf.0.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.createdBySubject.oneOf.0.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.0.createdBySubject.oneOf.0.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.0.createdBySubject.oneOf.0.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.createdBySubject.oneOf.0.subjectExternalIdentitySlug","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.0.createdBySubject.oneOf.0","typeLabel":"Subject · object"},{"type":"null","uniqueKey":"data.oneOf.0.createdBySubject.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.createdBySubject","typeLabel":"Subject · object | null"},"createdAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.0.createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.0.createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.createdAt","typeLabel":"string\u003cdate-time> | null"},"updatedAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.0.updatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.0.updatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.updatedAt","typeLabel":"string\u003cdate-time> | null"},"createdBy":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.0.createdBy.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.0.createdBy.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.0.createdBy","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.0","typeLabel":"ProviderAccount · object"},{"type":"object","title":"Cluster","description":"The created or updated resource","required":["id","fqn","manifest","tenantName","accountId","createdAt","updatedAt"],"x-fern-type-name":"Cluster","properties":{"id":{"type":"string","description":"System-generated cluster ID.","example":"jqfwg345gi25n5ju2yz5iz6m","isRequired":true,"uniqueKey":"data.oneOf.1.id","typeLabel":"string"},"fqn":{"type":"string","description":"Human-readable Fully Qualified Name of the cluster.","isRequired":true,"uniqueKey":"data.oneOf.1.fqn","typeLabel":"string"},"manifest":{"type":"object","title":"ClusterManifest","required":["type","name","cluster_type","environment_names"],"x-fern-type-name":"ClusterManifest","properties":{"type":{"description":"+value=cluster","type":"string","enum":["cluster"],"default":"cluster","isRequired":true,"uniqueKey":"data.oneOf.1.manifest.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name - 3 to 35 lower case characters long alphanumeric word, may contain - in between, cannot start with a number","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,33}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.1.manifest.name","typeLabel":"string"},"cluster_type":{"description":"The cluster type of this cluster","type":"string","enum":["aws-eks","gcp-gke-standard","azure-aks","generic","civo-talos"],"isRequired":true,"uniqueKey":"data.oneOf.1.manifest.cluster_type","typeLabel":"enum\u003cstring>"},"environment_names":{"description":"Tag the environment like dev, staging or production. You will need to [create environments](https://docs.truefoundry.com/docs/key-concepts#creating-environments) if you don't have already.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.1.manifest.environment_names.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.1.manifest.environment_names","typeLabel":"string[]"},"base_domains":{"description":"One or more base URLs, which can be either a wildcard domain (resulting in app URLs like `\u003capp-name>-\u003cworkspace-name>.\u003cbase-domain-URL>`) or a non-wildcard domain (resulting in app URLs like `\u003cbase-domain-URL>/\u003capp-name>-\u003cworkspace-name>`)\n> Read more about routing [here](https://docs.truefoundry.com/docs/routing) and about 'A' record and domain mapping [here](https://docs.truefoundry.com/docs/setting-up-domain)","type":"array","items":{"type":"string","pattern":"^((((\\*|[a-zA-Z0-9\\-]{1,63})\\.)([a-zA-Z0-9\\-]{1,63}\\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$","uniqueKey":"data.oneOf.1.manifest.base_domains.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.1.manifest.base_domains","typeLabel":"string[]"},"monitoring":{"description":"Monitoring","type":"object","properties":{"loki_url":{"description":"Cluster Loki URL","type":"string","uniqueKey":"data.oneOf.1.manifest.monitoring.loki_url","typeLabel":"string"},"victoria_logs_url":{"description":"Cluster VictoriaLogs URL","type":"string","uniqueKey":"data.oneOf.1.manifest.monitoring.victoria_logs_url","typeLabel":"string"},"prometheus_url":{"description":"Cluster Prometheus URL","type":"string","uniqueKey":"data.oneOf.1.manifest.monitoring.prometheus_url","typeLabel":"string"},"kubecost_url":{"description":"Cluster Kubecost URL","type":"string","uniqueKey":"data.oneOf.1.manifest.monitoring.kubecost_url","typeLabel":"string"}},"uniqueKey":"data.oneOf.1.manifest.monitoring","typeLabel":"object"},"default_registry_fqn":{"description":"Cluster Default Registry","type":"string","uniqueKey":"data.oneOf.1.manifest.default_registry_fqn","typeLabel":"string"},"workbench_config":{"description":"Workbench Config","type":"object","properties":{"notebook_config":{"type":"object","required":["base_domain"],"properties":{"base_domain":{"description":"The base domain for the cluster with which you can access your Notebooks","type":"string","pattern":"^[^\\s]*$","isRequired":true,"uniqueKey":"data.oneOf.1.manifest.workbench_config.notebook_config.base_domain","typeLabel":"string"}},"title":"NotebookConfig","x-fern-type-name":"NotebookConfig","uniqueKey":"data.oneOf.1.manifest.workbench_config.notebook_config","typeLabel":"NotebookConfig · object"},"ssh_server_config":{"type":"object","required":["base_domain","port"],"properties":{"base_domain":{"description":"The base domain for the cluster with which you can access your SSH containers","type":"string","pattern":"^[^\\s]*$","isRequired":true,"uniqueKey":"data.oneOf.1.manifest.workbench_config.ssh_server_config.base_domain","typeLabel":"string"},"port":{"description":"The port for the cluster with which you can access your SSH containers","type":"number","isRequired":true,"uniqueKey":"data.oneOf.1.manifest.workbench_config.ssh_server_config.port","typeLabel":"number"}},"title":"SSHServerConfig","x-fern-type-name":"SSHServerConfig","uniqueKey":"data.oneOf.1.manifest.workbench_config.ssh_server_config","typeLabel":"SSHServerConfig · object"},"default_storage_class":{"description":"The default storage class for the home directory of workbench","type":"string","pattern":"^[^\\s]*$","uniqueKey":"data.oneOf.1.manifest.workbench_config.default_storage_class","typeLabel":"string"}},"uniqueKey":"data.oneOf.1.manifest.workbench_config","typeLabel":"object"},"spark_config":{"type":"object","required":["ui_base_domain"],"properties":{"ui_base_domain":{"description":"The base domain for the cluster with which you can access your Spark UI","type":"string","pattern":"^[^\\s]*$","isRequired":true,"uniqueKey":"data.oneOf.1.manifest.spark_config.ui_base_domain","typeLabel":"string"}},"title":"SparkConfig","x-fern-type-name":"SparkConfig","uniqueKey":"data.oneOf.1.manifest.spark_config","typeLabel":"SparkConfig · object"},"ingress_controller_config":{"type":"object","required":["ingress_class_name"],"properties":{"ingress_class_name":{"description":"Ingress Class Name","type":"string","default":"nginx","isRequired":true,"uniqueKey":"data.oneOf.1.manifest.ingress_controller_config.ingress_class_name","typeLabel":"string"},"tls_enabled":{"description":"Whether TLS is managed by the ingress controller. If enabled, the ingress object will have TLS configuration.","type":"boolean","default":false,"uniqueKey":"data.oneOf.1.manifest.ingress_controller_config.tls_enabled","typeLabel":"boolean"}},"title":"IngressControllerConfig","x-fern-type-name":"IngressControllerConfig","uniqueKey":"data.oneOf.1.manifest.ingress_controller_config","typeLabel":"IngressControllerConfig · object"},"cluster_integration_fqn":{"description":"Cluster Integration FQN","type":"string","uniqueKey":"data.oneOf.1.manifest.cluster_integration_fqn","typeLabel":"string"},"workflow_storage_integration_fqn":{"description":"Workflow Storage Integration","type":"string","uniqueKey":"data.oneOf.1.manifest.workflow_storage_integration_fqn","typeLabel":"string"},"supported_nodepools":{"description":"Add nodepools that are already created in your cluster.\nWhen deploying, applications can choose to schedule from these nodepools.","type":"array","items":{"description":"The nodepools that are already created in your cluster. This will be used to schedule your workloads on particular nodepools.","type":"object","required":["name"],"properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.1.manifest.supported_nodepools.items.[INDEX].name","typeLabel":"string"},"description":{"type":"string","uniqueKey":"data.oneOf.1.manifest.supported_nodepools.items.[INDEX].description","typeLabel":"string"}},"title":"Nodepool","x-fern-type-name":"Nodepool","uniqueKey":"data.oneOf.1.manifest.supported_nodepools.items.[INDEX]","typeLabel":"Nodepool · object"},"uniqueKey":"data.oneOf.1.manifest.supported_nodepools","typeLabel":"Nodepool · object[]"},"node_label_keys":{"description":"The node label keys that this cluster supports.\nNote: You will additionally need to add `truefoundry.com/gpu_type` label for GPU-supported node pools.\nFor more information, check out [this documentation](https://docs.truefoundry.com/docs/generic-control-plane#configuring-node-pools-for-truefoundry).","type":"object","required":["nodepool_selector_label"],"properties":{"nodepool_selector_label":{"description":"The nodepool selector label that this cluster supports","type":"string","isRequired":true,"uniqueKey":"data.oneOf.1.manifest.node_label_keys.nodepool_selector_label","typeLabel":"string"}},"uniqueKey":"data.oneOf.1.manifest.node_label_keys","typeLabel":"object"},"collaborators":{"description":"Collaborators who can access this cluster","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"data.oneOf.1.manifest.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.1.manifest.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"data.oneOf.1.manifest.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"data.oneOf.1.manifest.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.1.manifest.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"data.oneOf.1.manifest.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"data.oneOf.1.manifest","typeLabel":"ClusterManifest · object"},"tenantName":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.1.tenantName","typeLabel":"string"},"accountId":{"type":"string","nullable":false,"isRequired":true,"uniqueKey":"data.oneOf.1.accountId","typeLabel":"string"},"createdAt":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.oneOf.1.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.oneOf.1.updatedAt","typeLabel":"string\u003cdate-time>"},"createdBySubject":{"oneOf":[{"type":"object","title":"Subject","required":["subjectId","subjectType"],"x-fern-type-name":"Subject","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.1.createdBySubject.oneOf.0.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.1.createdBySubject.oneOf.0.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.1.createdBySubject.oneOf.0.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.1.createdBySubject.oneOf.0.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.1.createdBySubject.oneOf.0.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.1.createdBySubject.oneOf.0.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.1.createdBySubject.oneOf.0.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.1.createdBySubject.oneOf.0.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.1.createdBySubject.oneOf.0.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.1.createdBySubject.oneOf.0.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.1.createdBySubject.oneOf.0.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.1.createdBySubject.oneOf.0.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.1.createdBySubject.oneOf.0.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.1.createdBySubject.oneOf.0.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.1.createdBySubject.oneOf.0.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.1.createdBySubject.oneOf.0.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.1.createdBySubject.oneOf.0.subjectExternalIdentitySlug","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.1.createdBySubject.oneOf.0","typeLabel":"Subject · object"},{"type":"null","uniqueKey":"data.oneOf.1.createdBySubject.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.1.createdBySubject","typeLabel":"Subject · object | null"},"createdBy":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.1.createdBy.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.1.createdBy.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.1.createdBy","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.1","typeLabel":"Cluster · object"},{"type":"object","title":"Workspace","description":"The created or updated resource","required":["id","fqn","tenantName","clusterId","createdBySubject","createdAt","updatedAt","manifest","accountId"],"x-fern-type-name":"Workspace","properties":{"id":{"type":"string","description":"System-generated workspace ID.","example":"jqfwg345gi25n5ju2yz5iz6m","isRequired":true,"uniqueKey":"data.oneOf.2.id","typeLabel":"string"},"fqn":{"type":"string","description":"Human-readable Fully Qualified Name of the workspace.","isRequired":true,"uniqueKey":"data.oneOf.2.fqn","typeLabel":"string"},"tenantName":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.2.tenantName","typeLabel":"string"},"clusterId":{"type":"string","description":"System-generated ID of the cluster this workspace belongs to.","example":"jqfwg345gi25n5ju2yz5iz6m","isRequired":true,"uniqueKey":"data.oneOf.2.clusterId","typeLabel":"string"},"createdBySubject":{"type":"object","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.2.createdBySubject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.2.createdBySubject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.2.createdBySubject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.2.createdBySubject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.2.createdBySubject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.2.createdBySubject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.2.createdBySubject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.2.createdBySubject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.2.createdBySubject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.2.createdBySubject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.2.createdBySubject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.2.createdBySubject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.2.createdBySubject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.2.createdBySubject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.2.createdBySubject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.2.createdBySubject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.2.createdBySubject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"required":["subjectId","subjectType"],"title":"Subject","x-fern-type-name":"Subject","isRequired":true,"uniqueKey":"data.oneOf.2.createdBySubject","typeLabel":"Subject · object"},"createdAt":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.oneOf.2.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.oneOf.2.updatedAt","typeLabel":"string\u003cdate-time>"},"manifest":{"type":"object","title":"WorkspaceManifest","required":["type","cluster_fqn","name"],"x-fern-type-name":"WorkspaceManifest","properties":{"type":{"description":"+value=workspace","type":"string","enum":["workspace"],"default":"workspace","isRequired":true,"uniqueKey":"data.oneOf.2.manifest.type","typeLabel":"enum\u003cstring>"},"cluster_fqn":{"description":"Cluster FQN","type":"string","isRequired":true,"uniqueKey":"data.oneOf.2.manifest.cluster_fqn","typeLabel":"string"},"name":{"description":"Name - 3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.2.manifest.name","typeLabel":"string"},"environment_name":{"description":"Tag the environment like dev, staging or production. You will need to [create environments](https://docs.truefoundry.com/docs/key-concepts#creating-environments) if you don't have already.","type":"string","uniqueKey":"data.oneOf.2.manifest.environment_name","typeLabel":"string"},"labels":{"description":"+sort=700","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.2.manifest.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.2.manifest.labels","typeLabel":"object"},"annotations":{"description":"+sort=750","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.2.manifest.annotations.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.2.manifest.annotations","typeLabel":"object"},"collaborators":{"description":"Collaborators","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"data.oneOf.2.manifest.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.2.manifest.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"data.oneOf.2.manifest.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"data.oneOf.2.manifest.collaborators","typeLabel":"Collaborator · object[]"},"permissions":{"description":"Permissions","type":"array","items":{"type":"object","required":["resource_fqn","resource_type","role_id"],"properties":{"resource_fqn":{"description":"The fully qualified name of the resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.2.manifest.permissions.items.[INDEX].resource_fqn","typeLabel":"string"},"resource_type":{"description":"The type of the resource (cluster, workspace, etc.)","type":"string","isRequired":true,"uniqueKey":"data.oneOf.2.manifest.permissions.items.[INDEX].resource_type","typeLabel":"string"},"role_id":{"description":"The role id of the role to be assigned to the service account for that resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.2.manifest.permissions.items.[INDEX].role_id","typeLabel":"string"}},"title":"Permissions","x-fern-type-name":"Permissions","uniqueKey":"data.oneOf.2.manifest.permissions.items.[INDEX]","typeLabel":"Permissions · object"},"uniqueKey":"data.oneOf.2.manifest.permissions","typeLabel":"Permissions · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.2.manifest.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"data.oneOf.2.manifest.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"data.oneOf.2.manifest","typeLabel":"WorkspaceManifest · object"},"accountId":{"type":"string","nullable":false,"description":"System-generated ID of the account.","example":"jqfwg345gi25n5ju2yz5iz6m","isRequired":true,"uniqueKey":"data.oneOf.2.accountId","typeLabel":"string"},"environmentId":{"oneOf":[{"type":"string","description":"System-generated ID of the environment this workspace belongs to.","example":"jqfwg345gi25n5ju2yz5iz6m","uniqueKey":"data.oneOf.2.environmentId.oneOf.0","typeLabel":"string"},{"type":"null","description":"System-generated ID of the environment this workspace belongs to.","example":"jqfwg345gi25n5ju2yz5iz6m","uniqueKey":"data.oneOf.2.environmentId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.2.environmentId","typeLabel":"string | null"},"isSystemWs":{"oneOf":[{"type":"boolean","description":"Whether this workspace is treated as a system workspace. True when the workspace name is in the built-in system workspace list, or when the synced Kubernetes namespace has the label `truefoundry.com/system-workspace=true`. System workspaces can be hidden in the UI to reduce accidental edits or deletion.","uniqueKey":"data.oneOf.2.isSystemWs.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether this workspace is treated as a system workspace. True when the workspace name is in the built-in system workspace list, or when the synced Kubernetes namespace has the label `truefoundry.com/system-workspace=true`. System workspaces can be hidden in the UI to reduce accidental edits or deletion.","uniqueKey":"data.oneOf.2.isSystemWs.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.2.isSystemWs","typeLabel":"boolean | null"},"createdBy":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.2.createdBy.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.2.createdBy.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.2.createdBy","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.2","typeLabel":"Workspace · object"},{"type":"object","title":"MLRepo","description":"The created or updated resource","required":["tenant_name","manifest","created_by_subject","created_at","account_id","id"],"x-fern-type-name":"MLRepo","properties":{"tenant_name":{"type":"string","description":"Tenant Name","example":"truefoundry","isRequired":true,"uniqueKey":"data.oneOf.3.tenant_name","typeLabel":"string"},"manifest":{"type":"object","title":"MLRepoManifest","description":"MLRepo is a repository ML training runs that log params, metrics, plots, images and versioned entities like artifacts, models, prompts, tools, agents","required":["type","name","storage_integration_fqn"],"x-fern-type-name":"MLRepoManifest","example":{"name":"devtest-finetuning-test-420","type":"ml-repo","description":"This is a test MLRepo for fine-tuning experiments.","collaborators":[{"role_id":"mlf-project-admin","subject":"user:user1@example.com"},{"role_id":"mlf-project-admin","subject":"team:teamb"}],"storage_integration_fqn":"truefoundry:aws:aws-4:blob-storage:devtest-test-1"},"properties":{"type":{"description":"+value=ml-repo","type":"string","enum":["ml-repo"],"default":"ml-repo","isRequired":true,"uniqueKey":"data.oneOf.3.manifest.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the ML Repo.","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,98}[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.3.manifest.name","typeLabel":"string"},"storage_integration_fqn":{"description":"Storage Integration to store artifacts and models. A storage integration represents a connected blob storage like AWS S3 / Azure Blob Storage / Google Cloud Storage.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.3.manifest.storage_integration_fqn","typeLabel":"string"},"description":{"description":"Description for the ML Repo.","type":"string","pattern":"^.{0,500}$","uniqueKey":"data.oneOf.3.manifest.description","typeLabel":"string"},"collaborators":{"description":"Users and Teams that have access to MLRepo","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"data.oneOf.3.manifest.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.3.manifest.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"data.oneOf.3.manifest.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"data.oneOf.3.manifest.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.3.manifest.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"data.oneOf.3.manifest.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"data.oneOf.3.manifest","typeLabel":"MLRepoManifest · object"},"created_by_subject":{"type":"object","title":"Subject","required":["subjectId","subjectType"],"x-fern-type-name":"Subject","example":{"subjectId":"cm1xxxp","subjectSlug":"test-user@truefoundry.com","subjectType":"user","subjectDisplayName":"Test User"},"properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.3.created_by_subject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.3.created_by_subject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.3.created_by_subject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.3.created_by_subject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.3.created_by_subject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.3.created_by_subject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.3.created_by_subject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.3.created_by_subject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.3.created_by_subject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.3.created_by_subject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.3.created_by_subject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.3.created_by_subject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.3.created_by_subject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.3.created_by_subject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.3.created_by_subject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.3.created_by_subject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.3.created_by_subject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.oneOf.3.created_by_subject","typeLabel":"Subject · object"},"created_at":{"format":"date-time","type":"string","description":"Created At","isRequired":true,"uniqueKey":"data.oneOf.3.created_at","typeLabel":"string\u003cdate-time>"},"account_id":{"type":"string","nullable":false,"isRequired":true,"uniqueKey":"data.oneOf.3.account_id","typeLabel":"string"},"id":{"type":"string","description":"Experiment Id","example":"420","isRequired":true,"uniqueKey":"data.oneOf.3.id","typeLabel":"string"},"num_runs":{"oneOf":[{"type":"integer","description":"Number of runs","example":10,"uniqueKey":"data.oneOf.3.num_runs.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Number of runs","example":10,"uniqueKey":"data.oneOf.3.num_runs.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.3.num_runs","typeLabel":"integer | null"},"artifact_type_counts":{"oneOf":[{"type":"object","items":{"type":"string"},"additionalProperties":{"type":"integer","uniqueKey":"data.oneOf.3.artifact_type_counts.oneOf.0.additionalProperties","typeLabel":"integer"},"uniqueKey":"data.oneOf.3.artifact_type_counts.oneOf.0","typeLabel":"object"},{"type":"null","items":{"type":"string"},"additionalProperties":{"type":"integer","uniqueKey":"data.oneOf.3.artifact_type_counts.oneOf.1.additionalProperties","typeLabel":"integer"},"uniqueKey":"data.oneOf.3.artifact_type_counts.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.3.artifact_type_counts","typeLabel":"object | null"},"datasets_count":{"oneOf":[{"type":"integer","description":"Number of datasets","example":10,"uniqueKey":"data.oneOf.3.datasets_count.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Number of datasets","example":10,"uniqueKey":"data.oneOf.3.datasets_count.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.3.datasets_count","typeLabel":"integer | null"},"tracing_projects_count":{"oneOf":[{"type":"integer","description":"Total number of tracing projects in this ML Repo","uniqueKey":"data.oneOf.3.tracing_projects_count.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Total number of tracing projects in this ML Repo","uniqueKey":"data.oneOf.3.tracing_projects_count.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.3.tracing_projects_count","typeLabel":"integer | null"}},"uniqueKey":"data.oneOf.3","typeLabel":"MLRepo · object"},{"type":"object","title":"Deployment","description":"The created or updated resource","required":["manifest","createdBySubject"],"x-fern-type-name":"Deployment","properties":{"manifest":{"oneOf":[{"type":"object","title":"Service","description":"Deployment manifest defining the application configuration.","required":["type","replicas","name","image","ports"],"x-fern-type-name":"Service","properties":{"name":{"description":"Name of the service. This uniquely identifies this service in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.name","typeLabel":"string"},"image":{"oneOf":[{"type":"object","title":"Build","description":"Describes how we build our code into a Docker image.","required":["type","build_source","build_spec"],"x-fern-type-name":"Build","properties":{"type":{"description":"+value=build","type":"string","enum":["build"],"default":"build","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.type","typeLabel":"enum\u003cstring>"},"build_source":{"oneOf":[{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_source.oneOf.0.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_source.oneOf.0","typeLabel":"RemoteSource · object"},{"type":"object","title":"GitSource","description":"Describes that we are using code stored in a git repository to build our image","required":["type","repo_url","ref"],"x-fern-type-name":"GitSource","properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"The repository URL.","type":"string","pattern":"^(https?://)\\S+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_source.oneOf.1.repo_url","typeLabel":"string"},"ref":{"description":"The commit SHA.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_source.oneOf.1.ref","typeLabel":"string"},"branch_name":{"description":"Selecting branch will select latest commit SHA of the branch.","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_source.oneOf.1.branch_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_source.oneOf.1","typeLabel":"GitSource · object"},{"type":"object","title":"LocalSource","description":"Describes that we are using code stored in a local developement environment to build our image","required":["type","project_root_path","local_build"],"x-fern-type-name":"LocalSource","properties":{"type":{"description":"+value=local","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"project_root_path":{"description":"Local project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_source.oneOf.2.project_root_path","typeLabel":"string"},"local_build":{"description":"run docker build locally","type":"boolean","default":false,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_source.oneOf.2.local_build","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_source.oneOf.2","typeLabel":"LocalSource · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_source","typeLabel":"RemoteSource · object | GitSource · object | LocalSource · object"},"build_spec":{"oneOf":[{"type":"object","title":"DockerFileBuild","description":"Describes that we are using a dockerfile to build our image","required":["type","dockerfile_path","build_context_path"],"x-fern-type-name":"DockerFileBuild","properties":{"type":{"description":"+value=dockerfile","type":"string","enum":["dockerfile"],"default":"dockerfile","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.0.type","typeLabel":"enum\u003cstring>"},"dockerfile_path":{"description":"The file path of the Dockerfile relative to project root path.","type":"string","default":"./Dockerfile","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.0.dockerfile_path","typeLabel":"string"},"build_context_path":{"description":"Build context path for the Dockerfile relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_context_path","typeLabel":"string"},"command":{"type":"any","description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.0.command","typeLabel":"any"},"build_args":{"description":"Build arguments to pass to docker build","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_args.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_args","typeLabel":"object"},"build_secrets":{"description":"Build secrets you can use in run statements inside dockerfile like RUN --mount=type=secret,id=pip_index_url ... you can learn more about build secrets here https://www.truefoundry.com/docs/docker-build-secrets","type":"array","items":{"type":"object","required":["id","value"],"properties":{"id":{"description":"The ID of the build secret.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].id","typeLabel":"string"},"value":{"description":"The value of the build secret.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].value","typeLabel":"string"},"env":{"description":"The name of the environment variable to inject the secret into.","type":"string","pattern":"^[_a-zA-Z0-9][_a-zA-Z0-9]{1,31}$","uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].env","typeLabel":"string"}},"title":"BuildSecret","x-fern-type-name":"BuildSecret","uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX]","typeLabel":"BuildSecret · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.0.build_secrets","typeLabel":"BuildSecret · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.0","typeLabel":"DockerFileBuild · object"},{"type":"object","title":"PythonBuild","description":"Describes that we are using python to build a container image with a specific python version and pip packages installed.","required":["type","build_context_path","command"],"x-fern-type-name":"PythonBuild","properties":{"type":{"description":"+value=tfy-python-buildpack","type":"string","enum":["tfy-python-buildpack"],"default":"tfy-python-buildpack","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.1.type","typeLabel":"enum\u003cstring>"},"build_context_path":{"description":"Build path relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.1.build_context_path","typeLabel":"string"},"command":{"type":"any","description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.1.command","typeLabel":"any"},"python_version":{"description":"Python version to run your application. Should be one of the tags listed on [Official Python Docker Page](https://hub.docker.com/_/python)","type":"string","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_version","typeLabel":"string"},"requirements_path":{"description":"Path to `requirements.txt` relative to\n`Path to build context`","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.1.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.1.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.1.pip_packages","typeLabel":"string[]"},"python_dependencies":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.1.python_dependencies","typeLabel":"any"},"apt_packages":{"description":"Debian packages to install via `apt get`.\nIn Python/YAML E.g. [\"git\", \"ffmpeg\", \"htop\"]","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.1.apt_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.1.apt_packages","typeLabel":"string[]"},"cuda_version":{"description":"Version of CUDA Toolkit and CUDNN to install in the image\nThese combinations are based off of publically available docker images on docker hub\nYou can also specify a valid tag of the form {cuda_version_number}-cudnn{cudnn_version_number}-{runtime|devel}-ubuntu{ubuntu_version}\nRefer https://hub.docker.com/r/nvidia/cuda/tags for valid set of values\nNote: We use deadsnakes ubuntu ppa to add Python that currently supports only Ubuntu 18.04, 20.04 and 22.04","type":"string","pattern":"^((\\d+\\.\\d+(\\.\\d+)?-cudnn(\\d+)?-(runtime|devel)-ubuntu\\d+\\.\\d+)|11\\.0-cudnn8|11\\.1-cudnn8|11\\.2-cudnn8|11\\.3-cudnn8|11\\.4-cudnn8|11\\.5-cudnn8|11\\.6-cudnn8|11\\.7-cudnn8|11\\.8-cudnn8|12\\.0-cudnn8|12\\.1-cudnn8|12\\.2-cudnn8|12\\.3-cudnn9|12\\.4-cudnn9|12\\.5-cudnn9|12\\.6-cudnn9|12\\.8-cudnn9|12\\.9-cudnn9)$","uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.1.cuda_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec.oneOf.1","typeLabel":"PythonBuild · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.build_spec","typeLabel":"DockerFileBuild · object | PythonBuild · object"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.0","typeLabel":"Build · object"},{"type":"object","title":"Image","description":"Describes that we are using a pre-built image stored in a Docker Image registry","required":["type","image_uri"],"x-fern-type-name":"Image","properties":{"type":{"description":"+value=image","type":"string","enum":["image"],"default":"image","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.1.type","typeLabel":"enum\u003cstring>"},"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.1.image_uri","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.1.docker_registry","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.1.command","typeLabel":"string | string[]"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image.oneOf.1","typeLabel":"Image · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.image","typeLabel":"Build · object | Image · object"},"ports":{"description":"Expose the deployment to make it accessible over the internet or keep it private. Implement authentication to restrict access. [Docs](https://docs.truefoundry.com/docs/define-ports-and-domains)","type":"array","items":{"description":"Describes the ports the service should be exposed to.","type":"object","required":["port","protocol","expose"],"properties":{"port":{"description":"Port number to expose.","type":"integer","minimum":1,"maximum":65535,"default":80,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].port","typeLabel":"integer"},"protocol":{"description":"Protocol for the port.","type":"string","enum":["TCP","UDP"],"default":"TCP","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].protocol","typeLabel":"enum\u003cstring>"},"expose":{"description":"Expose the port","type":"boolean","default":true,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].expose","typeLabel":"boolean"},"app_protocol":{"description":"Application Protocol for the port.\nSelect the application protocol used by your service. For most use cases, this should be `http`(HTTP/1.1).\nIf you are running a gRPC server, select the `grpc` option.\nThis is only applicable if `expose=true`.","type":"string","enum":["http","grpc","tcp"],"default":"http","uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].app_protocol","typeLabel":"enum\u003cstring>"},"host":{"description":"Host e.g. ai.example.com, app.truefoundry.com","type":"string","pattern":"^((([a-zA-Z0-9\\-]{1,63}\\.)([a-zA-Z0-9\\-]{1,63}\\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$","uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].host","typeLabel":"string"},"path":{"description":"Path e.g. /v1/api/ml/, /v2/docs/","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].path","typeLabel":"string"},"rewrite_path_to":{"description":"Rewrite the path prefix to a different path.\nIf `path` is `/v1/api` and `rewrite_path_to` is `/api`. The URI in the HTTP request `http://0.0.0.0:8080/v1/api/houses` will be rewritten to `http://0.0.0.0:8080/api/houses` before the request is forwarded your service.\nDefaults to `/`.\nThis is only applicable if `path` is given.","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].rewrite_path_to","typeLabel":"string"},"auth":{"oneOf":[{"type":"object","title":"BasicAuthCreds","description":"Username and password","required":["type","username","password"],"x-fern-type-name":"BasicAuthCreds","properties":{"type":{"description":"+value=basic_auth","type":"string","enum":["basic_auth"],"default":"basic_auth","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"username":{"description":"Username for service auth - Username for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.0.username","typeLabel":"string"},"password":{"description":"Password for service auth - Password for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.0.password","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.0","typeLabel":"BasicAuthCreds · object"},{"type":"object","title":"JwtAuthConfig","description":"Configure JWT-based authentication using JWKS","required":["type","integration_fqn"],"x-fern-type-name":"JwtAuthConfig","properties":{"type":{"description":"+value=jwt_auth","type":"string","enum":["jwt_auth"],"default":"jwt_auth","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"integration_fqn":{"description":"FQN of the JWT Auth integration. If you can't find your integration here,\nadd it through the [Integrations](/integrations) page","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.1.integration_fqn","typeLabel":"string"},"enable_login":{"description":"Enable login for the service","type":"boolean","uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.1.enable_login","typeLabel":"boolean"},"claims":{"description":"List of key-value pairs of claims to verify in the JWT token","type":"array","items":{"type":"object","required":["key","values"],"properties":{"key":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].key","typeLabel":"string"},"values":{"type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.1.claims","typeLabel":"object[]"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.1","typeLabel":"JwtAuthConfig · object"},{"type":"object","title":"TrueFoundryInteractiveLogin","description":"Login with truefoundry","required":["type"],"x-fern-type-name":"TrueFoundryInteractiveLogin","properties":{"type":{"description":"+value=truefoundry_oauth","type":"string","enum":["truefoundry_oauth"],"default":"truefoundry_oauth","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.2.type","typeLabel":"enum\u003cstring>"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth.oneOf.2","typeLabel":"TrueFoundryInteractiveLogin · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX].auth","typeLabel":"BasicAuthCreds · object | JwtAuthConfig · object | TrueFoundryInteractiveLogin · object"}},"title":"Port","x-fern-type-name":"Port","uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports.items.[INDEX]","typeLabel":"Port · object"},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.ports","typeLabel":"Port · object[]"},"type":{"description":"+value=service","type":"string","enum":["service"],"default":"service","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.type","typeLabel":"enum\u003cstring>"},"replicas":{"oneOf":[{"type":"number","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"maximum":500,"minimum":0,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas.oneOf.0","typeLabel":"number"},{"type":"object","title":"ServiceAutoscaling","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"required":["metrics","min_replicas","max_replicas"],"x-fern-type-name":"ServiceAutoscaling","properties":{"min_replicas":{"description":"Minimum number of replicas to keep available","type":"integer","minimum":0,"default":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas.oneOf.1.min_replicas","typeLabel":"integer"},"max_replicas":{"description":"Maximum number of replicas allowed for the component.","type":"integer","minimum":1,"maximum":500,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas.oneOf.1.max_replicas","typeLabel":"integer"},"metrics":{"oneOf":[{"type":"object","title":"CPUUtilizationMetric","description":"Metrics to use for the autoscaler","required":["type","value"],"x-fern-type-name":"CPUUtilizationMetric","properties":{"type":{"description":"+value=cpu_utilization","type":"string","enum":["cpu_utilization"],"default":"cpu_utilization","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas.oneOf.1.metrics.oneOf.0.type","typeLabel":"enum\u003cstring>"},"value":{"description":"Percentage of cpu request averaged over all replicas which the autoscaler should try to maintain","type":"integer","minimum":1,"maximum":100,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas.oneOf.1.metrics.oneOf.0.value","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas.oneOf.1.metrics.oneOf.0","typeLabel":"CPUUtilizationMetric · object"},{"type":"object","title":"RPSMetric","description":"Metrics to use for the autoscaler","required":["type","value"],"x-fern-type-name":"RPSMetric","properties":{"type":{"description":"+value=rps","type":"string","enum":["rps"],"default":"rps","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas.oneOf.1.metrics.oneOf.1.type","typeLabel":"enum\u003cstring>"},"value":{"description":"Average request per second averaged over all replicas that autoscaler should try to maintain","type":"number","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas.oneOf.1.metrics.oneOf.1.value","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas.oneOf.1.metrics.oneOf.1","typeLabel":"RPSMetric · object"},{"type":"object","title":"CronMetric","description":"Metrics to use for the autoscaler","required":["type","start","end","timezone"],"x-fern-type-name":"CronMetric","properties":{"type":{"description":"+value=cron","type":"string","enum":["cron"],"default":"cron","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas.oneOf.1.metrics.oneOf.2.type","typeLabel":"enum\u003cstring>"},"start":{"description":"Cron expression indicating the start of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas.oneOf.1.metrics.oneOf.2.start","typeLabel":"string"},"end":{"description":"Cron expression indicating the end of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas.oneOf.1.metrics.oneOf.2.end","typeLabel":"string"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","default":"UTC","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas.oneOf.1.metrics.oneOf.2.timezone","typeLabel":"string"},"desired_replicas":{"description":"Desired number of replicas during the given interval. Default value is max_replicas.","type":"integer","minimum":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas.oneOf.1.metrics.oneOf.2.desired_replicas","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas.oneOf.1.metrics.oneOf.2","typeLabel":"CronMetric · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas.oneOf.1.metrics","typeLabel":"CPUUtilizationMetric · object | RPSMetric · object | CronMetric · object"},"polling_interval":{"description":"This is the interval to check each trigger on.","type":"integer","minimum":0,"default":30,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas.oneOf.1.polling_interval","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas.oneOf.1","typeLabel":"ServiceAutoscaling · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.replicas","typeLabel":"number | ServiceAutoscaling · object"},"artifacts_download":{"description":"Download and cache models in a volume to enhance loading speeds and reduce costs by avoiding repeated downloads. [Docs](https://docs.truefoundry.com/docs/download-and-cache-models)","type":"object","required":["artifacts"],"properties":{"artifacts":{"description":"List of artifacts to be cached","type":"array","items":{"oneOf":[{"type":"object","title":"TrueFoundryArtifactSource","description":"Input for Artifact from TrueFoundry Artifact Registry","required":["type","artifact_version_fqn","download_path_env_variable"],"x-fern-type-name":"TrueFoundryArtifactSource","properties":{"type":{"description":"+value=truefoundry-artifact","type":"string","enum":["truefoundry-artifact"],"default":"truefoundry-artifact","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"artifact_version_fqn":{"description":"Artifact or Model Version FQN of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.0.artifact_version_fqn","typeLabel":"string"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.0.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.0","typeLabel":"TrueFoundryArtifactSource · object"},{"type":"object","title":"HuggingfaceArtifactSource","description":"Input for Artifact from Huggingface Model Hub","required":["type","model_id","revision","ignore_patterns","download_path_env_variable"],"x-fern-type-name":"HuggingfaceArtifactSource","properties":{"type":{"description":"+value=huggingface-hub","type":"string","enum":["huggingface-hub"],"default":"huggingface-hub","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"model_id":{"description":"Model ID of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1.model_id","typeLabel":"string"},"revision":{"description":"Revision of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1.revision","typeLabel":"string"},"ignore_patterns":{"description":"List of patterns to ignore while downloading the artifact","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns.items.[INDEX]","typeLabel":"string"},"default":["*.h5","*.ot","*.tflite","*.msgpack"],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns","typeLabel":"string[]"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.artifacts_download.artifacts.items.[INDEX].oneOf.1","typeLabel":"HuggingfaceArtifactSource · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.0.artifacts_download.artifacts.items.[INDEX]","typeLabel":"TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object"},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.artifacts_download.artifacts","typeLabel":"(TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object)[]"},"cache_volume":{"description":"Describes the volume that will be used to cache the models","type":"object","required":["storage_class","cache_size"],"properties":{"storage_class":{"description":"Storage class of the Volume where artifacts will be cached","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.artifacts_download.cache_volume.storage_class","typeLabel":"string"},"cache_size":{"description":"Size of the Volume (in GB) where artifacts will be cached. Should be greater than twice the size of artifacts getting cached","type":"integer","minimum":1,"maximum":10000,"default":200,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.artifacts_download.cache_volume.cache_size","typeLabel":"integer"}},"title":"ArtifactsCacheVolume","x-fern-type-name":"ArtifactsCacheVolume","uniqueKey":"data.oneOf.4.manifest.oneOf.0.artifacts_download.cache_volume","typeLabel":"ArtifactsCacheVolume · object"}},"title":"ArtifactsDownload","x-fern-type-name":"ArtifactsDownload","uniqueKey":"data.oneOf.4.manifest.oneOf.0.artifacts_download","typeLabel":"ArtifactsDownload · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"data.oneOf.4.manifest.oneOf.0.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.0.env","typeLabel":"object | null"},"service_account":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.service_account","typeLabel":"string"},"mounts":{"description":"Configure data to be mounted to service pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-service)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"data.oneOf.4.manifest.oneOf.0.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.0.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"labels":{"description":"Labels","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.labels","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.0.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.0.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"data.oneOf.4.manifest.oneOf.0.kustomize","typeLabel":"Kustomize · object"},"liveness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.liveness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.liveness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.liveness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.liveness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"data.oneOf.4.manifest.oneOf.0.liveness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.liveness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.liveness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.liveness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.liveness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.liveness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.liveness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"data.oneOf.4.manifest.oneOf.0.liveness_probe","typeLabel":"HealthProbe · object"},"readiness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.readiness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.readiness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.readiness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.readiness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"data.oneOf.4.manifest.oneOf.0.readiness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.readiness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.readiness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.readiness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.readiness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.readiness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.readiness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"data.oneOf.4.manifest.oneOf.0.readiness_probe","typeLabel":"HealthProbe · object"},"startup_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.startup_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.startup_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.startup_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.startup_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"data.oneOf.4.manifest.oneOf.0.startup_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.startup_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.startup_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.startup_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.startup_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.startup_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.startup_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"data.oneOf.4.manifest.oneOf.0.startup_probe","typeLabel":"HealthProbe · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.0.workspace_fqn","typeLabel":"string"},"auto_shutdown":{"type":"object","required":["wait_time"],"properties":{"wait_time":{"description":"The period to wait after the last received request before scaling the replicas to 0. This value should be high enough to allow for the replicas of the service to come up to avoid premature scaling down.","type":"integer","minimum":0,"maximum":604800,"default":900,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.auto_shutdown.wait_time","typeLabel":"integer"}},"title":"Autoshutdown","x-fern-type-name":"Autoshutdown","uniqueKey":"data.oneOf.4.manifest.oneOf.0.auto_shutdown","typeLabel":"Autoshutdown · object"},"allow_interception":{"description":"Whether to allow intercepts to be applied for this service.\nThis would inject an additional sidecar in each pod of the service. Not recommended on production","type":"boolean","default":false,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.allow_interception","typeLabel":"boolean"},"rollout_strategy":{"oneOf":[{"type":"object","title":"Rolling","description":"This strategy updates the pods in a rolling fashion such that a subset of the\ntotal pods are replaced with new version at one time.\nA commonly used strategy can be to have maxUnavailablePercentage close to 0 so that there\nis no downtime and keep the maxSurgePercentage to around 25%. If you are anyways running\na large number of pods, the service can often tolerate a few pods going down - so you\nmax maxUnavailablePercentage = 10 and maxSurgePercentage=0. You can read about it more\n[here](https://spot.io/resources/kubernetes-autoscaling/5-kubernetes-deployment-strategies-roll-out-like-the-pros/)","required":["type","max_unavailable_percentage","max_surge_percentage"],"x-fern-type-name":"Rolling","properties":{"type":{"description":"+value=rolling_update","type":"string","enum":["rolling_update"],"default":"rolling_update","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.rollout_strategy.oneOf.0.type","typeLabel":"enum\u003cstring>"},"max_unavailable_percentage":{"description":"Percentage of total replicas that can be brought down at one time.\nFor a value of 25 when replicas are set to 12 this would mean minimum (25% of 12) = 3 pods might be unavailable during the deployment.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.rollout_strategy.oneOf.0.max_unavailable_percentage","typeLabel":"integer"},"max_surge_percentage":{"description":"Percentage of total replicas of updated image that can be brought up over the total replicas count.\nFor a value of 25 when replicas are set to 12 this would mean (12+(25% of 12) = 15) pods might be running at one time.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.rollout_strategy.oneOf.0.max_surge_percentage","typeLabel":"integer"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.rollout_strategy.oneOf.0","typeLabel":"Rolling · object"},{"type":"object","title":"Canary","description":"This strategy brings up the new release without bringing the older release down. Traffic is shifted from the older release to the newer release in a staged manner.\nThis can help with verifying the health of the new release without shifting complete traffic.","required":["type","steps"],"x-fern-type-name":"Canary","properties":{"type":{"description":"+value=canary","type":"string","enum":["canary"],"default":"canary","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.rollout_strategy.oneOf.1.type","typeLabel":"enum\u003cstring>"},"steps":{"description":"These steps would be executed in order to enable shifting of traffic slowly from stable to canary version","type":"array","items":{"type":"object","required":["weight_percentage"],"properties":{"weight_percentage":{"description":"Percentage of total traffic to be shifted to the canary release.\nThe rest will continue to go to the existing deployment","type":"integer","minimum":0,"maximum":100,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.rollout_strategy.oneOf.1.steps.items.[INDEX].weight_percentage","typeLabel":"integer"},"pause_duration":{"description":"Duration for which to pause the release. The release process will wait for these seconds before proceeding to the next step.\nIf this is not set, the step will pause indefinitely on this step","type":"integer","minimum":0,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.rollout_strategy.oneOf.1.steps.items.[INDEX].pause_duration","typeLabel":"integer"}},"title":"CanaryStep","x-fern-type-name":"CanaryStep","uniqueKey":"data.oneOf.4.manifest.oneOf.0.rollout_strategy.oneOf.1.steps.items.[INDEX]","typeLabel":"CanaryStep · object"},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.rollout_strategy.oneOf.1.steps","typeLabel":"CanaryStep · object[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.rollout_strategy.oneOf.1","typeLabel":"Canary · object"},{"type":"object","title":"BlueGreen","description":"This strategy brings up the new release completely before switching the complete load to the new release.\nThis minimizes the time that two versions are serving traffic at the same time.","required":["type"],"x-fern-type-name":"BlueGreen","properties":{"type":{"description":"+value=blue_green","type":"string","enum":["blue_green"],"default":"blue_green","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.rollout_strategy.oneOf.2.type","typeLabel":"enum\u003cstring>"},"enable_auto_promotion":{"description":"Promote the new release to handle the complete traffic. A manual promotion would be needed if this is disabled","type":"boolean","default":false,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.rollout_strategy.oneOf.2.enable_auto_promotion","typeLabel":"boolean"},"auto_promotion_seconds":{"description":"Promote the new release to handle the complete traffic after waiting for these many seconds","type":"integer","minimum":0,"default":30,"uniqueKey":"data.oneOf.4.manifest.oneOf.0.rollout_strategy.oneOf.2.auto_promotion_seconds","typeLabel":"integer"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.0.rollout_strategy.oneOf.2","typeLabel":"BlueGreen · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.0.rollout_strategy","typeLabel":"Rolling · object | Canary · object | BlueGreen · object"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.0","typeLabel":"Service · object"},{"type":"object","title":"AsyncService","description":"Deployment manifest defining the application configuration.","required":["type","replicas","worker_config","name","image","ports"],"x-fern-type-name":"AsyncService","properties":{"name":{"description":"Name of the service. This uniquely identifies this service in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.name","typeLabel":"string"},"image":{"oneOf":[{"type":"object","title":"Build","description":"Describes how we build our code into a Docker image.","required":["type","build_source","build_spec"],"x-fern-type-name":"Build","properties":{"type":{"description":"+value=build","type":"string","enum":["build"],"default":"build","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.type","typeLabel":"enum\u003cstring>"},"build_source":{"oneOf":[{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_source.oneOf.0.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_source.oneOf.0","typeLabel":"RemoteSource · object"},{"type":"object","title":"GitSource","description":"Describes that we are using code stored in a git repository to build our image","required":["type","repo_url","ref"],"x-fern-type-name":"GitSource","properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"The repository URL.","type":"string","pattern":"^(https?://)\\S+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_source.oneOf.1.repo_url","typeLabel":"string"},"ref":{"description":"The commit SHA.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_source.oneOf.1.ref","typeLabel":"string"},"branch_name":{"description":"Selecting branch will select latest commit SHA of the branch.","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_source.oneOf.1.branch_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_source.oneOf.1","typeLabel":"GitSource · object"},{"type":"object","title":"LocalSource","description":"Describes that we are using code stored in a local developement environment to build our image","required":["type","project_root_path","local_build"],"x-fern-type-name":"LocalSource","properties":{"type":{"description":"+value=local","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"project_root_path":{"description":"Local project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_source.oneOf.2.project_root_path","typeLabel":"string"},"local_build":{"description":"run docker build locally","type":"boolean","default":false,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_source.oneOf.2.local_build","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_source.oneOf.2","typeLabel":"LocalSource · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_source","typeLabel":"RemoteSource · object | GitSource · object | LocalSource · object"},"build_spec":{"oneOf":[{"type":"object","title":"DockerFileBuild","description":"Describes that we are using a dockerfile to build our image","required":["type","dockerfile_path","build_context_path"],"x-fern-type-name":"DockerFileBuild","properties":{"type":{"description":"+value=dockerfile","type":"string","enum":["dockerfile"],"default":"dockerfile","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.0.type","typeLabel":"enum\u003cstring>"},"dockerfile_path":{"description":"The file path of the Dockerfile relative to project root path.","type":"string","default":"./Dockerfile","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.0.dockerfile_path","typeLabel":"string"},"build_context_path":{"description":"Build context path for the Dockerfile relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_context_path","typeLabel":"string"},"command":{"type":"any","description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.0.command","typeLabel":"any"},"build_args":{"description":"Build arguments to pass to docker build","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_args.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_args","typeLabel":"object"},"build_secrets":{"description":"Build secrets you can use in run statements inside dockerfile like RUN --mount=type=secret,id=pip_index_url ... you can learn more about build secrets here https://www.truefoundry.com/docs/docker-build-secrets","type":"array","items":{"type":"object","required":["id","value"],"properties":{"id":{"description":"The ID of the build secret.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].id","typeLabel":"string"},"value":{"description":"The value of the build secret.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].value","typeLabel":"string"},"env":{"description":"The name of the environment variable to inject the secret into.","type":"string","pattern":"^[_a-zA-Z0-9][_a-zA-Z0-9]{1,31}$","uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].env","typeLabel":"string"}},"title":"BuildSecret","x-fern-type-name":"BuildSecret","uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX]","typeLabel":"BuildSecret · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.0.build_secrets","typeLabel":"BuildSecret · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.0","typeLabel":"DockerFileBuild · object"},{"type":"object","title":"PythonBuild","description":"Describes that we are using python to build a container image with a specific python version and pip packages installed.","required":["type","build_context_path","command"],"x-fern-type-name":"PythonBuild","properties":{"type":{"description":"+value=tfy-python-buildpack","type":"string","enum":["tfy-python-buildpack"],"default":"tfy-python-buildpack","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.1.type","typeLabel":"enum\u003cstring>"},"build_context_path":{"description":"Build path relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.1.build_context_path","typeLabel":"string"},"command":{"type":"any","description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.1.command","typeLabel":"any"},"python_version":{"description":"Python version to run your application. Should be one of the tags listed on [Official Python Docker Page](https://hub.docker.com/_/python)","type":"string","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_version","typeLabel":"string"},"requirements_path":{"description":"Path to `requirements.txt` relative to\n`Path to build context`","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.1.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.1.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.1.pip_packages","typeLabel":"string[]"},"python_dependencies":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.1.python_dependencies","typeLabel":"any"},"apt_packages":{"description":"Debian packages to install via `apt get`.\nIn Python/YAML E.g. [\"git\", \"ffmpeg\", \"htop\"]","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.1.apt_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.1.apt_packages","typeLabel":"string[]"},"cuda_version":{"description":"Version of CUDA Toolkit and CUDNN to install in the image\nThese combinations are based off of publically available docker images on docker hub\nYou can also specify a valid tag of the form {cuda_version_number}-cudnn{cudnn_version_number}-{runtime|devel}-ubuntu{ubuntu_version}\nRefer https://hub.docker.com/r/nvidia/cuda/tags for valid set of values\nNote: We use deadsnakes ubuntu ppa to add Python that currently supports only Ubuntu 18.04, 20.04 and 22.04","type":"string","pattern":"^((\\d+\\.\\d+(\\.\\d+)?-cudnn(\\d+)?-(runtime|devel)-ubuntu\\d+\\.\\d+)|11\\.0-cudnn8|11\\.1-cudnn8|11\\.2-cudnn8|11\\.3-cudnn8|11\\.4-cudnn8|11\\.5-cudnn8|11\\.6-cudnn8|11\\.7-cudnn8|11\\.8-cudnn8|12\\.0-cudnn8|12\\.1-cudnn8|12\\.2-cudnn8|12\\.3-cudnn9|12\\.4-cudnn9|12\\.5-cudnn9|12\\.6-cudnn9|12\\.8-cudnn9|12\\.9-cudnn9)$","uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.1.cuda_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec.oneOf.1","typeLabel":"PythonBuild · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.build_spec","typeLabel":"DockerFileBuild · object | PythonBuild · object"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.0","typeLabel":"Build · object"},{"type":"object","title":"Image","description":"Describes that we are using a pre-built image stored in a Docker Image registry","required":["type","image_uri"],"x-fern-type-name":"Image","properties":{"type":{"description":"+value=image","type":"string","enum":["image"],"default":"image","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.1.type","typeLabel":"enum\u003cstring>"},"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.1.image_uri","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.1.docker_registry","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.1.command","typeLabel":"string | string[]"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image.oneOf.1","typeLabel":"Image · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.image","typeLabel":"Build · object | Image · object"},"ports":{"description":"Expose the deployment to make it accessible over the internet or keep it private. Implement authentication to restrict access. [Docs](https://docs.truefoundry.com/docs/define-ports-and-domains)","type":"array","items":{"description":"Describes the ports the service should be exposed to.","type":"object","required":["port","protocol","expose"],"properties":{"port":{"description":"Port number to expose.","type":"integer","minimum":1,"maximum":65535,"default":80,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].port","typeLabel":"integer"},"protocol":{"description":"Protocol for the port.","type":"string","enum":["TCP","UDP"],"default":"TCP","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].protocol","typeLabel":"enum\u003cstring>"},"expose":{"description":"Expose the port","type":"boolean","default":true,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].expose","typeLabel":"boolean"},"app_protocol":{"description":"Application Protocol for the port.\nSelect the application protocol used by your service. For most use cases, this should be `http`(HTTP/1.1).\nIf you are running a gRPC server, select the `grpc` option.\nThis is only applicable if `expose=true`.","type":"string","enum":["http","grpc","tcp"],"default":"http","uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].app_protocol","typeLabel":"enum\u003cstring>"},"host":{"description":"Host e.g. ai.example.com, app.truefoundry.com","type":"string","pattern":"^((([a-zA-Z0-9\\-]{1,63}\\.)([a-zA-Z0-9\\-]{1,63}\\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$","uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].host","typeLabel":"string"},"path":{"description":"Path e.g. /v1/api/ml/, /v2/docs/","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].path","typeLabel":"string"},"rewrite_path_to":{"description":"Rewrite the path prefix to a different path.\nIf `path` is `/v1/api` and `rewrite_path_to` is `/api`. The URI in the HTTP request `http://0.0.0.0:8080/v1/api/houses` will be rewritten to `http://0.0.0.0:8080/api/houses` before the request is forwarded your service.\nDefaults to `/`.\nThis is only applicable if `path` is given.","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].rewrite_path_to","typeLabel":"string"},"auth":{"oneOf":[{"type":"object","title":"BasicAuthCreds","description":"Username and password","required":["type","username","password"],"x-fern-type-name":"BasicAuthCreds","properties":{"type":{"description":"+value=basic_auth","type":"string","enum":["basic_auth"],"default":"basic_auth","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"username":{"description":"Username for service auth - Username for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.0.username","typeLabel":"string"},"password":{"description":"Password for service auth - Password for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.0.password","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.0","typeLabel":"BasicAuthCreds · object"},{"type":"object","title":"JwtAuthConfig","description":"Configure JWT-based authentication using JWKS","required":["type","integration_fqn"],"x-fern-type-name":"JwtAuthConfig","properties":{"type":{"description":"+value=jwt_auth","type":"string","enum":["jwt_auth"],"default":"jwt_auth","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"integration_fqn":{"description":"FQN of the JWT Auth integration. If you can't find your integration here,\nadd it through the [Integrations](/integrations) page","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.1.integration_fqn","typeLabel":"string"},"enable_login":{"description":"Enable login for the service","type":"boolean","uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.1.enable_login","typeLabel":"boolean"},"claims":{"description":"List of key-value pairs of claims to verify in the JWT token","type":"array","items":{"type":"object","required":["key","values"],"properties":{"key":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].key","typeLabel":"string"},"values":{"type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX].values","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.1.claims.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.1.claims","typeLabel":"object[]"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.1.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.1","typeLabel":"JwtAuthConfig · object"},{"type":"object","title":"TrueFoundryInteractiveLogin","description":"Login with truefoundry","required":["type"],"x-fern-type-name":"TrueFoundryInteractiveLogin","properties":{"type":{"description":"+value=truefoundry_oauth","type":"string","enum":["truefoundry_oauth"],"default":"truefoundry_oauth","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.2.type","typeLabel":"enum\u003cstring>"},"bypass_auth_paths":{"description":"List of paths that will bypass auth.\nneeds to start with a forward slash(/) and should not contain wildcards(*)","type":"array","items":{"type":"string","pattern":"^/[^*]*","uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.2.bypass_auth_paths","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth.oneOf.2","typeLabel":"TrueFoundryInteractiveLogin · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX].auth","typeLabel":"BasicAuthCreds · object | JwtAuthConfig · object | TrueFoundryInteractiveLogin · object"}},"title":"Port","x-fern-type-name":"Port","uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports.items.[INDEX]","typeLabel":"Port · object"},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.ports","typeLabel":"Port · object[]"},"type":{"description":"+value=async-service","type":"string","enum":["async-service"],"default":"async-service","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.type","typeLabel":"enum\u003cstring>"},"replicas":{"oneOf":[{"type":"number","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"maximum":500,"minimum":0,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.0","typeLabel":"number"},{"type":"object","title":"AsyncServiceAutoscaling","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"required":["metrics","min_replicas","max_replicas"],"x-fern-type-name":"AsyncServiceAutoscaling","properties":{"min_replicas":{"description":"Minimum number of replicas to keep available","type":"integer","minimum":0,"default":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.min_replicas","typeLabel":"integer"},"max_replicas":{"description":"Maximum number of replicas allowed for the component.","type":"integer","minimum":1,"maximum":500,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.max_replicas","typeLabel":"integer"},"metrics":{"oneOf":[{"type":"object","title":"SQSQueueMetricConfig","description":"Metrics to use for the autoscaler","required":["type","queue_length"],"x-fern-type-name":"SQSQueueMetricConfig","properties":{"type":{"description":"+value=sqs","type":"string","enum":["sqs"],"default":"sqs","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.0.type","typeLabel":"enum\u003cstring>"},"queue_length":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the queue and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.0.queue_length","typeLabel":"integer"},"auth":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.0.auth","typeLabel":"any"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.0","typeLabel":"SQSQueueMetricConfig · object"},{"type":"object","title":"NATSMetricConfig","description":"Metrics to use for the autoscaler","required":["type","lag_threshold"],"x-fern-type-name":"NATSMetricConfig","properties":{"type":{"description":"+value=nats","type":"string","enum":["nats"],"default":"nats","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.1.type","typeLabel":"enum\u003cstring>"},"lag_threshold":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the stream and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.1.lag_threshold","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.1","typeLabel":"NATSMetricConfig · object"},{"type":"object","title":"KafkaMetricConfig","description":"Metrics to use for the autoscaler","required":["type","lag_threshold"],"x-fern-type-name":"KafkaMetricConfig","properties":{"type":{"description":"+value=kafka","type":"string","enum":["kafka"],"default":"kafka","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.2.type","typeLabel":"enum\u003cstring>"},"lag_threshold":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the stream and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.2.lag_threshold","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.2","typeLabel":"KafkaMetricConfig · object"},{"type":"object","title":"CronMetric","description":"Metrics to use for the autoscaler","required":["type","start","end","timezone"],"x-fern-type-name":"CronMetric","properties":{"type":{"description":"+value=cron","type":"string","enum":["cron"],"default":"cron","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.3.type","typeLabel":"enum\u003cstring>"},"start":{"description":"Cron expression indicating the start of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.3.start","typeLabel":"string"},"end":{"description":"Cron expression indicating the end of the cron schedule.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.3.end","typeLabel":"string"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","default":"UTC","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.3.timezone","typeLabel":"string"},"desired_replicas":{"description":"Desired number of replicas during the given interval. Default value is max_replicas.","type":"integer","minimum":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.3.desired_replicas","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.3","typeLabel":"CronMetric · object"},{"type":"object","title":"AMQPMetricConfig","description":"Metrics to use for the autoscaler","required":["type","queue_length"],"x-fern-type-name":"AMQPMetricConfig","properties":{"type":{"description":"+value=amqp","type":"string","enum":["amqp"],"default":"amqp","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.4.type","typeLabel":"enum\u003cstring>"},"queue_length":{"description":"Upper limit of the number of backlog messages the auto-scaler will try to maintain per replica. If you set this number to 10 and have 30 messages in the stream and one replica, the auto-scaler will scale the number of replicas to 3.","type":"integer","minimum":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.4.queue_length","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics.oneOf.4","typeLabel":"AMQPMetricConfig · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.metrics","typeLabel":"SQSQueueMetricConfig · object | NATSMetricConfig · object | KafkaMetricConfig · object | CronMetric · object | AMQPMetricConfig · object"},"polling_interval":{"description":"This is the interval to check each trigger on.","type":"integer","minimum":0,"default":30,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1.polling_interval","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas.oneOf.1","typeLabel":"AsyncServiceAutoscaling · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.replicas","typeLabel":"number | AsyncServiceAutoscaling · object"},"worker_config":{"type":"object","required":["input_config","num_concurrent_workers"],"properties":{"input_config":{"oneOf":[{"type":"object","title":"SQSInputConfig","description":"Describes the configuration for the input SQS worker","required":["type","queue_url","region_name","visibility_timeout","wait_time_seconds"],"x-fern-type-name":"SQSInputConfig","properties":{"type":{"description":"+value=sqs","type":"string","enum":["sqs"],"default":"sqs","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"queue_url":{"description":"AWS SQS Queue URL of Subscriber","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.0.queue_url","typeLabel":"string"},"region_name":{"description":"AWS Region Name","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.0.region_name","typeLabel":"string"},"visibility_timeout":{"description":"A period during which Amazon SQS prevents all consumers from receiving and processing the message. If one message takes 5 seconds to process, you can set this number to 7 or any number higher than 5. This will ensure that while the message is being processed, it will not be available to other replicas. For more information, see [here](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html)","type":"integer","minimum":1,"maximum":43200,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.0.visibility_timeout","typeLabel":"integer"},"wait_time_seconds":{"description":"Wait timeout for long polling. For more information, see [here](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html)","type":"integer","minimum":1,"maximum":20,"default":19,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.0.wait_time_seconds","typeLabel":"integer"},"auth":{"type":"object","required":["aws_access_key_id","aws_secret_access_key"],"properties":{"aws_access_key_id":{"description":"AWS Access Key ID","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.0.auth.aws_access_key_id","typeLabel":"string"},"aws_secret_access_key":{"description":"AWS Secret Access Key for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.0.auth.aws_secret_access_key","typeLabel":"string"},"aws_session_token":{"description":"AWS Session Token, only required when using temporary credentials","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.0.auth.aws_session_token","typeLabel":"string"}},"title":"AWSAccessKeyAuth","x-fern-type-name":"AWSAccessKeyAuth","uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.0.auth","typeLabel":"AWSAccessKeyAuth · object"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.0","typeLabel":"SQSInputConfig · object"},{"type":"object","title":"NATSInputConfig","description":"Describes the configuration for the input NATS worker","required":["type","nats_url","stream_name","root_subject","consumer_name","wait_time_seconds"],"x-fern-type-name":"NATSInputConfig","properties":{"type":{"description":"+value=nats","type":"string","enum":["nats"],"default":"nats","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nats_url":{"description":"Input NATS URL","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.1.nats_url","typeLabel":"string"},"stream_name":{"description":"Name of the NATS stream","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.1.stream_name","typeLabel":"string"},"root_subject":{"description":"Root subject of input NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-.]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.1.root_subject","typeLabel":"string"},"consumer_name":{"description":"Consumer name of input NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-_]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.1.consumer_name","typeLabel":"string"},"wait_time_seconds":{"description":"Wait timeout for long polling.","type":"integer","minimum":1,"maximum":20,"default":19,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.1.wait_time_seconds","typeLabel":"integer"},"nats_metrics_url":{"description":"URL for the NATS metrics endpoint. It is compulsory if you want to use NATS autoscaling.","type":"string","pattern":"^(http(s?)://).*$","uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.1.nats_metrics_url","typeLabel":"string"},"auth":{"description":"NATS User Password Authentication","type":"object","required":["account_name","user","password"],"properties":{"account_name":{"description":"Name of the NATS account","type":"string","default":"$G","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.1.auth.account_name","typeLabel":"string"},"user":{"description":"User for NATS authentication","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.1.auth.user","typeLabel":"string"},"password":{"description":"Password for NATS authentication","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.1.auth.password","typeLabel":"string"}},"title":"NATSUserPasswordAuth","x-fern-type-name":"NATSUserPasswordAuth","uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.1.auth","typeLabel":"NATSUserPasswordAuth · object"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.1","typeLabel":"NATSInputConfig · object"},{"type":"object","title":"KafkaInputConfig","description":"Describes the configuration for the input Kafka worker","required":["type","bootstrap_servers","topic_name","consumer_group","tls"],"x-fern-type-name":"KafkaInputConfig","properties":{"type":{"description":"+value=kafka","type":"string","enum":["kafka"],"default":"kafka","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.2.type","typeLabel":"enum\u003cstring>"},"bootstrap_servers":{"description":"'Kafka Bootstrap servers - Comma separated list of Kafka brokers \"hostname:port\" to connect to for bootstrap'","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.2.bootstrap_servers","typeLabel":"string"},"topic_name":{"description":"Kafka topic to subscribe to","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.2.topic_name","typeLabel":"string"},"consumer_group":{"description":"The name of the consumer group to join for dynamic partition assignment","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.2.consumer_group","typeLabel":"string"},"tls":{"description":"TLS configuration for SASL authentication","type":"boolean","default":true,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.2.tls","typeLabel":"boolean"},"wait_time_seconds":{"description":"Wait timeout for long polling.","type":"integer","minimum":1,"maximum":300,"default":10,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.2.wait_time_seconds","typeLabel":"integer"},"auth":{"type":"object","required":["username","password"],"properties":{"username":{"description":"Username for SASL authentication","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.2.auth.username","typeLabel":"string"},"password":{"description":"Password for SASL authentication","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.2.auth.password","typeLabel":"string"}},"title":"KafkaSASLAuth","x-fern-type-name":"KafkaSASLAuth","uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.2.auth","typeLabel":"KafkaSASLAuth · object"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.2","typeLabel":"KafkaInputConfig · object"},{"type":"object","title":"AMQPInputConfig","description":"Describes the configuration for the input AMQP worker","required":["type","url","queue_name","wait_time_seconds"],"x-fern-type-name":"AMQPInputConfig","properties":{"type":{"description":"+value=amqp","type":"string","enum":["amqp"],"default":"amqp","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.3.type","typeLabel":"enum\u003cstring>"},"url":{"description":"AMQP Queue URL of Subscriber","type":"string","pattern":"^(amqp|amqps?)://(?:[^:@]+(?::[^:@]+)?@)?([^/?]+)(?:/([^?]+))?/?([^?]+)?(?:\\?(.*))?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.3.url","typeLabel":"string"},"queue_name":{"description":"AMQP Queue Name","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.3.queue_name","typeLabel":"string"},"wait_time_seconds":{"description":"Wait timeout for long polling.","type":"integer","minimum":1,"default":5,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.3.wait_time_seconds","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config.oneOf.3","typeLabel":"AMQPInputConfig · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.input_config","typeLabel":"SQSInputConfig · object | NATSInputConfig · object | KafkaInputConfig · object | AMQPInputConfig · object"},"num_concurrent_workers":{"description":"Number of concurrent workers to spawn for the processor","type":"integer","minimum":1,"maximum":10,"default":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.num_concurrent_workers","typeLabel":"integer"},"output_config":{"oneOf":[{"type":"object","title":"SQSOutputConfig","description":"Describes the configuration for the output SQS worker","required":["type","queue_url","region_name"],"x-fern-type-name":"SQSOutputConfig","properties":{"type":{"description":"+value=sqs","type":"string","enum":["sqs"],"default":"sqs","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"queue_url":{"description":"AWS SQS Queue URL of Publisher","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.0.queue_url","typeLabel":"string"},"region_name":{"description":"AWS Region Name","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.0.region_name","typeLabel":"string"},"auth":{"type":"object","required":["aws_access_key_id","aws_secret_access_key"],"properties":{"aws_access_key_id":{"description":"AWS Access Key ID","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.0.auth.aws_access_key_id","typeLabel":"string"},"aws_secret_access_key":{"description":"AWS Secret Access Key for the user to authenticate with","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.0.auth.aws_secret_access_key","typeLabel":"string"},"aws_session_token":{"description":"AWS Session Token, only required when using temporary credentials","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.0.auth.aws_session_token","typeLabel":"string"}},"title":"AWSAccessKeyAuth","x-fern-type-name":"AWSAccessKeyAuth","uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.0.auth","typeLabel":"AWSAccessKeyAuth · object"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.0","typeLabel":"SQSOutputConfig · object"},{"type":"object","title":"NATSOutputConfig","description":"Describes the configuration for the output NATS worker","required":["type","nats_url","root_subject"],"x-fern-type-name":"NATSOutputConfig","properties":{"type":{"description":"+value=nats","type":"string","enum":["nats"],"default":"nats","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nats_url":{"description":"Output NATS URL","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.1.nats_url","typeLabel":"string"},"root_subject":{"description":"Root subject of output NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-.]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.1.root_subject","typeLabel":"string"},"auth":{"description":"NATS User Password Authentication","type":"object","required":["account_name","user","password"],"properties":{"account_name":{"description":"Name of the NATS account","type":"string","default":"$G","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.1.auth.account_name","typeLabel":"string"},"user":{"description":"User for NATS authentication","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.1.auth.user","typeLabel":"string"},"password":{"description":"Password for NATS authentication","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.1.auth.password","typeLabel":"string"}},"title":"NATSUserPasswordAuth","x-fern-type-name":"NATSUserPasswordAuth","uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.1.auth","typeLabel":"NATSUserPasswordAuth · object"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.1","typeLabel":"NATSOutputConfig · object"},{"type":"object","title":"CoreNATSOutputConfig","description":"Describes the configuration for the output Core NATS worker","required":["type","nats_url","root_subject"],"x-fern-type-name":"CoreNATSOutputConfig","properties":{"type":{"description":"+value=core-nats","type":"string","enum":["core-nats"],"default":"core-nats","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.2.type","typeLabel":"enum\u003cstring>"},"nats_url":{"description":"Output NATS URL","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.2.nats_url","typeLabel":"string"},"root_subject":{"description":"Root subject of output NATS","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9\\-.]+[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.2.root_subject","typeLabel":"string"},"auth":{"description":"NATS User Password Authentication","type":"object","required":["account_name","user","password"],"properties":{"account_name":{"description":"Name of the NATS account","type":"string","default":"$G","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.2.auth.account_name","typeLabel":"string"},"user":{"description":"User for NATS authentication","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.2.auth.user","typeLabel":"string"},"password":{"description":"Password for NATS authentication","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.2.auth.password","typeLabel":"string"}},"title":"NATSUserPasswordAuth","x-fern-type-name":"NATSUserPasswordAuth","uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.2.auth","typeLabel":"NATSUserPasswordAuth · object"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.2","typeLabel":"CoreNATSOutputConfig · object"},{"type":"object","title":"KafkaOutputConfig","description":"Describes the configuration for the output Kafka worker","required":["type","bootstrap_servers","topic_name","tls"],"x-fern-type-name":"KafkaOutputConfig","properties":{"type":{"description":"+value=kafka","type":"string","enum":["kafka"],"default":"kafka","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.3.type","typeLabel":"enum\u003cstring>"},"bootstrap_servers":{"description":"'Kafka Bootstrap servers - Comma separated list of Kafka brokers \"hostname:port\" to connect to for bootstrap'","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.3.bootstrap_servers","typeLabel":"string"},"topic_name":{"description":"Kafka topic to publish to","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.3.topic_name","typeLabel":"string"},"tls":{"description":"TLS configuration for SASL authentication","type":"boolean","default":true,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.3.tls","typeLabel":"boolean"},"auth":{"type":"object","required":["username","password"],"properties":{"username":{"description":"Username for SASL authentication","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.3.auth.username","typeLabel":"string"},"password":{"description":"Password for SASL authentication","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.3.auth.password","typeLabel":"string"}},"title":"KafkaSASLAuth","x-fern-type-name":"KafkaSASLAuth","uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.3.auth","typeLabel":"KafkaSASLAuth · object"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.3","typeLabel":"KafkaOutputConfig · object"},{"type":"object","title":"AMQPOutputConfig","description":"Describes the configuration for the output AMQP worker","required":["type","url","routing_key"],"x-fern-type-name":"AMQPOutputConfig","properties":{"type":{"description":"+value=amqp","type":"string","enum":["amqp"],"default":"amqp","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.4.type","typeLabel":"enum\u003cstring>"},"url":{"description":"AMQP Queue URL of Publisher","type":"string","pattern":"^(amqp|amqps?)://(?:[^:@]+(?::[^:@]+)?@)?([^/?]+)(?:/([^?]+))?/?([^?]+)?(?:\\?(.*))?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.4.url","typeLabel":"string"},"routing_key":{"description":"AMQP Routing Key to publish to.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.4.routing_key","typeLabel":"string"},"exchange_name":{"description":"AMQP Exchange Name","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.4.exchange_name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config.oneOf.4","typeLabel":"AMQPOutputConfig · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config.output_config","typeLabel":"SQSOutputConfig · object | NATSOutputConfig · object | CoreNATSOutputConfig · object | KafkaOutputConfig · object | AMQPOutputConfig · object"}},"title":"WorkerConfig","x-fern-type-name":"WorkerConfig","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.worker_config","typeLabel":"WorkerConfig · object"},"artifacts_download":{"description":"Download and cache models in a volume to enhance loading speeds and reduce costs by avoiding repeated downloads. [Docs](https://docs.truefoundry.com/docs/download-and-cache-models)","type":"object","required":["artifacts"],"properties":{"artifacts":{"description":"List of artifacts to be cached","type":"array","items":{"oneOf":[{"type":"object","title":"TrueFoundryArtifactSource","description":"Input for Artifact from TrueFoundry Artifact Registry","required":["type","artifact_version_fqn","download_path_env_variable"],"x-fern-type-name":"TrueFoundryArtifactSource","properties":{"type":{"description":"+value=truefoundry-artifact","type":"string","enum":["truefoundry-artifact"],"default":"truefoundry-artifact","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"artifact_version_fqn":{"description":"Artifact or Model Version FQN of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.0.artifact_version_fqn","typeLabel":"string"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.0.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.0","typeLabel":"TrueFoundryArtifactSource · object"},{"type":"object","title":"HuggingfaceArtifactSource","description":"Input for Artifact from Huggingface Model Hub","required":["type","model_id","revision","ignore_patterns","download_path_env_variable"],"x-fern-type-name":"HuggingfaceArtifactSource","properties":{"type":{"description":"+value=huggingface-hub","type":"string","enum":["huggingface-hub"],"default":"huggingface-hub","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"model_id":{"description":"Model ID of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1.model_id","typeLabel":"string"},"revision":{"description":"Revision of the artifact to be downloaded","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1.revision","typeLabel":"string"},"ignore_patterns":{"description":"List of patterns to ignore while downloading the artifact","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns.items.[INDEX]","typeLabel":"string"},"default":["*.h5","*.ot","*.tflite","*.msgpack"],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1.ignore_patterns","typeLabel":"string[]"},"download_path_env_variable":{"description":"Environment variable which will contain the download path of the artifact","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1.download_path_env_variable","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.artifacts_download.artifacts.items.[INDEX].oneOf.1","typeLabel":"HuggingfaceArtifactSource · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.1.artifacts_download.artifacts.items.[INDEX]","typeLabel":"TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object"},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.artifacts_download.artifacts","typeLabel":"(TrueFoundryArtifactSource · object | HuggingfaceArtifactSource · object)[]"},"cache_volume":{"description":"Describes the volume that will be used to cache the models","type":"object","required":["storage_class","cache_size"],"properties":{"storage_class":{"description":"Storage class of the Volume where artifacts will be cached","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.artifacts_download.cache_volume.storage_class","typeLabel":"string"},"cache_size":{"description":"Size of the Volume (in GB) where artifacts will be cached. Should be greater than twice the size of artifacts getting cached","type":"integer","minimum":1,"maximum":10000,"default":200,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.artifacts_download.cache_volume.cache_size","typeLabel":"integer"}},"title":"ArtifactsCacheVolume","x-fern-type-name":"ArtifactsCacheVolume","uniqueKey":"data.oneOf.4.manifest.oneOf.1.artifacts_download.cache_volume","typeLabel":"ArtifactsCacheVolume · object"}},"title":"ArtifactsDownload","x-fern-type-name":"ArtifactsDownload","uniqueKey":"data.oneOf.4.manifest.oneOf.1.artifacts_download","typeLabel":"ArtifactsDownload · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"data.oneOf.4.manifest.oneOf.1.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.1.env","typeLabel":"object | null"},"service_account":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.service_account","typeLabel":"string"},"mounts":{"description":"Configure data to be mounted to service pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-service)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"data.oneOf.4.manifest.oneOf.1.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.1.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"labels":{"description":"Labels","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.labels","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.1.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.1.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.1.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"data.oneOf.4.manifest.oneOf.1.kustomize","typeLabel":"Kustomize · object"},"liveness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.liveness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.liveness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.liveness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.liveness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"data.oneOf.4.manifest.oneOf.1.liveness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.liveness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.liveness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.liveness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.liveness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.liveness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.liveness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"data.oneOf.4.manifest.oneOf.1.liveness_probe","typeLabel":"HealthProbe · object"},"readiness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.readiness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.readiness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.readiness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.readiness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"data.oneOf.4.manifest.oneOf.1.readiness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.readiness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.readiness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.readiness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.readiness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.readiness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.readiness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"data.oneOf.4.manifest.oneOf.1.readiness_probe","typeLabel":"HealthProbe · object"},"startup_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.startup_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.startup_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.startup_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.startup_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"data.oneOf.4.manifest.oneOf.1.startup_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.startup_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.startup_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.startup_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.startup_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.startup_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.startup_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"data.oneOf.4.manifest.oneOf.1.startup_probe","typeLabel":"HealthProbe · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.workspace_fqn","typeLabel":"string"},"rollout_strategy":{"description":"This strategy updates the pods in a rolling fashion such that a subset of the\ntotal pods are replaced with new version at one time.\nA commonly used strategy can be to have maxUnavailablePercentage close to 0 so that there\nis no downtime and keep the maxSurgePercentage to around 25%. If you are anyways running\na large number of pods, the service can often tolerate a few pods going down - so you\nmax maxUnavailablePercentage = 10 and maxSurgePercentage=0. You can read about it more\n[here](https://spot.io/resources/kubernetes-autoscaling/5-kubernetes-deployment-strategies-roll-out-like-the-pros/)","type":"object","required":["type","max_unavailable_percentage","max_surge_percentage"],"properties":{"type":{"description":"+value=rolling_update","type":"string","enum":["rolling_update"],"default":"rolling_update","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.rollout_strategy.type","typeLabel":"enum\u003cstring>"},"max_unavailable_percentage":{"description":"Percentage of total replicas that can be brought down at one time.\nFor a value of 25 when replicas are set to 12 this would mean minimum (25% of 12) = 3 pods might be unavailable during the deployment.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.rollout_strategy.max_unavailable_percentage","typeLabel":"integer"},"max_surge_percentage":{"description":"Percentage of total replicas of updated image that can be brought up over the total replicas count.\nFor a value of 25 when replicas are set to 12 this would mean (12+(25% of 12) = 15) pods might be running at one time.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.rollout_strategy.max_surge_percentage","typeLabel":"integer"}},"title":"Rolling","x-fern-type-name":"Rolling","uniqueKey":"data.oneOf.4.manifest.oneOf.1.rollout_strategy","typeLabel":"Rolling · object"},"sidecar":{"type":"object","required":["destination_url"],"properties":{"destination_url":{"description":"URL for the processor to invoke","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.sidecar.destination_url","typeLabel":"string"},"request_timeout":{"description":"Timeout for the invoke request in seconds","type":"integer","minimum":1,"default":10,"uniqueKey":"data.oneOf.4.manifest.oneOf.1.sidecar.request_timeout","typeLabel":"integer"},"sidecar_image":{"description":"Image for the processor sidecar (This field will be deprecated in the future)","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.1.sidecar.sidecar_image","typeLabel":"string"}},"title":"AsyncProcessorSidecar","x-fern-type-name":"AsyncProcessorSidecar","uniqueKey":"data.oneOf.4.manifest.oneOf.1.sidecar","typeLabel":"AsyncProcessorSidecar · object"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.1","typeLabel":"AsyncService · object"},{"type":"object","title":"Job","description":"Deployment manifest defining the application configuration.","required":["type","name","image","trigger"],"x-fern-type-name":"Job","properties":{"type":{"description":"+value=job","type":"string","enum":["job"],"default":"job","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the job","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.name","typeLabel":"string"},"image":{"oneOf":[{"type":"object","title":"Build","description":"Describes how we build our code into a Docker image.","required":["type","build_source","build_spec"],"x-fern-type-name":"Build","properties":{"type":{"description":"+value=build","type":"string","enum":["build"],"default":"build","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.type","typeLabel":"enum\u003cstring>"},"build_source":{"oneOf":[{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_source.oneOf.0.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_source.oneOf.0","typeLabel":"RemoteSource · object"},{"type":"object","title":"GitSource","description":"Describes that we are using code stored in a git repository to build our image","required":["type","repo_url","ref"],"x-fern-type-name":"GitSource","properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"The repository URL.","type":"string","pattern":"^(https?://)\\S+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_source.oneOf.1.repo_url","typeLabel":"string"},"ref":{"description":"The commit SHA.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_source.oneOf.1.ref","typeLabel":"string"},"branch_name":{"description":"Selecting branch will select latest commit SHA of the branch.","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_source.oneOf.1.branch_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_source.oneOf.1","typeLabel":"GitSource · object"},{"type":"object","title":"LocalSource","description":"Describes that we are using code stored in a local developement environment to build our image","required":["type","project_root_path","local_build"],"x-fern-type-name":"LocalSource","properties":{"type":{"description":"+value=local","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"project_root_path":{"description":"Local project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_source.oneOf.2.project_root_path","typeLabel":"string"},"local_build":{"description":"run docker build locally","type":"boolean","default":false,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_source.oneOf.2.local_build","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_source.oneOf.2","typeLabel":"LocalSource · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_source","typeLabel":"RemoteSource · object | GitSource · object | LocalSource · object"},"build_spec":{"oneOf":[{"type":"object","title":"DockerFileBuild","description":"Describes that we are using a dockerfile to build our image","required":["type","dockerfile_path","build_context_path"],"x-fern-type-name":"DockerFileBuild","properties":{"type":{"description":"+value=dockerfile","type":"string","enum":["dockerfile"],"default":"dockerfile","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.0.type","typeLabel":"enum\u003cstring>"},"dockerfile_path":{"description":"The file path of the Dockerfile relative to project root path.","type":"string","default":"./Dockerfile","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.0.dockerfile_path","typeLabel":"string"},"build_context_path":{"description":"Build context path for the Dockerfile relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_context_path","typeLabel":"string"},"command":{"type":"any","description":"Override the command to run when the container starts\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.0.command","typeLabel":"any"},"build_args":{"description":"Build arguments to pass to docker build","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_args.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_args","typeLabel":"object"},"build_secrets":{"description":"Build secrets you can use in run statements inside dockerfile like RUN --mount=type=secret,id=pip_index_url ... you can learn more about build secrets here https://www.truefoundry.com/docs/docker-build-secrets","type":"array","items":{"type":"object","required":["id","value"],"properties":{"id":{"description":"The ID of the build secret.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].id","typeLabel":"string"},"value":{"description":"The value of the build secret.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].value","typeLabel":"string"},"env":{"description":"The name of the environment variable to inject the secret into.","type":"string","pattern":"^[_a-zA-Z0-9][_a-zA-Z0-9]{1,31}$","uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX].env","typeLabel":"string"}},"title":"BuildSecret","x-fern-type-name":"BuildSecret","uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_secrets.items.[INDEX]","typeLabel":"BuildSecret · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.0.build_secrets","typeLabel":"BuildSecret · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.0","typeLabel":"DockerFileBuild · object"},{"type":"object","title":"PythonBuild","description":"Describes that we are using python to build a container image with a specific python version and pip packages installed.","required":["type","build_context_path","command"],"x-fern-type-name":"PythonBuild","properties":{"type":{"description":"+value=tfy-python-buildpack","type":"string","enum":["tfy-python-buildpack"],"default":"tfy-python-buildpack","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.1.type","typeLabel":"enum\u003cstring>"},"build_context_path":{"description":"Build path relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.1.build_context_path","typeLabel":"string"},"command":{"type":"any","description":"Command to run when the container starts.\nCommand will be set as the Entrypoint of the generated image.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.1.command","typeLabel":"any"},"python_version":{"description":"Python version to run your application. Should be one of the tags listed on [Official Python Docker Page](https://hub.docker.com/_/python)","type":"string","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_version","typeLabel":"string"},"requirements_path":{"description":"Path to `requirements.txt` relative to\n`Path to build context`","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.1.requirements_path","typeLabel":"string"},"pip_packages":{"description":"Define pip package requirements.\nIn Python/YAML E.g. [\"fastapi>=0.90,\u003c1.0\", \"uvicorn\"]","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.1.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.1.pip_packages","typeLabel":"string[]"},"python_dependencies":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.1.python_dependencies","typeLabel":"any"},"apt_packages":{"description":"Debian packages to install via `apt get`.\nIn Python/YAML E.g. [\"git\", \"ffmpeg\", \"htop\"]","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.1.apt_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.1.apt_packages","typeLabel":"string[]"},"cuda_version":{"description":"Version of CUDA Toolkit and CUDNN to install in the image\nThese combinations are based off of publically available docker images on docker hub\nYou can also specify a valid tag of the form {cuda_version_number}-cudnn{cudnn_version_number}-{runtime|devel}-ubuntu{ubuntu_version}\nRefer https://hub.docker.com/r/nvidia/cuda/tags for valid set of values\nNote: We use deadsnakes ubuntu ppa to add Python that currently supports only Ubuntu 18.04, 20.04 and 22.04","type":"string","pattern":"^((\\d+\\.\\d+(\\.\\d+)?-cudnn(\\d+)?-(runtime|devel)-ubuntu\\d+\\.\\d+)|11\\.0-cudnn8|11\\.1-cudnn8|11\\.2-cudnn8|11\\.3-cudnn8|11\\.4-cudnn8|11\\.5-cudnn8|11\\.6-cudnn8|11\\.7-cudnn8|11\\.8-cudnn8|12\\.0-cudnn8|12\\.1-cudnn8|12\\.2-cudnn8|12\\.3-cudnn9|12\\.4-cudnn9|12\\.5-cudnn9|12\\.6-cudnn9|12\\.8-cudnn9|12\\.9-cudnn9)$","uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.1.cuda_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec.oneOf.1","typeLabel":"PythonBuild · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.build_spec","typeLabel":"DockerFileBuild · object | PythonBuild · object"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.0","typeLabel":"Build · object"},{"type":"object","title":"Image","description":"Describes that we are using a pre-built image stored in a Docker Image registry","required":["type","image_uri"],"x-fern-type-name":"Image","properties":{"type":{"description":"+value=image","type":"string","enum":["image"],"default":"image","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.1.type","typeLabel":"enum\u003cstring>"},"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.1.image_uri","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.1.docker_registry","typeLabel":"string"},"command":{"oneOf":[{"type":"string","description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.1.command.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.1.command.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Override the command to run when container starts.\nWhen deploying a Job, the command can be templatized by defining `params` and referencing them in command\nE.g. `python main.py --learning_rate {{learning_rate}}`","uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.1.command.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.1.command","typeLabel":"string | string[]"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image.oneOf.1","typeLabel":"Image · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.image","typeLabel":"Build · object | Image · object"},"trigger":{"oneOf":[{"type":"object","title":"Manual","description":"Trigger the job manually. [Docs](https://docs.truefoundry.com/docs/deploy-a-cron-job)","default":{"type":"manual"},"required":["type"],"x-fern-type-name":"Manual","properties":{"type":{"description":"+value=manual","type":"string","enum":["manual"],"default":"manual","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.trigger.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.trigger.oneOf.0","typeLabel":"Manual · object"},{"type":"object","title":"Schedule","description":"Run the job on a schedule. [Docs](https://docs.truefoundry.com/docs/deploy-a-cron-job)","default":{"type":"manual"},"required":["type","schedule","concurrency_policy"],"x-fern-type-name":"Schedule","properties":{"type":{"description":"+value=scheduled","type":"string","enum":["scheduled"],"default":"scheduled","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.trigger.oneOf.1.type","typeLabel":"enum\u003cstring>"},"schedule":{"description":"Specify the schedule for this job to be run periodically in cron format.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.trigger.oneOf.1.schedule","typeLabel":"string"},"concurrency_policy":{"description":"Choose whether to allow this job to run while another instance of the job is running, or to replace the currently running instance. Allow\nwill enable multiple instances of this job to run. Forbid will keep the current instance of the job running and stop a new instance from being run.\nReplace will terminate any currently running instance of the job and start a new one.","type":"string","enum":["Forbid","Allow","Replace"],"default":"Forbid","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.trigger.oneOf.1.concurrency_policy","typeLabel":"enum\u003cstring>"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.2.trigger.oneOf.1.timezone","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.trigger.oneOf.1","typeLabel":"Schedule · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.trigger","typeLabel":"Manual · object | Schedule · object"},"trigger_on_deploy":{"description":"Trigger the job after deploy immediately","type":"boolean","uniqueKey":"data.oneOf.4.manifest.oneOf.2.trigger_on_deploy","typeLabel":"boolean"},"params":{"description":"Configure params and pass it to create different job runs","type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"description":"Name of the param","type":"string","pattern":"^[a-z][a-z0-9\\-_]{0,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.params.items.[INDEX].name","typeLabel":"string"},"description":{"description":"Description of param","type":"string","pattern":"^.{1,127}$","uniqueKey":"data.oneOf.4.manifest.oneOf.2.params.items.[INDEX].description","typeLabel":"string"},"default":{"description":"Default value or placeholder","type":"string","pattern":"^.{0,127}$","uniqueKey":"data.oneOf.4.manifest.oneOf.2.params.items.[INDEX].default","typeLabel":"string"},"param_type":{"type":"string","enum":["string","ml_repo"],"default":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.2.params.items.[INDEX].param_type","typeLabel":"enum\u003cstring>"}},"title":"Param","x-fern-type-name":"Param","uniqueKey":"data.oneOf.4.manifest.oneOf.2.params.items.[INDEX]","typeLabel":"Param · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.params","typeLabel":"Param · object[]"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.2.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.2.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.2.env","typeLabel":"object | null"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"data.oneOf.4.manifest.oneOf.2.resources","typeLabel":"Resources · object"},"alerts":{"description":"Configure alerts to be sent when the job starts/fails/completes","type":"array","items":{"description":"Describes the configuration for the job alerts","type":"object","properties":{"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].to_emails.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].to_emails","typeLabel":"string[]"},"notification_target":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].notification_target.oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].notification_target.oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].notification_target.oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].notification_target.oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].notification_target.oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].notification_target.oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].notification_target.oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].notification_target.oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBot","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].notification_target.oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].notification_target.oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].notification_target.oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].notification_target.oneOf.2.channels","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].notification_target.oneOf.2","typeLabel":"SlackBot · object"},{"type":"object","title":"PagerDuty","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].notification_target.oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].notification_target.oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].notification_target.oneOf.3","typeLabel":"PagerDuty · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].notification_target","typeLabel":"Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object"},"on_start":{"description":"Send an alert when the job starts","type":"boolean","default":false,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].on_start","typeLabel":"boolean"},"on_completion":{"type":"boolean","default":false,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].on_completion","typeLabel":"boolean"},"on_failure":{"description":"Send an alert when the job fails","type":"boolean","default":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX].on_failure","typeLabel":"boolean"}},"title":"JobAlert","x-fern-type-name":"JobAlert","uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts.items.[INDEX]","typeLabel":"JobAlert · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.alerts","typeLabel":"JobAlert · object[]"},"retries":{"description":"Specify the maximum number of attempts to retry a job before it is marked as failed.","type":"integer","minimum":0,"maximum":10,"default":0,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.retries","typeLabel":"integer"},"timeout":{"description":"Job timeout in seconds.","type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":432000,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.timeout","typeLabel":"integer"},"concurrency_limit":{"description":"Number of runs that can run concurrently","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.concurrency_limit","typeLabel":"integer"},"service_account":{"description":"+sort=1000","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.2.service_account","typeLabel":"string"},"mounts":{"description":"Configure data to be mounted to job pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"data.oneOf.4.manifest.oneOf.2.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.2.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"labels":{"description":"Labels","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.2.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.labels","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.2.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.2.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.2.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"data.oneOf.4.manifest.oneOf.2.kustomize","typeLabel":"Kustomize · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.2.workspace_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.2","typeLabel":"Job · object"},{"type":"object","title":"Notebook","description":"Deployment manifest defining the application configuration.","required":["type","image","name","home_directory_size"],"x-fern-type-name":"Notebook","properties":{"name":{"description":"Name of the workbench. This uniquely identifies this workbench in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.name","typeLabel":"string"},"home_directory_size":{"description":"Size of the home directory for the workbench (Persistent Storage)","type":"integer","minimum":5,"maximum":64000,"default":20,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.home_directory_size","typeLabel":"integer"},"type":{"description":"+value=notebook","type":"string","enum":["notebook"],"default":"notebook","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.type","typeLabel":"enum\u003cstring>"},"image":{"description":"Workbench Image with persistent environment (Python 3.11.6)","type":"object","required":["image_uri"],"properties":{"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.image.image_uri","typeLabel":"string"},"build_script":{"description":"The build script to run when building the image.\nThis will be executed as the last step in the docker build process as the root user (RUN DEBIAN_FRONTEND=noninteractive bash -ex build_script.sh)","type":"string","minLength":1,"maxLength":5120,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.image.build_script","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.3.image.docker_registry","typeLabel":"string"}},"title":"WorkbenchImage","x-fern-type-name":"WorkbenchImage","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.image","typeLabel":"WorkbenchImage · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"data.oneOf.4.manifest.oneOf.3.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.3.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.3.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.3.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.3.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.3.env","typeLabel":"object | null"},"mounts":{"description":"Configure data to be mounted to workbench pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.3.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.3.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"data.oneOf.4.manifest.oneOf.3.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.3.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.3.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.3.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"service_account":{"description":"+sort=10113","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.3.service_account","typeLabel":"string"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.3.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.3.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.3.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"data.oneOf.4.manifest.oneOf.3.kustomize","typeLabel":"Kustomize · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.3.workspace_fqn","typeLabel":"string"},"cull_timeout":{"description":"Stop the notebook instance after this much time in minutes of inactivity.\nThe notebook instance will be stopped even if the notebook is open in your browser, but nothing is running on the notebook.","type":"integer","minimum":5,"default":30,"uniqueKey":"data.oneOf.4.manifest.oneOf.3.cull_timeout","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.3","typeLabel":"Notebook · object"},{"type":"object","title":"Codeserver","description":"Deployment manifest defining the application configuration.","required":["type","image","name","home_directory_size"],"x-fern-type-name":"Codeserver","properties":{"name":{"description":"Name of the workbench. This uniquely identifies this workbench in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.name","typeLabel":"string"},"home_directory_size":{"description":"Size of the home directory for the workbench (Persistent Storage)","type":"integer","minimum":5,"maximum":64000,"default":20,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.home_directory_size","typeLabel":"integer"},"type":{"description":"+value=codeserver","type":"string","enum":["codeserver"],"default":"codeserver","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.type","typeLabel":"enum\u003cstring>"},"image":{"description":"Workbench Image with persistent environment (Python 3.11.6)","type":"object","required":["image_uri"],"properties":{"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.image.image_uri","typeLabel":"string"},"build_script":{"description":"The build script to run when building the image.\nThis will be executed as the last step in the docker build process as the root user (RUN DEBIAN_FRONTEND=noninteractive bash -ex build_script.sh)","type":"string","minLength":1,"maxLength":5120,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.image.build_script","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.4.image.docker_registry","typeLabel":"string"}},"title":"WorkbenchImage","x-fern-type-name":"WorkbenchImage","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.image","typeLabel":"WorkbenchImage · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"data.oneOf.4.manifest.oneOf.4.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.4.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.4.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.4.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.4.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.4.env","typeLabel":"object | null"},"mounts":{"description":"Configure data to be mounted to workbench pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.4.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.4.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"data.oneOf.4.manifest.oneOf.4.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.4.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.4.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.4.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"service_account":{"description":"+sort=10113","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.4.service_account","typeLabel":"string"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.4.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.4.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.4.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"data.oneOf.4.manifest.oneOf.4.kustomize","typeLabel":"Kustomize · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.4.workspace_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.4","typeLabel":"Codeserver · object"},{"type":"object","title":"SSHServer","description":"Deployment manifest defining the application configuration.","required":["type","image","ssh_public_key","name","home_directory_size"],"x-fern-type-name":"SSHServer","properties":{"name":{"description":"Name of the workbench. This uniquely identifies this workbench in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.name","typeLabel":"string"},"home_directory_size":{"description":"Size of the home directory for the workbench (Persistent Storage)","type":"integer","minimum":5,"maximum":64000,"default":20,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.home_directory_size","typeLabel":"integer"},"type":{"description":"+value=ssh-server","type":"string","enum":["ssh-server"],"default":"ssh-server","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.type","typeLabel":"enum\u003cstring>"},"image":{"description":"Workbench Image with persistent environment (Python 3.11.6)","type":"object","required":["image_uri"],"properties":{"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.image.image_uri","typeLabel":"string"},"build_script":{"description":"The build script to run when building the image.\nThis will be executed as the last step in the docker build process as the root user (RUN DEBIAN_FRONTEND=noninteractive bash -ex build_script.sh)","type":"string","minLength":1,"maxLength":5120,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.image.build_script","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.5.image.docker_registry","typeLabel":"string"}},"title":"WorkbenchImage","x-fern-type-name":"WorkbenchImage","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.image","typeLabel":"WorkbenchImage · object"},"ssh_public_key":{"description":"Add Your SSH Public Key, this will be used to authenticate you to the SSH Server. \\\nYou can find it using `cat ~/.ssh/id_rsa.pub` in Mac/Linux or `type $home\\.ssh\\id_rsa.pub` in Windows Powershell. \\\nYou can also generate a new SSH key pair using `ssh-keygen -t rsa` in your local terminal. (same for both Mac/Linux and Windows Powershell)","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.ssh_public_key","typeLabel":"string"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"data.oneOf.4.manifest.oneOf.5.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.5.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.5.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.5.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.5.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.5.env","typeLabel":"object | null"},"mounts":{"description":"Configure data to be mounted to workbench pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.5.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.5.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"data.oneOf.4.manifest.oneOf.5.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.5.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.5.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.5.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"service_account":{"description":"+sort=10113","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.5.service_account","typeLabel":"string"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.5.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.5.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.5.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"data.oneOf.4.manifest.oneOf.5.kustomize","typeLabel":"Kustomize · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.5.workspace_fqn","typeLabel":"string"},"cull_timeout":{"description":"Stop the SSH Server instance after this much time in minutes of inactivity. The instance is considered active if there is at least one active SSH connection (a client connected to the SSH server), or if a background job is running using tmux or screen, or if the pod has restarted.","type":"integer","minimum":5,"uniqueKey":"data.oneOf.4.manifest.oneOf.5.cull_timeout","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.5","typeLabel":"SSHServer · object"},{"type":"object","title":"RStudio","description":"Deployment manifest defining the application configuration.","required":["type","image","name","home_directory_size"],"x-fern-type-name":"RStudio","properties":{"name":{"description":"Name of the workbench. This uniquely identifies this workbench in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.name","typeLabel":"string"},"home_directory_size":{"description":"Size of the home directory for the workbench (Persistent Storage)","type":"integer","minimum":5,"maximum":64000,"default":20,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.home_directory_size","typeLabel":"integer"},"type":{"description":"+value=rstudio","type":"string","enum":["rstudio"],"default":"rstudio","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.type","typeLabel":"enum\u003cstring>"},"image":{"description":"Workbench Image with persistent environment (Python 3.11.6)","type":"object","required":["image_uri"],"properties":{"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.image.image_uri","typeLabel":"string"},"build_script":{"description":"The build script to run when building the image.\nThis will be executed as the last step in the docker build process as the root user (RUN DEBIAN_FRONTEND=noninteractive bash -ex build_script.sh)","type":"string","minLength":1,"maxLength":5120,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.image.build_script","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.6.image.docker_registry","typeLabel":"string"}},"title":"WorkbenchImage","x-fern-type-name":"WorkbenchImage","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.image","typeLabel":"WorkbenchImage · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"data.oneOf.4.manifest.oneOf.6.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.6.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.6.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.6.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.6.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.6.env","typeLabel":"object | null"},"mounts":{"description":"Configure data to be mounted to workbench pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"oneOf":[{"type":"object","title":"SecretMount","required":["type","mount_path","secret_fqn"],"x-fern-type-name":"SecretMount","properties":{"type":{"description":"+value=secret","type":"string","enum":["secret"],"default":"secret","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.mounts.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.mounts.items.[INDEX].oneOf.0.mount_path","typeLabel":"string"},"secret_fqn":{"description":"The TrueFoundry secret whose value will be the file content.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.mounts.items.[INDEX].oneOf.0.secret_fqn","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.6.mounts.items.[INDEX].oneOf.0","typeLabel":"SecretMount · object"},{"type":"object","title":"StringDataMount","required":["type","mount_path","data"],"x-fern-type-name":"StringDataMount","properties":{"type":{"description":"+value=string","type":"string","enum":["string"],"default":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.mounts.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the file will be created.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.mounts.items.[INDEX].oneOf.1.mount_path","typeLabel":"string"},"data":{"description":"The file content.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.mounts.items.[INDEX].oneOf.1.data","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.6.mounts.items.[INDEX].oneOf.1","typeLabel":"StringDataMount · object"},{"type":"object","title":"VolumeMount","required":["type","mount_path","volume_fqn"],"x-fern-type-name":"VolumeMount","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.mounts.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.mounts.items.[INDEX].oneOf.2.mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6.mounts.items.[INDEX].oneOf.2.volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"data.oneOf.4.manifest.oneOf.6.mounts.items.[INDEX].oneOf.2.sub_path","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.6.mounts.items.[INDEX].oneOf.2","typeLabel":"VolumeMount · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.6.mounts.items.[INDEX]","typeLabel":"SecretMount · object | StringDataMount · object | VolumeMount · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.6.mounts","typeLabel":"(SecretMount · object | StringDataMount · object | VolumeMount · object)[]"},"service_account":{"description":"+sort=10113","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.6.service_account","typeLabel":"string"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.6.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.6.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.6.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"data.oneOf.4.manifest.oneOf.6.kustomize","typeLabel":"Kustomize · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.6.workspace_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.6","typeLabel":"RStudio · object"},{"type":"object","title":"Helm","description":"Deployment manifest defining the application configuration.","required":["type","name","source"],"x-fern-type-name":"Helm","properties":{"type":{"description":"+value=helm","type":"string","enum":["helm"],"default":"helm","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.7.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Helm deployment. This will be set as the release name of the chart you are deploying.","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.7.name","typeLabel":"string"},"source":{"oneOf":[{"type":"object","title":"HelmRepo","description":"Source helm repository","required":["type","repo_url","chart","version"],"x-fern-type-name":"HelmRepo","properties":{"type":{"description":"+value=helm-repo","type":"string","enum":["helm-repo"],"default":"helm-repo","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.7.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"Helm repository URL - Needs to be a valid URL.","type":"string","pattern":"^(((https?|wss):\\/\\/)?(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\\+.~#?\u0026\\/=]*))$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.7.source.oneOf.0.repo_url","typeLabel":"string"},"chart":{"description":"The helm chart name","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._/-]*$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.7.source.oneOf.0.chart","typeLabel":"string"},"version":{"description":"Helm chart version","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._+-]*$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.7.source.oneOf.0.version","typeLabel":"string"},"integration_fqn":{"description":"FQN of the helm repo integration. If you can't find your integration here,\nadd it through the [Integrations](/integrations) page","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.7.source.oneOf.0.integration_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.7.source.oneOf.0","typeLabel":"HelmRepo · object"},{"type":"object","title":"OCIRepo","description":"OCIRepo","required":["type","oci_chart_url","version"],"x-fern-type-name":"OCIRepo","properties":{"type":{"description":"+value=oci-repo","type":"string","enum":["oci-repo"],"default":"oci-repo","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.7.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"oci_chart_url":{"description":"OCI chart URL - Need to be a valid URL.","type":"string","pattern":"^(((oci):\\/\\/)?(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\\+.~#?\u0026\\/=]*))$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.7.source.oneOf.1.oci_chart_url","typeLabel":"string"},"version":{"description":"Helm chart version","type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._+-]*$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.7.source.oneOf.1.version","typeLabel":"string"},"integration_fqn":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations) page","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.7.source.oneOf.1.integration_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.7.source.oneOf.1","typeLabel":"OCIRepo · object"},{"type":"object","title":"GitHelmRepo","description":"Source helm repository","required":["type","repo_url","revision","path"],"x-fern-type-name":"GitHelmRepo","properties":{"type":{"description":"+value=git-helm-repo","type":"string","enum":["git-helm-repo"],"default":"git-helm-repo","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.7.source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"Git repository URL - Needs to be a valid URL.","type":"string","pattern":"^(((https?|wss):\\/\\/)?(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\\+.~#?\u0026\\/=]*))$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.7.source.oneOf.2.repo_url","typeLabel":"string"},"revision":{"description":"Branch/Commit SHA/Tag of the git repo.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.7.source.oneOf.2.revision","typeLabel":"string"},"path":{"description":"Path to the chart.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.7.source.oneOf.2.path","typeLabel":"string"},"value_files":{"description":"Helm values files for overriding values in the helm chart.\nThe path is relative to the Path directory defined above","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.7.source.oneOf.2.value_files.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.7.source.oneOf.2.value_files","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.7.source.oneOf.2","typeLabel":"GitHelmRepo · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.7.source","typeLabel":"HelmRepo · object | OCIRepo · object | GitHelmRepo · object"},"labels":{"description":"Add labels to base argo app","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.7.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.7.labels","typeLabel":"object"},"values":{"description":"Values file as block file","type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.7.values","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.7.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.7.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.7.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"data.oneOf.4.manifest.oneOf.7.kustomize","typeLabel":"Kustomize · object"},"ignoreDifferences":{"type":"array","items":{"type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.7.ignoreDifferences.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.7.ignoreDifferences","typeLabel":"object[]"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.7.workspace_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.7","typeLabel":"Helm · object"},{"type":"object","title":"Volume","description":"Deployment manifest defining the application configuration.","required":["type","name","config"],"x-fern-type-name":"Volume","properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.8.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Volume. This will be set as the volume name.","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.8.name","typeLabel":"string"},"config":{"oneOf":[{"type":"object","title":"DynamicVolumeConfig","description":"Create new volume","required":["type","storage_class","size"],"x-fern-type-name":"DynamicVolumeConfig","properties":{"type":{"description":"Volume Type for the volume.","type":"string","enum":["dynamic"],"default":"dynamic","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.8.config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"storage_class":{"description":"Name of the storage class to be used for the volume.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.8.config.oneOf.0.storage_class","typeLabel":"string"},"size":{"description":"Size of volume in Gi","type":"integer","minimum":1,"maximum":64000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.8.config.oneOf.0.size","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.8.config.oneOf.0","typeLabel":"DynamicVolumeConfig · object"},{"type":"object","title":"StaticVolumeConfig","description":"Use existing volume","required":["type","persistent_volume_name"],"x-fern-type-name":"StaticVolumeConfig","properties":{"type":{"description":"Volume Type for the volume.","type":"string","enum":["static"],"default":"static","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.8.config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"persistent_volume_name":{"description":"Persistent Volume Name of the volume to be used.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.8.config.oneOf.1.persistent_volume_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.8.config.oneOf.1","typeLabel":"StaticVolumeConfig · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.8.config","typeLabel":"DynamicVolumeConfig · object | StaticVolumeConfig · object"},"volume_browser":{"description":"Volume Browser","type":"object","required":["endpoint"],"properties":{"endpoint":{"type":"object","required":["host"],"properties":{"host":{"description":"Host e.g. ai.example.com, app.truefoundry.com","type":"string","pattern":"^((([a-zA-Z0-9\\-]{1,63}\\.)([a-zA-Z0-9\\-]{1,63}\\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.8.volume_browser.endpoint.host","typeLabel":"string"},"path":{"description":"Path e.g. /v1/api/ml/, /v2/docs/","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"data.oneOf.4.manifest.oneOf.8.volume_browser.endpoint.path","typeLabel":"string"}},"title":"Endpoint","x-fern-type-name":"Endpoint","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.8.volume_browser.endpoint","typeLabel":"Endpoint · object"},"username":{"description":"Username for logging in the volume browser.","type":"string","pattern":"^[a-z][a-z0-9]{1,8}[a-z0-9]$","uniqueKey":"data.oneOf.4.manifest.oneOf.8.volume_browser.username","typeLabel":"string"},"password_secret_fqn":{"description":"TFY Secret containing the password for logging in the volume browser.","type":"string","pattern":"^tfy-secret:\\/\\/.+:.+:.+$","uniqueKey":"data.oneOf.4.manifest.oneOf.8.volume_browser.password_secret_fqn","typeLabel":"string"},"service_account":{"description":"Kubernetes Service account name for the volume browser.","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.8.volume_browser.service_account","typeLabel":"string"}},"title":"VolumeBrowser","x-fern-type-name":"VolumeBrowser","uniqueKey":"data.oneOf.4.manifest.oneOf.8.volume_browser","typeLabel":"VolumeBrowser · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.8.workspace_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.8","typeLabel":"Volume · object"},{"type":"object","title":"ApplicationSet","description":"Deployment manifest defining the application configuration.","required":["type","name"],"x-fern-type-name":"ApplicationSet","properties":{"type":{"description":"+value=application-set","type":"string","enum":["application-set"],"default":"application-set","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the application set.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.name","typeLabel":"string"},"components":{"description":"Array of components with their specifications.","type":"array","items":{"oneOf":[{"type":"object","title":"Service","description":"Describes the configuration for the service","required":["type","replicas","name","image","ports"],"x-fern-type-name":"Service","properties":{"name":{"description":"Name of the service. This uniquely identifies this service in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.name","typeLabel":"string"},"image":{"type":"any","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.image","typeLabel":"any"},"ports":{"description":"Expose the deployment to make it accessible over the internet or keep it private. Implement authentication to restrict access. [Docs](https://docs.truefoundry.com/docs/define-ports-and-domains)","type":"array","items":{"description":"Describes the ports the service should be exposed to.","type":"object","required":["port","protocol","expose"],"properties":{"port":{"description":"Port number to expose.","type":"integer","minimum":1,"maximum":65535,"default":80,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.ports.items.[INDEX].port","typeLabel":"integer"},"protocol":{"description":"Protocol for the port.","type":"string","enum":["TCP","UDP"],"default":"TCP","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.ports.items.[INDEX].protocol","typeLabel":"enum\u003cstring>"},"expose":{"description":"Expose the port","type":"boolean","default":true,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.ports.items.[INDEX].expose","typeLabel":"boolean"},"app_protocol":{"description":"Application Protocol for the port.\nSelect the application protocol used by your service. For most use cases, this should be `http`(HTTP/1.1).\nIf you are running a gRPC server, select the `grpc` option.\nThis is only applicable if `expose=true`.","type":"string","enum":["http","grpc","tcp"],"default":"http","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.ports.items.[INDEX].app_protocol","typeLabel":"enum\u003cstring>"},"host":{"description":"Host e.g. ai.example.com, app.truefoundry.com","type":"string","pattern":"^((([a-zA-Z0-9\\-]{1,63}\\.)([a-zA-Z0-9\\-]{1,63}\\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.ports.items.[INDEX].host","typeLabel":"string"},"path":{"description":"Path e.g. /v1/api/ml/, /v2/docs/","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.ports.items.[INDEX].path","typeLabel":"string"},"rewrite_path_to":{"description":"Rewrite the path prefix to a different path.\nIf `path` is `/v1/api` and `rewrite_path_to` is `/api`. The URI in the HTTP request `http://0.0.0.0:8080/v1/api/houses` will be rewritten to `http://0.0.0.0:8080/api/houses` before the request is forwarded your service.\nDefaults to `/`.\nThis is only applicable if `path` is given.","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.ports.items.[INDEX].rewrite_path_to","typeLabel":"string"},"auth":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.ports.items.[INDEX].auth","typeLabel":"any"}},"title":"Port","x-fern-type-name":"Port","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.ports.items.[INDEX]","typeLabel":"Port · object"},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.ports","typeLabel":"Port · object[]"},"type":{"description":"+value=service","type":"string","enum":["service"],"default":"service","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"replicas":{"type":"any","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.replicas","typeLabel":"any"},"artifacts_download":{"description":"Download and cache models in a volume to enhance loading speeds and reduce costs by avoiding repeated downloads. [Docs](https://docs.truefoundry.com/docs/download-and-cache-models)","type":"object","required":["artifacts"],"properties":{"artifacts":{"description":"List of artifacts to be cached","type":"array","items":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.artifacts_download.artifacts.items.[INDEX]","typeLabel":"any"},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.artifacts_download.artifacts","typeLabel":"any[]"},"cache_volume":{"description":"Describes the volume that will be used to cache the models","type":"object","required":["storage_class","cache_size"],"properties":{"storage_class":{"description":"Storage class of the Volume where artifacts will be cached","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.artifacts_download.cache_volume.storage_class","typeLabel":"string"},"cache_size":{"description":"Size of the Volume (in GB) where artifacts will be cached. Should be greater than twice the size of artifacts getting cached","type":"integer","minimum":1,"maximum":10000,"default":200,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.artifacts_download.cache_volume.cache_size","typeLabel":"integer"}},"title":"ArtifactsCacheVolume","x-fern-type-name":"ArtifactsCacheVolume","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.artifacts_download.cache_volume","typeLabel":"ArtifactsCacheVolume · object"}},"title":"ArtifactsDownload","x-fern-type-name":"ArtifactsDownload","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.artifacts_download","typeLabel":"ArtifactsDownload · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.resources.shared_memory_size","typeLabel":"integer"},"node":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.resources.node","typeLabel":"any"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.resources.devices.items.[INDEX]","typeLabel":"any"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.resources.devices","typeLabel":"any[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.env","typeLabel":"object | null"},"service_account":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.service_account","typeLabel":"string"},"mounts":{"description":"Configure data to be mounted to service pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-service)","type":"array","items":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.mounts.items.[INDEX]","typeLabel":"any"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.mounts","typeLabel":"any[]"},"labels":{"description":"Labels","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.labels","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.kustomize","typeLabel":"Kustomize · object"},"liveness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.liveness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.liveness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.liveness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.liveness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.liveness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.liveness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.liveness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.liveness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.liveness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.liveness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.liveness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.liveness_probe","typeLabel":"HealthProbe · object"},"readiness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.readiness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.readiness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.readiness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.readiness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.readiness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.readiness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.readiness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.readiness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.readiness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.readiness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.readiness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.readiness_probe","typeLabel":"HealthProbe · object"},"startup_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.startup_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.startup_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.startup_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.startup_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.startup_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.startup_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.startup_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.startup_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.startup_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.startup_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.startup_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.startup_probe","typeLabel":"HealthProbe · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.workspace_fqn","typeLabel":"string"},"auto_shutdown":{"type":"object","required":["wait_time"],"properties":{"wait_time":{"description":"The period to wait after the last received request before scaling the replicas to 0. This value should be high enough to allow for the replicas of the service to come up to avoid premature scaling down.","type":"integer","minimum":0,"maximum":604800,"default":900,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.auto_shutdown.wait_time","typeLabel":"integer"}},"title":"Autoshutdown","x-fern-type-name":"Autoshutdown","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.auto_shutdown","typeLabel":"Autoshutdown · object"},"allow_interception":{"description":"Whether to allow intercepts to be applied for this service.\nThis would inject an additional sidecar in each pod of the service. Not recommended on production","type":"boolean","default":false,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.allow_interception","typeLabel":"boolean"},"rollout_strategy":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0.rollout_strategy","typeLabel":"any"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.0","typeLabel":"Service · object"},{"type":"object","title":"AsyncService","description":"Describes the configuration for the async-service","required":["type","replicas","worker_config","name","image","ports"],"x-fern-type-name":"AsyncService","properties":{"name":{"description":"Name of the service. This uniquely identifies this service in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.name","typeLabel":"string"},"image":{"type":"any","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.image","typeLabel":"any"},"ports":{"description":"Expose the deployment to make it accessible over the internet or keep it private. Implement authentication to restrict access. [Docs](https://docs.truefoundry.com/docs/define-ports-and-domains)","type":"array","items":{"description":"Describes the ports the service should be exposed to.","type":"object","required":["port","protocol","expose"],"properties":{"port":{"description":"Port number to expose.","type":"integer","minimum":1,"maximum":65535,"default":80,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.ports.items.[INDEX].port","typeLabel":"integer"},"protocol":{"description":"Protocol for the port.","type":"string","enum":["TCP","UDP"],"default":"TCP","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.ports.items.[INDEX].protocol","typeLabel":"enum\u003cstring>"},"expose":{"description":"Expose the port","type":"boolean","default":true,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.ports.items.[INDEX].expose","typeLabel":"boolean"},"app_protocol":{"description":"Application Protocol for the port.\nSelect the application protocol used by your service. For most use cases, this should be `http`(HTTP/1.1).\nIf you are running a gRPC server, select the `grpc` option.\nThis is only applicable if `expose=true`.","type":"string","enum":["http","grpc","tcp"],"default":"http","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.ports.items.[INDEX].app_protocol","typeLabel":"enum\u003cstring>"},"host":{"description":"Host e.g. ai.example.com, app.truefoundry.com","type":"string","pattern":"^((([a-zA-Z0-9\\-]{1,63}\\.)([a-zA-Z0-9\\-]{1,63}\\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.ports.items.[INDEX].host","typeLabel":"string"},"path":{"description":"Path e.g. /v1/api/ml/, /v2/docs/","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.ports.items.[INDEX].path","typeLabel":"string"},"rewrite_path_to":{"description":"Rewrite the path prefix to a different path.\nIf `path` is `/v1/api` and `rewrite_path_to` is `/api`. The URI in the HTTP request `http://0.0.0.0:8080/v1/api/houses` will be rewritten to `http://0.0.0.0:8080/api/houses` before the request is forwarded your service.\nDefaults to `/`.\nThis is only applicable if `path` is given.","type":"string","pattern":"^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-_\\.]*[a-zA-Z0-9]))*/$","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.ports.items.[INDEX].rewrite_path_to","typeLabel":"string"},"auth":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.ports.items.[INDEX].auth","typeLabel":"any"}},"title":"Port","x-fern-type-name":"Port","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.ports.items.[INDEX]","typeLabel":"Port · object"},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.ports","typeLabel":"Port · object[]"},"type":{"description":"+value=async-service","type":"string","enum":["async-service"],"default":"async-service","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"replicas":{"type":"any","description":"Deploy multiple instances of your pods to distribute incoming traffic across them, ensuring effective load balancing.","default":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.replicas","typeLabel":"any"},"worker_config":{"type":"object","required":["input_config","num_concurrent_workers"],"properties":{"input_config":{"type":"any","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.worker_config.input_config","typeLabel":"any"},"num_concurrent_workers":{"description":"Number of concurrent workers to spawn for the processor","type":"integer","minimum":1,"maximum":10,"default":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.worker_config.num_concurrent_workers","typeLabel":"integer"},"output_config":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.worker_config.output_config","typeLabel":"any"}},"title":"WorkerConfig","x-fern-type-name":"WorkerConfig","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.worker_config","typeLabel":"WorkerConfig · object"},"artifacts_download":{"description":"Download and cache models in a volume to enhance loading speeds and reduce costs by avoiding repeated downloads. [Docs](https://docs.truefoundry.com/docs/download-and-cache-models)","type":"object","required":["artifacts"],"properties":{"artifacts":{"description":"List of artifacts to be cached","type":"array","items":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.artifacts_download.artifacts.items.[INDEX]","typeLabel":"any"},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.artifacts_download.artifacts","typeLabel":"any[]"},"cache_volume":{"description":"Describes the volume that will be used to cache the models","type":"object","required":["storage_class","cache_size"],"properties":{"storage_class":{"description":"Storage class of the Volume where artifacts will be cached","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.artifacts_download.cache_volume.storage_class","typeLabel":"string"},"cache_size":{"description":"Size of the Volume (in GB) where artifacts will be cached. Should be greater than twice the size of artifacts getting cached","type":"integer","minimum":1,"maximum":10000,"default":200,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.artifacts_download.cache_volume.cache_size","typeLabel":"integer"}},"title":"ArtifactsCacheVolume","x-fern-type-name":"ArtifactsCacheVolume","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.artifacts_download.cache_volume","typeLabel":"ArtifactsCacheVolume · object"}},"title":"ArtifactsDownload","x-fern-type-name":"ArtifactsDownload","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.artifacts_download","typeLabel":"ArtifactsDownload · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.resources.shared_memory_size","typeLabel":"integer"},"node":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.resources.node","typeLabel":"any"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.resources.devices.items.[INDEX]","typeLabel":"any"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.resources.devices","typeLabel":"any[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.resources","typeLabel":"Resources · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.env","typeLabel":"object | null"},"service_account":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.service_account","typeLabel":"string"},"mounts":{"description":"Configure data to be mounted to service pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-service)","type":"array","items":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.mounts.items.[INDEX]","typeLabel":"any"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.mounts","typeLabel":"any[]"},"labels":{"description":"Labels","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.labels","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.kustomize","typeLabel":"Kustomize · object"},"liveness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.liveness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.liveness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.liveness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.liveness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.liveness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.liveness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.liveness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.liveness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.liveness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.liveness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.liveness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.liveness_probe","typeLabel":"HealthProbe · object"},"readiness_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.readiness_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.readiness_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.readiness_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.readiness_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.readiness_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.readiness_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.readiness_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.readiness_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.readiness_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.readiness_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.readiness_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.readiness_probe","typeLabel":"HealthProbe · object"},"startup_probe":{"description":"Describes the configuration for the Health Probe's\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["config"],"properties":{"config":{"description":"Describes the Instructions for assessing container health by executing an HTTP GET request.\nTo learn more you can go [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)","type":"object","required":["type","path","port"],"properties":{"type":{"description":"Request Type","type":"string","enum":["http"],"default":"http","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.startup_probe.config.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the health check endpoint","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.startup_probe.config.path","typeLabel":"string"},"port":{"description":"Listening port for the health check endpoint","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.startup_probe.config.port","typeLabel":"integer"},"host":{"description":"Host name to connect to, defaults to the pod IP","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.startup_probe.config.host","typeLabel":"string"},"scheme":{"description":"Scheme to use for connecting to the host","type":"string","default":"HTTP","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.startup_probe.config.scheme","typeLabel":"string"}},"title":"HttpProbe","x-fern-type-name":"HttpProbe","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.startup_probe.config","typeLabel":"HttpProbe · object"},"initial_delay_seconds":{"description":"Time to wait after container has started before checking the endpoint","type":"integer","minimum":0,"maximum":36000,"default":0,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.startup_probe.initial_delay_seconds","typeLabel":"integer"},"period_seconds":{"description":"How often to check the endpoint","type":"integer","minimum":1,"maximum":36000,"default":10,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.startup_probe.period_seconds","typeLabel":"integer"},"timeout_seconds":{"description":"Time to wait for a response from the endpoint before considering it down","type":"integer","minimum":1,"maximum":36000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.startup_probe.timeout_seconds","typeLabel":"integer"},"success_threshold":{"description":"Number of successful responses from the endpoint before container is considered healthy","type":"integer","minimum":1,"maximum":5000,"default":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.startup_probe.success_threshold","typeLabel":"integer"},"failure_threshold":{"description":"Number of consecutive failures before the container is considered down","type":"integer","minimum":1,"maximum":5000,"default":3,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.startup_probe.failure_threshold","typeLabel":"integer"}},"title":"HealthProbe","x-fern-type-name":"HealthProbe","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.startup_probe","typeLabel":"HealthProbe · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.workspace_fqn","typeLabel":"string"},"rollout_strategy":{"description":"This strategy updates the pods in a rolling fashion such that a subset of the\ntotal pods are replaced with new version at one time.\nA commonly used strategy can be to have maxUnavailablePercentage close to 0 so that there\nis no downtime and keep the maxSurgePercentage to around 25%. If you are anyways running\na large number of pods, the service can often tolerate a few pods going down - so you\nmax maxUnavailablePercentage = 10 and maxSurgePercentage=0. You can read about it more\n[here](https://spot.io/resources/kubernetes-autoscaling/5-kubernetes-deployment-strategies-roll-out-like-the-pros/)","type":"object","required":["type","max_unavailable_percentage","max_surge_percentage"],"properties":{"type":{"description":"+value=rolling_update","type":"string","enum":["rolling_update"],"default":"rolling_update","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.rollout_strategy.type","typeLabel":"enum\u003cstring>"},"max_unavailable_percentage":{"description":"Percentage of total replicas that can be brought down at one time.\nFor a value of 25 when replicas are set to 12 this would mean minimum (25% of 12) = 3 pods might be unavailable during the deployment.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.rollout_strategy.max_unavailable_percentage","typeLabel":"integer"},"max_surge_percentage":{"description":"Percentage of total replicas of updated image that can be brought up over the total replicas count.\nFor a value of 25 when replicas are set to 12 this would mean (12+(25% of 12) = 15) pods might be running at one time.\nSetting this to a higher value can help in speeding up the deployment process.","type":"integer","minimum":0,"maximum":100,"default":25,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.rollout_strategy.max_surge_percentage","typeLabel":"integer"}},"title":"Rolling","x-fern-type-name":"Rolling","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.rollout_strategy","typeLabel":"Rolling · object"},"sidecar":{"type":"object","required":["destination_url"],"properties":{"destination_url":{"description":"URL for the processor to invoke","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.sidecar.destination_url","typeLabel":"string"},"request_timeout":{"description":"Timeout for the invoke request in seconds","type":"integer","minimum":1,"default":10,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.sidecar.request_timeout","typeLabel":"integer"},"sidecar_image":{"description":"Image for the processor sidecar (This field will be deprecated in the future)","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.sidecar.sidecar_image","typeLabel":"string"}},"title":"AsyncProcessorSidecar","x-fern-type-name":"AsyncProcessorSidecar","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1.sidecar","typeLabel":"AsyncProcessorSidecar · object"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.1","typeLabel":"AsyncService · object"},{"type":"object","title":"Job","description":"Describes the configuration for the job","required":["type","name","image","trigger"],"x-fern-type-name":"Job","properties":{"type":{"description":"+value=job","type":"string","enum":["job"],"default":"job","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the job","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.name","typeLabel":"string"},"image":{"type":"any","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.image","typeLabel":"any"},"trigger":{"type":"any","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.trigger","typeLabel":"any"},"trigger_on_deploy":{"description":"Trigger the job after deploy immediately","type":"boolean","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.trigger_on_deploy","typeLabel":"boolean"},"params":{"description":"Configure params and pass it to create different job runs","type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"description":"Name of the param","type":"string","pattern":"^[a-z][a-z0-9\\-_]{0,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.params.items.[INDEX].name","typeLabel":"string"},"description":{"description":"Description of param","type":"string","pattern":"^.{1,127}$","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.params.items.[INDEX].description","typeLabel":"string"},"default":{"description":"Default value or placeholder","type":"string","pattern":"^.{0,127}$","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.params.items.[INDEX].default","typeLabel":"string"},"param_type":{"type":"string","enum":["string","ml_repo"],"default":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.params.items.[INDEX].param_type","typeLabel":"enum\u003cstring>"}},"title":"Param","x-fern-type-name":"Param","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.params.items.[INDEX]","typeLabel":"Param · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.params","typeLabel":"Param · object[]"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.env.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.env.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.env","typeLabel":"object | null"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.resources.shared_memory_size","typeLabel":"integer"},"node":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.resources.node","typeLabel":"any"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.resources.devices.items.[INDEX]","typeLabel":"any"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.resources.devices","typeLabel":"any[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.resources","typeLabel":"Resources · object"},"alerts":{"description":"Configure alerts to be sent when the job starts/fails/completes","type":"array","items":{"description":"Describes the configuration for the job alerts","type":"object","properties":{"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].to_emails.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].to_emails","typeLabel":"string[]"},"notification_target":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].notification_target","typeLabel":"any"},"on_start":{"description":"Send an alert when the job starts","type":"boolean","default":false,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].on_start","typeLabel":"boolean"},"on_completion":{"type":"boolean","default":false,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].on_completion","typeLabel":"boolean"},"on_failure":{"description":"Send an alert when the job fails","type":"boolean","default":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.alerts.items.[INDEX].on_failure","typeLabel":"boolean"}},"title":"JobAlert","x-fern-type-name":"JobAlert","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.alerts.items.[INDEX]","typeLabel":"JobAlert · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.alerts","typeLabel":"JobAlert · object[]"},"retries":{"description":"Specify the maximum number of attempts to retry a job before it is marked as failed.","type":"integer","minimum":0,"maximum":10,"default":0,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.retries","typeLabel":"integer"},"timeout":{"description":"Job timeout in seconds.","type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":432000,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.timeout","typeLabel":"integer"},"concurrency_limit":{"description":"Number of runs that can run concurrently","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.concurrency_limit","typeLabel":"integer"},"service_account":{"description":"+sort=1000","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.service_account","typeLabel":"string"},"mounts":{"description":"Configure data to be mounted to job pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"type":"any","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.mounts.items.[INDEX]","typeLabel":"any"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.mounts","typeLabel":"any[]"},"labels":{"description":"Labels","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.labels","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.kustomize","typeLabel":"Kustomize · object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2.workspace_fqn","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.2","typeLabel":"Job · object"},{"type":"object","title":"Helm","required":["type","name","source"],"x-fern-type-name":"Helm","properties":{"type":{"description":"+value=helm","type":"string","enum":["helm"],"default":"helm","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Helm deployment. This will be set as the release name of the chart you are deploying.","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.3.name","typeLabel":"string"},"source":{"type":"any","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.3.source","typeLabel":"any"},"labels":{"description":"Add labels to base argo app","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.3.labels.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.3.labels","typeLabel":"object"},"values":{"description":"Values file as block file","type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.3.values","typeLabel":"object"},"kustomize":{"type":"object","properties":{"patch":{"description":"Content of kustomization.yaml to perform kustomize operation. Please do not include the `resources` section. It is filled in automatically","type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.3.kustomize.patch","typeLabel":"object"},"additions":{"description":"Additional kubernetes manifests to be included in the application","type":"array","items":{"type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.3.kustomize.additions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.3.kustomize.additions","typeLabel":"object[]"}},"title":"Kustomize","x-fern-type-name":"Kustomize","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.3.kustomize","typeLabel":"Kustomize · object"},"ignoreDifferences":{"type":"array","items":{"type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.3.ignoreDifferences.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.3.ignoreDifferences","typeLabel":"object[]"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.3.workspace_fqn","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX].oneOf.3","typeLabel":"Helm · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components.items.[INDEX]","typeLabel":"Service · object | AsyncService · object | Job · object | Helm · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.9.components","typeLabel":"(Service · object | AsyncService · object | Job · object | Helm · object)[]"},"template":{"description":"Template to be used for the application set.","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.template","typeLabel":"string"},"values":{"description":"Values to be used to render components for the application set.","type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.9.values","typeLabel":"object"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.9.workspace_fqn","typeLabel":"string"},"convert_template_manifest":{"description":"Flag to indicate if the template manifest should be converted to TrueFoundry manifest","type":"boolean","uniqueKey":"data.oneOf.4.manifest.oneOf.9.convert_template_manifest","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.9","typeLabel":"ApplicationSet · object"},{"type":"object","title":"Workflow","description":"Deployment manifest defining the application configuration.","required":["type","name","source","workflow_file_path"],"x-fern-type-name":"Workflow","properties":{"type":{"description":"+value=workflow","type":"string","enum":["workflow"],"default":"workflow","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the workflow","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.name","typeLabel":"string"},"source":{"oneOf":[{"type":"object","title":"LocalSource","description":"Describes that we are using code stored in a local developement environment to build our image","required":["type","project_root_path","local_build"],"x-fern-type-name":"LocalSource","properties":{"type":{"description":"+value=local","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"project_root_path":{"description":"Local project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.source.oneOf.0.project_root_path","typeLabel":"string"},"local_build":{"description":"run docker build locally","type":"boolean","default":false,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.source.oneOf.0.local_build","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.source.oneOf.0","typeLabel":"LocalSource · object"},{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.source.oneOf.1.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.source.oneOf.1","typeLabel":"RemoteSource · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.source","typeLabel":"LocalSource · object | RemoteSource · object"},"workflow_file_path":{"description":"Path to the workflow file relative to the project root path","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.workflow_file_path","typeLabel":"string"},"flyte_entities":{"description":"Flyte Entities","type":"array","items":{"oneOf":[{"type":"object","title":"FlyteTask","required":["template"],"x-fern-type-name":"FlyteTask","properties":{"template":{"type":"any","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX].oneOf.0.template","typeLabel":"any"},"description":{"oneOf":[{}],"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX].oneOf.0.description","typeLabel":"any"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX].oneOf.0","typeLabel":"FlyteTask · object"},{"type":"object","title":"FlyteWorkflow","required":["template"],"x-fern-type-name":"FlyteWorkflow","properties":{"template":{"type":"object","required":["id"],"properties":{"id":{"type":"object","required":["resourceType","name"],"properties":{"resourceType":{"type":"string","enum":["WORKFLOW"],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX].oneOf.1.template.id.resourceType","typeLabel":"enum\u003cstring>"},"name":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX].oneOf.1.template.id.name","typeLabel":"string"}},"title":"FlyteWorkflowID","x-fern-type-name":"FlyteWorkflowID","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX].oneOf.1.template.id","typeLabel":"FlyteWorkflowID · object"}},"title":"FlyteWorkflowTemplate","x-fern-type-name":"FlyteWorkflowTemplate","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX].oneOf.1.template","typeLabel":"FlyteWorkflowTemplate · object"},"description":{"oneOf":[{}],"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX].oneOf.1.description","typeLabel":"any"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX].oneOf.1","typeLabel":"FlyteWorkflow · object"},{"type":"object","title":"FlyteLaunchPlan","required":["id","spec","closure"],"x-fern-type-name":"FlyteLaunchPlan","properties":{"id":{"type":"object","required":["resourceType","name"],"properties":{"resourceType":{"type":"string","enum":["LAUNCH_PLAN"],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX].oneOf.2.id.resourceType","typeLabel":"enum\u003cstring>"},"name":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX].oneOf.2.id.name","typeLabel":"string"}},"title":"FlyteLaunchPlanID","x-fern-type-name":"FlyteLaunchPlanID","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX].oneOf.2.id","typeLabel":"FlyteLaunchPlanID · object"},"spec":{"type":"object","required":["workflowId"],"properties":{"workflowId":{"type":"object","required":["resourceType","name"],"properties":{"resourceType":{"type":"string","enum":["WORKFLOW"],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX].oneOf.2.spec.workflowId.resourceType","typeLabel":"enum\u003cstring>"},"name":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX].oneOf.2.spec.workflowId.name","typeLabel":"string"}},"title":"FlyteWorkflowID","x-fern-type-name":"FlyteWorkflowID","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX].oneOf.2.spec.workflowId","typeLabel":"FlyteWorkflowID · object"}},"title":"FlyteLaunchPlanSpec","x-fern-type-name":"FlyteLaunchPlanSpec","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX].oneOf.2.spec","typeLabel":"FlyteLaunchPlanSpec · object"},"closure":{"oneOf":[{"isRequired":true}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX].oneOf.2.closure","typeLabel":"any"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX].oneOf.2","typeLabel":"FlyteLaunchPlan · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities.items.[INDEX]","typeLabel":"FlyteTask · object | FlyteWorkflow · object | FlyteLaunchPlan · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.10.flyte_entities","typeLabel":"(FlyteTask · object | FlyteWorkflow · object | FlyteLaunchPlan · object)[]"},"alerts":{"description":"Alerts","type":"array","items":{"description":"Describes the configuration for the workflow alerts","type":"object","properties":{"notification_target":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].notification_target.oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].notification_target.oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].notification_target.oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].notification_target.oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].notification_target.oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].notification_target.oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].notification_target.oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].notification_target.oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBot","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].notification_target.oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].notification_target.oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].notification_target.oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].notification_target.oneOf.2.channels","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].notification_target.oneOf.2","typeLabel":"SlackBot · object"},{"type":"object","title":"PagerDuty","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].notification_target.oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].notification_target.oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].notification_target.oneOf.3","typeLabel":"PagerDuty · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].notification_target","typeLabel":"Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object"},"on_completion":{"description":"Send an alert when the job completes","type":"boolean","default":false,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].on_completion","typeLabel":"boolean"},"on_failure":{"description":"Send an alert when the job fails","type":"boolean","default":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX].on_failure","typeLabel":"boolean"}},"title":"WorkflowAlert","x-fern-type-name":"WorkflowAlert","uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts.items.[INDEX]","typeLabel":"WorkflowAlert · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.10.alerts","typeLabel":"WorkflowAlert · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.10","typeLabel":"Workflow · object"},{"type":"object","title":"SparkJob","description":"Deployment manifest defining the application configuration.","required":["type","name","image","entrypoint","driver_config","executor_config"],"x-fern-type-name":"SparkJob","properties":{"type":{"description":"+value=spark-job\n+sort=1","type":"string","enum":["spark-job"],"default":"spark-job","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the job","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.name","typeLabel":"string"},"image":{"oneOf":[{"type":"object","title":"SparkImage","description":"Describes that we are using a pre-built image stored in a Docker Image registry","required":["type","spark_version","image_uri"],"x-fern-type-name":"SparkImage","properties":{"type":{"description":"+value=spark-image","type":"string","enum":["spark-image"],"default":"spark-image","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.0.type","typeLabel":"enum\u003cstring>"},"spark_version":{"description":"Spark version should match the spark version installed in the image.","type":"string","default":"3.5.2","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.0.spark_version","typeLabel":"string"},"image_uri":{"description":"The image URI. Specify the name of the image and the tag.\nIf the image is in Dockerhub, you can skip registry-url (for e.g. `tensorflow/tensorflow`).\nYou can use an image from a private registry using Advanced fields","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.0.image_uri","typeLabel":"string"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.0.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.0","typeLabel":"SparkImage · object"},{"type":"object","title":"SparkImageBuild","description":"Describes that we are building a new image based on the spec","required":["type","build_source","build_spec"],"x-fern-type-name":"SparkImageBuild","properties":{"type":{"description":"+value=spark-image-build","type":"string","enum":["spark-image-build"],"default":"spark-image-build","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.1.type","typeLabel":"enum\u003cstring>"},"build_source":{"oneOf":[{"type":"object","title":"GitSource","description":"Describes that we are using code stored in a git repository to build our image","required":["type","repo_url","ref"],"x-fern-type-name":"GitSource","properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.1.build_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"repo_url":{"description":"The repository URL.","type":"string","pattern":"^(https?://)\\S+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.1.build_source.oneOf.0.repo_url","typeLabel":"string"},"ref":{"description":"The commit SHA.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.1.build_source.oneOf.0.ref","typeLabel":"string"},"branch_name":{"description":"Selecting branch will select latest commit SHA of the branch.","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.1.build_source.oneOf.0.branch_name","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.1.build_source.oneOf.0","typeLabel":"GitSource · object"},{"type":"object","title":"RemoteSource","description":"Describes that we are using code stored in a remote repository to build our image","required":["type","remote_uri"],"x-fern-type-name":"RemoteSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.1.build_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"remote_uri":{"description":"Remote repository URI","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.1.build_source.oneOf.1.remote_uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.1.build_source.oneOf.1","typeLabel":"RemoteSource · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.1.build_source","typeLabel":"GitSource · object | RemoteSource · object"},"build_spec":{"description":"Describes that we are using python to build a container image with a specific python version and pip packages installed.","type":"object","required":["type","spark_version","build_context_path"],"properties":{"type":{"description":"+value=tfy-spark-buildpack","type":"string","enum":["tfy-spark-buildpack"],"default":"tfy-spark-buildpack","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.1.build_spec.type","typeLabel":"enum\u003cstring>"},"spark_version":{"description":"Spark version should match the spark version installed in the image.","type":"string","default":"3.5.2","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.1.build_spec.spark_version","typeLabel":"string"},"build_context_path":{"description":"Build path relative to project root path.","type":"string","default":"./","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.1.build_spec.build_context_path","typeLabel":"string"},"requirements_path":{"description":"Path to `requirements.txt` relative to\n`Path to build context`","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.1.build_spec.requirements_path","typeLabel":"string"}},"title":"SparkBuild","x-fern-type-name":"SparkBuild","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.1.build_spec","typeLabel":"SparkBuild · object"},"docker_registry":{"description":"FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.1.docker_registry","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image.oneOf.1","typeLabel":"SparkImageBuild · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.image","typeLabel":"SparkImage · object | SparkImageBuild · object"},"entrypoint":{"oneOf":[{"type":"object","title":"SparkJobPythonEntrypoint","description":"python","required":["type","main_application_file"],"x-fern-type-name":"SparkJobPythonEntrypoint","properties":{"type":{"description":"+value=python","type":"string","enum":["python"],"default":"python","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.0.type","typeLabel":"enum\u003cstring>"},"main_application_file":{"description":"The main application file to be executed by the spark job. Relative path in case of git repository.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.0.main_application_file","typeLabel":"string"},"arguments":{"description":"Arguments to be passed to the main application file.","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.0.arguments","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.0","typeLabel":"SparkJobPythonEntrypoint · object"},{"type":"object","title":"SparkJobScalaEntrypoint","description":"scala","required":["type","main_application_file","main_class"],"x-fern-type-name":"SparkJobScalaEntrypoint","properties":{"type":{"description":"+value=scala","type":"string","enum":["scala"],"default":"scala","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.1.type","typeLabel":"enum\u003cstring>"},"main_application_file":{"description":"The main application file to be executed by the spark job.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.1.main_application_file","typeLabel":"string"},"main_class":{"description":"The main class to be executed by the spark job.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.1.main_class","typeLabel":"string"},"arguments":{"description":"Arguments to be passed to the main application file.","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.1.arguments","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.1","typeLabel":"SparkJobScalaEntrypoint · object"},{"type":"object","title":"SparkJobJavaEntrypoint","description":"java","required":["type","main_application_file","main_class"],"x-fern-type-name":"SparkJobJavaEntrypoint","properties":{"type":{"description":"+value=java","type":"string","enum":["java"],"default":"java","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.2.type","typeLabel":"enum\u003cstring>"},"main_application_file":{"description":"The main application file to be executed by the spark job.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.2.main_application_file","typeLabel":"string"},"main_class":{"description":"The main class to be executed by the spark job.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.2.main_class","typeLabel":"string"},"arguments":{"description":"Arguments to be passed to the main application file.","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.2.arguments","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.2","typeLabel":"SparkJobJavaEntrypoint · object"},{"type":"object","title":"SparkJobPythonNotebookEntrypoint","description":"python notebook","required":["type","main_application_file"],"x-fern-type-name":"SparkJobPythonNotebookEntrypoint","properties":{"type":{"description":"+value=python-notebook","type":"string","enum":["python-notebook"],"default":"python-notebook","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.3.type","typeLabel":"enum\u003cstring>"},"main_application_file":{"description":"The main application file to be executed by the spark job. Relative path in case of git repository.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.3.main_application_file","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.3","typeLabel":"SparkJobPythonNotebookEntrypoint · object"},{"type":"object","title":"SparkJobScalaNotebookEntrypoint","description":"scala notebook","required":["type","main_application_file"],"x-fern-type-name":"SparkJobScalaNotebookEntrypoint","properties":{"type":{"description":"+value=scala-notebook","type":"string","enum":["scala-notebook"],"default":"scala-notebook","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.4.type","typeLabel":"enum\u003cstring>"},"main_application_file":{"description":"The main application file to be executed by the spark job. Relative path in case of git repository.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.4.main_application_file","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint.oneOf.4","typeLabel":"SparkJobScalaNotebookEntrypoint · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.entrypoint","typeLabel":"SparkJobPythonEntrypoint · object | SparkJobScalaEntrypoint · object | SparkJobJavaEntrypoint · object | SparkJobPythonNotebookEntrypoint · object | SparkJobScalaNotebookEntrypoint · object"},"driver_config":{"type":"object","title":"SparkJobDriverConfig","description":"Driver Config","x-fern-type-name":"SparkJobDriverConfig","properties":{"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.resources","typeLabel":"Resources · object"},"kustomize":{"description":"Patch driver pod spec fields like tolerations, nodeSelector, affinity, etc.","type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config.kustomize","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.driver_config","typeLabel":"SparkJobDriverConfig · object"},"executor_config":{"type":"object","title":"SparkJobExecutorConfig","description":"Executor Config","required":["instances"],"x-fern-type-name":"SparkJobExecutorConfig","properties":{"instances":{"oneOf":[{"type":"object","title":"SparkExecutorFixedInstances","description":"Fixed Instances","default":{"type":"fixed","count":1},"required":["type","count"],"x-fern-type-name":"SparkExecutorFixedInstances","properties":{"type":{"description":"+value=fixed","type":"string","enum":["fixed"],"default":"fixed","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.instances.oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Number of instances to start","type":"integer","minimum":0,"maximum":500,"default":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.instances.oneOf.0.count","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.instances.oneOf.0","typeLabel":"SparkExecutorFixedInstances · object"},{"type":"object","title":"SparkExecutorDynamicScaling","description":"Dynamic Scaling","default":{"type":"fixed","count":1},"required":["type","min","max"],"x-fern-type-name":"SparkExecutorDynamicScaling","properties":{"type":{"description":"+value=dynamic","type":"string","enum":["dynamic"],"default":"dynamic","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.instances.oneOf.1.type","typeLabel":"enum\u003cstring>"},"min":{"description":"Minimum number of instances to start / scale down to","type":"integer","minimum":0,"maximum":500,"default":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.instances.oneOf.1.min","typeLabel":"integer"},"max":{"description":"Maximum number of instances to scale up to","type":"integer","minimum":0,"maximum":500,"default":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.instances.oneOf.1.max","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.instances.oneOf.1","typeLabel":"SparkExecutorDynamicScaling · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.instances","typeLabel":"SparkExecutorFixedInstances · object | SparkExecutorDynamicScaling · object"},"resources":{"description":"Configure resource allocations, specify node constraints and capacity types to improve performance and reduce expenses. [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)","type":"object","required":["cpu_request","cpu_limit","memory_request","memory_limit","ephemeral_storage_request","ephemeral_storage_limit"],"properties":{"cpu_request":{"description":"Requested CPU which determines the minimum cost incurred. The CPU usage can exceed the requested\namount, but not the value specified in the limit. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5` or `0.05`","type":"number","minimum":0.001,"maximum":384,"default":0.2,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.cpu_request","typeLabel":"number"},"cpu_limit":{"description":"CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1 CPU core. Fractional CPU can be requested\nlike `0.5`. CPU limit should be >= cpu request.","type":"number","minimum":0.001,"maximum":384,"default":0.5,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.cpu_limit","typeLabel":"number"},"memory_request":{"description":"Requested memory which determines the minimum cost incurred. The unit of memory is in megabytes(MB).\nSo 1 means 1 MB and 2000 means 2GB.","type":"integer","minimum":1,"maximum":4000000,"default":200,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.memory_request","typeLabel":"integer"},"memory_limit":{"description":"Memory limit after which the application will be killed with an OOM error. The unit of memory is\nin megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit should be greater than memory request.","type":"integer","minimum":1,"maximum":4000000,"default":500,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.memory_limit","typeLabel":"integer"},"ephemeral_storage_request":{"description":"Requested disk storage. The unit of memory is in megabytes(MB).\nThis is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":1000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.ephemeral_storage_request","typeLabel":"integer"},"ephemeral_storage_limit":{"description":"Disk storage limit. The unit of memory is in megabytes(MB). Exceeding this limit will result in eviction.\nIt should be greater than the request. This is ephemeral storage and will be wiped out on pod restarts or eviction","type":"integer","minimum":1,"maximum":2000000,"default":2000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.ephemeral_storage_limit","typeLabel":"integer"},"shared_memory_size":{"description":"Define the shared memory requirements for your workload. Machine learning libraries like Pytorch can use Shared Memory\nfor inter-process communication. If you use this, we will mount a `tmpfs` backed volume at the `/dev/shm` directory.\nAny usage will also count against the workload's memory limit (`resources.memory_limit`) along with your workload's memory usage.\nIf the overall usage goes above `resources.memory_limit` the user process may get killed.\nShared Memory Size cannot be more than the defined Memory Limit for the workload.","type":"integer","minimum":64,"maximum":4000000,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.shared_memory_size","typeLabel":"integer"},"node":{"oneOf":[{"type":"object","title":"NodeSelector","description":"Constraints to select a Node - Specific GPU / Instance Families, On-Demand/Spot.","required":["type"],"x-fern-type-name":"NodeSelector","properties":{"type":{"description":"+value=node_selector","type":"string","enum":["node_selector"],"default":"node_selector","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.node.oneOf.0.type","typeLabel":"enum\u003cstring>"},"instance_families":{"description":"Instance family of the underlying machine to use. Multiple instance families can be supplied.\nThe workload is guaranteed to be scheduled on one of them.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.node.oneOf.0.instance_families.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.node.oneOf.0.instance_families","typeLabel":"string[]"},"capacity_type":{"description":"Configure what type of nodes to run the app. By default no placement logic is applied.\n\"spot_fallback_on_demand\" will try to place the application on spot nodes but will fallback to on-demand when spot nodes are not available.\n\"spot\" will strictly place the application on spot nodes.\n\"on_demand\" will strictly place the application on on-demand nodes.","type":"string","enum":["spot_fallback_on_demand","spot","on_demand"],"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.node.oneOf.0.capacity_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.node.oneOf.0","typeLabel":"NodeSelector · object"},{"type":"object","title":"NodepoolSelector","description":"Specify one or more nodepools to run your application on.","required":["type"],"x-fern-type-name":"NodepoolSelector","properties":{"type":{"description":"+value=nodepool_selector","type":"string","enum":["nodepool_selector"],"default":"nodepool_selector","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.node.oneOf.1.type","typeLabel":"enum\u003cstring>"},"nodepools":{"description":"Nodepools where you want to run your workload. Multiple nodepools can be selected.\n The workload is guaranteed to be scheduled on one of the nodepool","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.node.oneOf.1.nodepools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.node.oneOf.1.nodepools","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.node.oneOf.1","typeLabel":"NodepoolSelector · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.node","typeLabel":"NodeSelector · object | NodepoolSelector · object"},"devices":{"description":"Define custom device or accelerator requirements for your workload. We currently support NVIDIA GPUs, AWS Inferentia Accelerators, Single Host TPU Slices.","type":"array","items":{"oneOf":[{"type":"object","title":"NvidiaGPU","required":["type","count"],"x-fern-type-name":"NvidiaGPU","properties":{"type":{"description":"+value=nvidia_gpu","type":"string","enum":["nvidia_gpu"],"default":"nvidia_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of GPUs to provide to the application\nNote the exact count and max count available for a given GPU type depends on cloud provider and cluster type.","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.0.count","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.0","typeLabel":"NvidiaGPU · object"},{"type":"object","title":"AWSInferentia","required":["type","count"],"x-fern-type-name":"AWSInferentia","properties":{"type":{"description":"+value=aws_inferentia","type":"string","enum":["aws_inferentia"],"default":"aws_inferentia","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"count":{"description":"Count of Inferentia accelerator chips to provide to the application","type":"integer","minimum":1,"maximum":16,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.1.count","typeLabel":"integer"},"name":{"description":"Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].\nThis field is required for Node Selector and can be ignored in Nodepool Selector.","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.1","typeLabel":"AWSInferentia · object"},{"type":"object","title":"NvidiaMIGGPU","required":["type","profile"],"x-fern-type-name":"NvidiaMIGGPU","properties":{"type":{"description":"+value=nvidia_mig_gpu","type":"string","enum":["nvidia_mig_gpu"],"default":"nvidia_mig_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"profile":{"description":"Name of the MIG profile to use. One of the following based on gpu type\nPlease refer to https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles for more details\nA30 - [1g.6gb, 2g.12gb, 4g.24gb]\nA100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]\nA100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb]\nH100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]\nH100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]\nH200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb, 7g.141gb]\nB200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb, 7g.180gb]\nRTX PRO 6000 96 GB - [1g.24gb, 2g.48gb, 4g.96gb]\nRTX PRO 4500 32 GB - [1g.16gb, 2g.32gb]","type":"string","enum":["1g.6gb","2g.12gb","1g.5gb","1g.10gb","2g.10gb","3g.20gb","4g.20gb","1g.20gb","2g.20gb","3g.40gb","4g.40gb","1g.12gb","1g.24gb","2g.24gb","3g.47gb","4g.47gb","3g.48gb","4g.48gb","2g.48gb","4g.96gb","1g.16gb","2g.32gb","1g.18gb","1g.35gb","2g.35gb","3g.71gb","4g.71gb","1g.23gb","1g.45gb","2g.45gb","3g.90gb","4g.90gb","4g.24gb","7g.40gb","7g.80gb","7g.94gb","7g.96gb","7g.141gb","7g.180gb"],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.2.profile","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.2","typeLabel":"NvidiaMIGGPU · object"},{"type":"object","title":"NvidiaTimeslicingGPU","required":["type","gpu_memory"],"x-fern-type-name":"NvidiaTimeslicingGPU","properties":{"type":{"description":"+value=nvidia_timeslicing_gpu","type":"string","enum":["nvidia_timeslicing_gpu"],"default":"nvidia_timeslicing_gpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"gpu_memory":{"description":"Amount of GPU memory (in MB) to allocate. Please note, this limit is not being enforced today but will be in future. Applications are expected to operate in co-opertative mode","type":"integer","minimum":1,"maximum":400000,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.3.gpu_memory","typeLabel":"integer"},"name":{"description":"Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB, A100_80GB]\nThis field is required for Node Selector and can be ignored in Nodepool Selector.\nOne instance of the card contains the following amount of memory -\nP4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB, A100_40GB: 40GB, A100_80GB: 80 GB","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.3.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.3","typeLabel":"NvidiaTimeslicingGPU · object"},{"type":"object","title":"GcpTPU","required":["type","name","topology"],"x-fern-type-name":"GcpTPU","properties":{"type":{"description":"+value=gcp_tpu","type":"string","enum":["gcp_tpu"],"default":"gcp_tpu","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the TPU Type. One of\n - `tpu-v4-podslice` (TPU v4, ct4p)\n - `tpu-v5-lite-device` (TPU v5e, ct5l)\n - `tpu-v5-lite-podslice` (TPU v5e, ct5lp)\n - `tpu-v5p-slice` (TPU v5p, ct5p)","type":"string","pattern":"^tpu-[a-z\\d\\-]+$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.4.name","typeLabel":"string"},"topology":{"description":"Topology of the TPU slices. Currently only single-host topology is supported.\n Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)\n Allowed Values:\n - `2x2x1` for `tpu-v4-podslice`\n - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`\n - `2x2x1` for `tpu-v5p-slice`","type":"string","pattern":"^\\d+x\\d+(x\\d+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.4.topology","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX].oneOf.4","typeLabel":"GcpTPU · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices.items.[INDEX]","typeLabel":"NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources.devices","typeLabel":"(NvidiaGPU · object | AWSInferentia · object | NvidiaMIGGPU · object | NvidiaTimeslicingGPU · object | GcpTPU · object)[]"}},"title":"Resources","x-fern-type-name":"Resources","uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.resources","typeLabel":"Resources · object"},"kustomize":{"description":"Patch executor pod spec fields like tolerations, nodeSelector, affinity, etc.","type":"object","uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config.kustomize","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.executor_config","typeLabel":"SparkJobExecutorConfig · object"},"trigger":{"oneOf":[{"type":"object","title":"Manual","description":"Trigger the job manually. [Docs](https://docs.truefoundry.com/docs/deploy-a-cron-job)","default":{"type":"manual"},"required":["type"],"x-fern-type-name":"Manual","properties":{"type":{"description":"+value=manual","type":"string","enum":["manual"],"default":"manual","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.trigger.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.trigger.oneOf.0","typeLabel":"Manual · object"},{"type":"object","title":"Schedule","description":"Run the job on a schedule. [Docs](https://docs.truefoundry.com/docs/deploy-a-cron-job)","default":{"type":"manual"},"required":["type","schedule","concurrency_policy"],"x-fern-type-name":"Schedule","properties":{"type":{"description":"+value=scheduled","type":"string","enum":["scheduled"],"default":"scheduled","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.trigger.oneOf.1.type","typeLabel":"enum\u003cstring>"},"schedule":{"description":"Specify the schedule for this job to be run periodically in cron format.\n```\n* * * * *\n| | | | |\n| | | | |___ day of week (0-6) (Sunday is 0)\n| | | |_____ month (1-12)\n| | |_______ day of month (1-31)\n| |_________ hour (0-23)\n|___________ minute (0-59)\n```","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.trigger.oneOf.1.schedule","typeLabel":"string"},"concurrency_policy":{"description":"Choose whether to allow this job to run while another instance of the job is running, or to replace the currently running instance. Allow\nwill enable multiple instances of this job to run. Forbid will keep the current instance of the job running and stop a new instance from being run.\nReplace will terminate any currently running instance of the job and start a new one.","type":"string","enum":["Forbid","Allow","Replace"],"default":"Forbid","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.trigger.oneOf.1.concurrency_policy","typeLabel":"enum\u003cstring>"},"timezone":{"description":"Timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time.\nhttps://docs.truefoundry.com/docs/list-of-supported-timezones","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.trigger.oneOf.1.timezone","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.trigger.oneOf.1","typeLabel":"Schedule · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.11.trigger","typeLabel":"Manual · object | Schedule · object"},"env":{"oneOf":[{"description":"Configure environment variables to be injected in the service either as plain text. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"object","default":null,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.env.oneOf.0","typeLabel":"object"},{"description":"Configure environment variables to be injected in the service either as plain text. [Docs](https://docs.truefoundry.com/docs/env-variables)","type":"null","default":null,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.env.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.11.env","typeLabel":"object | null"},"spark_conf":{"oneOf":[{"description":"Extra configuration properties to be passed to the spark job. [Docs](https://spark.apache.org/docs/latest/configuration.html)","type":"object","default":null,"additionalProperties":{"type":"string","minLength":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.spark_conf.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.spark_conf.oneOf.0","typeLabel":"object"},{"description":"Extra configuration properties to be passed to the spark job. [Docs](https://spark.apache.org/docs/latest/configuration.html)","type":"null","default":null,"additionalProperties":{"type":"string","minLength":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.spark_conf.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.spark_conf.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.11.spark_conf","typeLabel":"object | null"},"mounts":{"description":"Configure volumes to be mounted to driver and executors. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)","type":"array","items":{"type":"object","required":["type","mount_path","volume_fqn"],"properties":{"type":{"description":"+value=volume","type":"string","enum":["volume"],"default":"volume","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.mounts.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"mount_path":{"description":"Absolute file path where the volume will be mounted.","type":"string","pattern":"^\\/(?:[^/\\n]+\\/*)*[^/\\n]+(\\.[^/\\n]+)?$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.mounts.items.[INDEX].mount_path","typeLabel":"string"},"volume_fqn":{"description":"The TrueFoundry volume or namespace-scoped Kubernetes PVC that needs to be mounted.","type":"string","pattern":"^(tfy-volume:\\/\\/.+:.+:.+|tfy-k8s-volume:\\/\\/.+)$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.mounts.items.[INDEX].volume_fqn","typeLabel":"string"},"sub_path":{"description":"Sub path within the volume to mount. Defaults to root of the volume.","type":"string","pattern":"^(?:[^/\\n]+/*)*[^/\\n]+(\\.[^/\\n]+)?$","uniqueKey":"data.oneOf.4.manifest.oneOf.11.mounts.items.[INDEX].sub_path","typeLabel":"string"}},"title":"VolumeMount","x-fern-type-name":"VolumeMount","uniqueKey":"data.oneOf.4.manifest.oneOf.11.mounts.items.[INDEX]","typeLabel":"VolumeMount · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.mounts","typeLabel":"VolumeMount · object[]"},"retries":{"description":"Specify the maximum number of attempts to retry a job before it is marked as failed.","type":"integer","minimum":0,"maximum":10,"default":0,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.retries","typeLabel":"integer"},"service_account":{"description":"Service Account","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.service_account","typeLabel":"string"},"alerts":{"description":"Configure alerts to be sent when the spark job starts/fails/completes","type":"array","items":{"description":"Describes the configuration for the job alerts","type":"object","properties":{"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].to_emails.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].to_emails","typeLabel":"string[]"},"notification_target":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].notification_target.oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].notification_target.oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].notification_target.oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].notification_target.oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].notification_target.oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].notification_target.oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].notification_target.oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].notification_target.oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBot","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].notification_target.oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].notification_target.oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].notification_target.oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].notification_target.oneOf.2.channels","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].notification_target.oneOf.2","typeLabel":"SlackBot · object"},{"type":"object","title":"PagerDuty","description":"Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.\n+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForAlertRule","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].notification_target.oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].notification_target.oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].notification_target.oneOf.3","typeLabel":"PagerDuty · object"}],"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].notification_target","typeLabel":"Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object"},"on_start":{"description":"Send an alert when the job starts","type":"boolean","default":false,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].on_start","typeLabel":"boolean"},"on_completion":{"type":"boolean","default":false,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].on_completion","typeLabel":"boolean"},"on_failure":{"description":"Send an alert when the job fails","type":"boolean","default":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX].on_failure","typeLabel":"boolean"}},"title":"JobAlert","x-fern-type-name":"JobAlert","uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts.items.[INDEX]","typeLabel":"JobAlert · object"},"uniqueKey":"data.oneOf.4.manifest.oneOf.11.alerts","typeLabel":"JobAlert · object[]"},"workspace_fqn":{"description":"Fully qualified name of the workspace","type":"string","uniqueKey":"data.oneOf.4.manifest.oneOf.11.workspace_fqn","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.11","typeLabel":"SparkJob · object"},{"type":"object","title":"Intercept","description":"Deployment manifest defining the application configuration.","required":["type","name","rules"],"x-fern-type-name":"Intercept","properties":{"type":{"description":"+value=intercept","type":"string","enum":["intercept"],"default":"intercept","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.12.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the service this intercept is for","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.12.name","typeLabel":"string"},"rules":{"type":"array","items":{"type":"object","required":["port","action"],"properties":{"port":{"description":"Port of service to be intercepted","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.12.rules.items.[INDEX].port","typeLabel":"integer"},"action":{"oneOf":[{"type":"object","title":"ForwardAction","description":"Action to take on succesful match","required":["type","service_uri","port"],"x-fern-type-name":"ForwardAction","properties":{"type":{"description":"+value=forward","type":"string","enum":["forward"],"default":"forward","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.12.rules.items.[INDEX].action.oneOf.0.type","typeLabel":"enum\u003cstring>"},"service_uri":{"description":"Service uri to redirect to. This is the kubernetes fully qualified domain name that the target service can be reached on\nEg - For a service called `sample-service` in workspace `ws` this would be `sample-service.ws.svc.cluster.local","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.12.rules.items.[INDEX].action.oneOf.0.service_uri","typeLabel":"string"},"port":{"description":"Port to redirect the service traffic to","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.12.rules.items.[INDEX].action.oneOf.0.port","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.12.rules.items.[INDEX].action.oneOf.0","typeLabel":"ForwardAction · object"},{"type":"object","title":"MirrorAction","description":"Action to take on succesful match","required":["type","service_uri","port","percentage"],"x-fern-type-name":"MirrorAction","properties":{"type":{"description":"+value=mirror","type":"string","enum":["mirror"],"default":"mirror","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.12.rules.items.[INDEX].action.oneOf.1.type","typeLabel":"enum\u003cstring>"},"service_uri":{"description":"Service uri to mirror to. This is the kubernetes fully qualified domain name that the target service can be reached on\nEg - For a service called `sample-service` in workspace `ws` this would be `sample-service.ws.svc.cluster.local","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.12.rules.items.[INDEX].action.oneOf.1.service_uri","typeLabel":"string"},"port":{"description":"Port to redirect the service traffic to","type":"integer","minimum":0,"maximum":65535,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.12.rules.items.[INDEX].action.oneOf.1.port","typeLabel":"integer"},"percentage":{"description":"Percentage of requests to mirror","type":"integer","minimum":0,"maximum":100,"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.12.rules.items.[INDEX].action.oneOf.1.percentage","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.12.rules.items.[INDEX].action.oneOf.1","typeLabel":"MirrorAction · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.12.rules.items.[INDEX].action","typeLabel":"ForwardAction · object | MirrorAction · object"},"match":{"type":"object","required":["type","name","exact_match"],"properties":{"type":{"description":"+value=header","type":"string","enum":["header"],"default":"header","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.12.rules.items.[INDEX].match.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Header name to match on","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.12.rules.items.[INDEX].match.name","typeLabel":"string"},"exact_match":{"description":"Header value to match on","type":"string","default":"","isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.12.rules.items.[INDEX].match.exact_match","typeLabel":"string"}},"title":"HeaderMatch","x-fern-type-name":"HeaderMatch","uniqueKey":"data.oneOf.4.manifest.oneOf.12.rules.items.[INDEX].match","typeLabel":"HeaderMatch · object"}},"uniqueKey":"data.oneOf.4.manifest.oneOf.12.rules.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.12.rules","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.4.manifest.oneOf.12","typeLabel":"Intercept · object"}],"isRequired":true,"uniqueKey":"data.oneOf.4.manifest","typeLabel":"Service · object | AsyncService · object | Job · object | Notebook · object | Codeserver · object | SSHServer · object | RStudio · object | Helm · object | Volume · object | ApplicationSet · object | Workflow · object | SparkJob · object | Intercept · object"},"createdBySubject":{"type":"object","title":"Subject","description":"Subject (user or service account) that created this deployment","required":["subjectId","subjectType"],"x-fern-type-name":"Subject","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.4.createdBySubject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.4.createdBySubject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.4.createdBySubject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.4.createdBySubject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.createdBySubject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.4.createdBySubject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.4.createdBySubject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.createdBySubject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.4.createdBySubject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.4.createdBySubject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.createdBySubject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.4.createdBySubject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.4.createdBySubject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.createdBySubject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.4.createdBySubject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.4.createdBySubject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.createdBySubject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.oneOf.4.createdBySubject","typeLabel":"Subject · object"},"id":{"oneOf":[{"type":"string","description":"Unique identifier of the deployment","uniqueKey":"data.oneOf.4.id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique identifier of the deployment","uniqueKey":"data.oneOf.4.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.id","typeLabel":"string | null"},"version":{"oneOf":[{"type":"number","description":"Incremental version number within the application","uniqueKey":"data.oneOf.4.version.oneOf.0","typeLabel":"number"},{"type":"null","description":"Incremental version number within the application","uniqueKey":"data.oneOf.4.version.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.version","typeLabel":"number | null"},"fqn":{"oneOf":[{"type":"string","description":"FQN of the deployment","uniqueKey":"data.oneOf.4.fqn.oneOf.0","typeLabel":"string"},{"type":"null","description":"FQN of the deployment","uniqueKey":"data.oneOf.4.fqn.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.fqn","typeLabel":"string | null"},"applicationId":{"oneOf":[{"type":"string","description":"Unique identifier of the application this deployment belongs to","uniqueKey":"data.oneOf.4.applicationId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique identifier of the application this deployment belongs to","uniqueKey":"data.oneOf.4.applicationId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.applicationId","typeLabel":"string | null"},"application":{"oneOf":[{"type":"object","title":"ApplicationSummary","description":"Summary of the parent application (included when requested)","required":["lifecycleStage"],"x-fern-type-name":"ApplicationSummary","properties":{"lifecycleStage":{"type":"string","title":"ApplicationLifecycleStage","description":"Current lifecycle stage of the application","enum":["active","deleting","deletion_failed"],"x-fern-type-name":"ApplicationLifecycleStage","isRequired":true,"uniqueKey":"data.oneOf.4.application.oneOf.0.lifecycleStage","typeLabel":"enum\u003cstring>"},"id":{"oneOf":[{"type":"string","description":"Unique identifier of the application","uniqueKey":"data.oneOf.4.application.oneOf.0.id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique identifier of the application","uniqueKey":"data.oneOf.4.application.oneOf.0.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.application.oneOf.0.id","typeLabel":"string | null"},"fqn":{"oneOf":[{"type":"string","description":"FQN of the application","uniqueKey":"data.oneOf.4.application.oneOf.0.fqn.oneOf.0","typeLabel":"string"},{"type":"null","description":"FQN of the application","uniqueKey":"data.oneOf.4.application.oneOf.0.fqn.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.application.oneOf.0.fqn","typeLabel":"string | null"},"name":{"oneOf":[{"type":"string","description":"Human-readable application name","uniqueKey":"data.oneOf.4.application.oneOf.0.name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Human-readable application name","uniqueKey":"data.oneOf.4.application.oneOf.0.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.application.oneOf.0.name","typeLabel":"string | null"},"type":{"oneOf":[{"type":"string","title":"ApplicationType","description":"Type of the application","enum":["async-service","service","job","spark-job","helm","notebook","spark-notebook","codeserver","rstudio","ssh-server","volume","application","application-set","intercept","workflow"],"x-fern-type-name":"ApplicationType","uniqueKey":"data.oneOf.4.application.oneOf.0.type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"data.oneOf.4.application.oneOf.0.type.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.application.oneOf.0.type","typeLabel":"enum\u003cstring> | null"},"metadata":{"oneOf":[{"type":"object","title":"ApplicationMetadata","description":"Application metadata including pause state and sync info","x-fern-type-name":"ApplicationMetadata","properties":{"paused":{"oneOf":[{"type":"boolean","description":"Explicit pause state. true = user has paused the app (all pods removed). false = user has explicitly resumed the app. null/undefined = user has never toggled pause; the app is managed normally, but autoshutdown may have scaled it to zero pods due to inactivity.","uniqueKey":"data.oneOf.4.application.oneOf.0.metadata.oneOf.0.paused.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Explicit pause state. true = user has paused the app (all pods removed). false = user has explicitly resumed the app. null/undefined = user has never toggled pause; the app is managed normally, but autoshutdown may have scaled it to zero pods due to inactivity.","uniqueKey":"data.oneOf.4.application.oneOf.0.metadata.oneOf.0.paused.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.application.oneOf.0.metadata.oneOf.0.paused","typeLabel":"boolean | null"}},"uniqueKey":"data.oneOf.4.application.oneOf.0.metadata.oneOf.0","typeLabel":"ApplicationMetadata · object"},{"type":"null","uniqueKey":"data.oneOf.4.application.oneOf.0.metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.application.oneOf.0.metadata","typeLabel":"ApplicationMetadata · object | null"},"workspaceId":{"oneOf":[{"type":"string","description":"Unique identifier of the workspace this application belongs to","uniqueKey":"data.oneOf.4.application.oneOf.0.workspaceId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique identifier of the workspace this application belongs to","uniqueKey":"data.oneOf.4.application.oneOf.0.workspaceId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.application.oneOf.0.workspaceId","typeLabel":"string | null"},"activeVersion":{"oneOf":[{"type":"integer","description":"Version number of the currently active deployment","uniqueKey":"data.oneOf.4.application.oneOf.0.activeVersion.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Version number of the currently active deployment","uniqueKey":"data.oneOf.4.application.oneOf.0.activeVersion.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.application.oneOf.0.activeVersion","typeLabel":"integer | null"},"applicationSetId":{"oneOf":[{"type":"string","description":"Unique identifier of the application set this application belongs to, if any","uniqueKey":"data.oneOf.4.application.oneOf.0.applicationSetId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique identifier of the application set this application belongs to, if any","uniqueKey":"data.oneOf.4.application.oneOf.0.applicationSetId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.application.oneOf.0.applicationSetId","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.4.application.oneOf.0","typeLabel":"ApplicationSummary · object"},{"type":"null","uniqueKey":"data.oneOf.4.application.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.application","typeLabel":"ApplicationSummary · object | null"},"createdAt":{"oneOf":[{"format":"date-time","type":"string","description":"Timestamp when the deployment was created","uniqueKey":"data.oneOf.4.createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Timestamp when the deployment was created","uniqueKey":"data.oneOf.4.createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.createdAt","typeLabel":"string\u003cdate-time> | null"},"updatedAt":{"oneOf":[{"format":"date-time","type":"string","description":"Timestamp when the deployment was last updated","uniqueKey":"data.oneOf.4.updatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Timestamp when the deployment was last updated","uniqueKey":"data.oneOf.4.updatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.updatedAt","typeLabel":"string\u003cdate-time> | null"},"deploymentBuilds":{"oneOf":[{"description":"Builds associated with this deployment, one per component built from source","type":"array","items":{"type":"object","properties":{"id":{"oneOf":[{"type":"string","description":"System-generated unique identifier for the deployment build.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].id.oneOf.0","typeLabel":"string"},{"type":"null","description":"System-generated unique identifier for the deployment build.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].id","typeLabel":"string | null"},"deploymentId":{"oneOf":[{"type":"string","description":"System-generated unique identifier for the deployment this build belongs to.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].deploymentId.oneOf.0","typeLabel":"string"},{"type":"null","description":"System-generated unique identifier for the deployment this build belongs to.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].deploymentId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].deploymentId","typeLabel":"string | null"},"componentName":{"oneOf":[{"type":"string","description":"Human-readable name of the application component this build produces an image for.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].componentName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Human-readable name of the application component this build produces an image for.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].componentName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].componentName","typeLabel":"string | null"},"build":{"oneOf":[{"type":"object","title":"BuildInfo","description":"Underlying build record.","required":["name","status"],"x-fern-type-name":"BuildInfo","properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].build.oneOf.0.name","typeLabel":"string"},"status":{"type":"number","enum":[20,30,40],"description":"\n Status of the build:\n STARTED = 20,\n SUCCEEDED = 30,\n FAILED = 40\n ","example":20,"isRequired":true,"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].build.oneOf.0.status","typeLabel":"enum\u003cnumber>"}},"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].build.oneOf.0","typeLabel":"BuildInfo · object"},{"type":"null","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].build.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].build","typeLabel":"BuildInfo · object | null"},"buildId":{"oneOf":[{"type":"string","description":"System-generated unique identifier for the build.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].buildId.oneOf.0","typeLabel":"string"},{"type":"null","description":"System-generated unique identifier for the build.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].buildId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].buildId","typeLabel":"string | null"},"imageUri":{"oneOf":[{"type":"string","description":"Fully-qualified URI of the image produced by this build.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].imageUri.oneOf.0","typeLabel":"string"},{"type":"null","description":"Fully-qualified URI of the image produced by this build.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].imageUri.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].imageUri","typeLabel":"string | null"},"name":{"oneOf":[{"type":"string","description":"Human-readable name of the build, accepted as the `pipelineRunName` by the build logs API.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Human-readable name of the build, accepted as the `pipelineRunName` by the build logs API.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].name","typeLabel":"string | null"},"status":{"oneOf":[{"type":"string","enum":["STARTED","SUCCEEDED","FAILED"],"description":"Current status of the build.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].status.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["STARTED","SUCCEEDED","FAILED"],"description":"Current status of the build.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].status.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].status","typeLabel":"enum\u003cstring> | null"},"getLogsUrl":{"oneOf":[{"type":"string","description":"URL for fetching this build’s logs.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].getLogsUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"URL for fetching this build’s logs.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].getLogsUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].getLogsUrl","typeLabel":"string | null"},"tailLogsUrl":{"oneOf":[{"type":"string","description":"JSON-encoded connection details for streaming this build’s logs.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].tailLogsUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"JSON-encoded connection details for streaming this build’s logs.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].tailLogsUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].tailLogsUrl","typeLabel":"string | null"},"logsStartTs":{"oneOf":[{"type":"string","description":"Timestamp the build started, in nanoseconds. Pass as `startTs` when fetching build logs.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].logsStartTs.oneOf.0","typeLabel":"string"},{"type":"null","description":"Timestamp the build started, in nanoseconds. Pass as `startTs` when fetching build logs.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].logsStartTs.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].logsStartTs","typeLabel":"string | null"},"metadata":{"oneOf":[{"type":"object","description":"Additional metadata recorded against the build.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].metadata.oneOf.0","typeLabel":"object"},{"type":"null","description":"Additional metadata recorded against the build.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].metadata","typeLabel":"object | null"},"createdAt":{"oneOf":[{"format":"date-time","type":"string","description":"Timestamp when the build was created.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Timestamp when the build was created.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time> | null"},"updatedAt":{"oneOf":[{"format":"date-time","type":"string","description":"Timestamp when the build was last updated.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].updatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Timestamp when the build was last updated.","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].updatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX].updatedAt","typeLabel":"string\u003cdate-time> | null"}},"title":"DeploymentBuild","x-fern-type-name":"DeploymentBuild","uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0.items.[INDEX]","typeLabel":"DeploymentBuild · object"},"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.0","typeLabel":"DeploymentBuild · object[]"},{"description":"Builds associated with this deployment, one per component built from source","type":"null","items":{"type":"object","properties":{"id":{"oneOf":[{"type":"string","description":"System-generated unique identifier for the deployment build."},{"type":"null","description":"System-generated unique identifier for the deployment build."}]},"deploymentId":{"oneOf":[{"type":"string","description":"System-generated unique identifier for the deployment this build belongs to."},{"type":"null","description":"System-generated unique identifier for the deployment this build belongs to."}]},"componentName":{"oneOf":[{"type":"string","description":"Human-readable name of the application component this build produces an image for."},{"type":"null","description":"Human-readable name of the application component this build produces an image for."}]},"build":{"oneOf":[{"type":"object","title":"BuildInfo","description":"Underlying build record.","required":["name","status"],"x-fern-type-name":"BuildInfo","properties":{"name":{"type":"string"},"status":{"type":"number","enum":[20,30,40],"description":"\n Status of the build:\n STARTED = 20,\n SUCCEEDED = 30,\n FAILED = 40\n ","example":20}}},{"type":"null"}]},"buildId":{"oneOf":[{"type":"string","description":"System-generated unique identifier for the build."},{"type":"null","description":"System-generated unique identifier for the build."}]},"imageUri":{"oneOf":[{"type":"string","description":"Fully-qualified URI of the image produced by this build."},{"type":"null","description":"Fully-qualified URI of the image produced by this build."}]},"name":{"oneOf":[{"type":"string","description":"Human-readable name of the build, accepted as the `pipelineRunName` by the build logs API."},{"type":"null","description":"Human-readable name of the build, accepted as the `pipelineRunName` by the build logs API."}]},"status":{"oneOf":[{"type":"string","enum":["STARTED","SUCCEEDED","FAILED"],"description":"Current status of the build."},{"type":"null","enum":["STARTED","SUCCEEDED","FAILED"],"description":"Current status of the build."}]},"getLogsUrl":{"oneOf":[{"type":"string","description":"URL for fetching this build’s logs."},{"type":"null","description":"URL for fetching this build’s logs."}]},"tailLogsUrl":{"oneOf":[{"type":"string","description":"JSON-encoded connection details for streaming this build’s logs."},{"type":"null","description":"JSON-encoded connection details for streaming this build’s logs."}]},"logsStartTs":{"oneOf":[{"type":"string","description":"Timestamp the build started, in nanoseconds. Pass as `startTs` when fetching build logs."},{"type":"null","description":"Timestamp the build started, in nanoseconds. Pass as `startTs` when fetching build logs."}]},"metadata":{"oneOf":[{"type":"object","description":"Additional metadata recorded against the build."},{"type":"null","description":"Additional metadata recorded against the build."}]},"createdAt":{"oneOf":[{"format":"date-time","type":"string","description":"Timestamp when the build was created."},{"format":"date-time","type":"null","description":"Timestamp when the build was created."}]},"updatedAt":{"oneOf":[{"format":"date-time","type":"string","description":"Timestamp when the build was last updated."},{"format":"date-time","type":"null","description":"Timestamp when the build was last updated."}]}},"title":"DeploymentBuild","x-fern-type-name":"DeploymentBuild"},"uniqueKey":"data.oneOf.4.deploymentBuilds.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentBuilds","typeLabel":"DeploymentBuild · object[] | null"},"deploymentStatuses":{"oneOf":[{"description":"Full history of deployment status transitions","type":"array","items":{"type":"object","properties":{"id":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].id","typeLabel":"string | null"},"deploymentId":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].deploymentId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].deploymentId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].deploymentId","typeLabel":"string | null"},"status":{"oneOf":[{"type":"string","title":"DeploymentStatusValue","enum":["INITIALIZED","BUILD_SUCCESS","BUILD_FAILED","DEPLOY_FAILED","DEPLOY_FAILED_WITH_RETRY","DEPLOY_SUCCESS","ROLLOUT_STARTED","SET_TRAFFIC","PAUSED","FAILED","CANCELLED","REDEPLOY_STARTED","BUILDING"],"x-fern-type-name":"DeploymentStatusValue","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].status.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].status.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].status","typeLabel":"enum\u003cstring> | null"},"state":{"oneOf":[{"type":"object","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].state.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].state.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].state","typeLabel":"object | null"},"transition":{"oneOf":[{"type":"string","title":"DeploymentTransition","enum":["BUILDING","DEPLOYING","REUSING_EXISTING_BUILD","COMPONENTS_DEPLOYING","WAITING",""],"x-fern-type-name":"DeploymentTransition","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].transition.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].transition.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].transition","typeLabel":"enum\u003cstring> | null"},"message":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].message.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].message.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].message","typeLabel":"string | null"},"retryCount":{"oneOf":[{"type":"number","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].retryCount.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].retryCount.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].retryCount","typeLabel":"number | null"},"createdAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time> | null"},"updatedAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].updatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].updatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX].updatedAt","typeLabel":"string\u003cdate-time> | null"}},"title":"DeploymentStatus","x-fern-type-name":"DeploymentStatus","uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0.items.[INDEX]","typeLabel":"DeploymentStatus · object"},"uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.0","typeLabel":"DeploymentStatus · object[]"},{"description":"Full history of deployment status transitions","type":"null","items":{"type":"object","properties":{"id":{"oneOf":[{"type":"string"},{"type":"null"}]},"deploymentId":{"oneOf":[{"type":"string"},{"type":"null"}]},"status":{"oneOf":[{"type":"string","title":"DeploymentStatusValue","enum":["INITIALIZED","BUILD_SUCCESS","BUILD_FAILED","DEPLOY_FAILED","DEPLOY_FAILED_WITH_RETRY","DEPLOY_SUCCESS","ROLLOUT_STARTED","SET_TRAFFIC","PAUSED","FAILED","CANCELLED","REDEPLOY_STARTED","BUILDING"],"x-fern-type-name":"DeploymentStatusValue"},{"type":"null"}]},"state":{"oneOf":[{"type":"object"},{"type":"null"}]},"transition":{"oneOf":[{"type":"string","title":"DeploymentTransition","enum":["BUILDING","DEPLOYING","REUSING_EXISTING_BUILD","COMPONENTS_DEPLOYING","WAITING",""],"x-fern-type-name":"DeploymentTransition"},{"type":"null"}]},"message":{"oneOf":[{"type":"string"},{"type":"null"}]},"retryCount":{"oneOf":[{"type":"number"},{"type":"null"}]},"createdAt":{"oneOf":[{"format":"date-time","type":"string"},{"format":"date-time","type":"null"}]},"updatedAt":{"oneOf":[{"format":"date-time","type":"string"},{"format":"date-time","type":"null"}]}},"title":"DeploymentStatus","x-fern-type-name":"DeploymentStatus"},"uniqueKey":"data.oneOf.4.deploymentStatuses.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.deploymentStatuses","typeLabel":"DeploymentStatus · object[] | null"},"currentStatusId":{"oneOf":[{"type":"string","description":"Unique identifier of the current deployment status record","uniqueKey":"data.oneOf.4.currentStatusId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique identifier of the current deployment status record","uniqueKey":"data.oneOf.4.currentStatusId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.currentStatusId","typeLabel":"string | null"},"currentStatus":{"oneOf":[{"type":"object","title":"DeploymentStatus","description":"Current deployment status object.","x-fern-type-name":"DeploymentStatus","properties":{"id":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.id","typeLabel":"string | null"},"deploymentId":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.deploymentId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.deploymentId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.deploymentId","typeLabel":"string | null"},"status":{"oneOf":[{"type":"string","title":"DeploymentStatusValue","enum":["INITIALIZED","BUILD_SUCCESS","BUILD_FAILED","DEPLOY_FAILED","DEPLOY_FAILED_WITH_RETRY","DEPLOY_SUCCESS","ROLLOUT_STARTED","SET_TRAFFIC","PAUSED","FAILED","CANCELLED","REDEPLOY_STARTED","BUILDING"],"x-fern-type-name":"DeploymentStatusValue","uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.status.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.status.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.status","typeLabel":"enum\u003cstring> | null"},"state":{"oneOf":[{"type":"object","uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.state.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.state.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.state","typeLabel":"object | null"},"transition":{"oneOf":[{"type":"string","title":"DeploymentTransition","enum":["BUILDING","DEPLOYING","REUSING_EXISTING_BUILD","COMPONENTS_DEPLOYING","WAITING",""],"x-fern-type-name":"DeploymentTransition","uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.transition.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.transition.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.transition","typeLabel":"enum\u003cstring> | null"},"message":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.message.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.message.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.message","typeLabel":"string | null"},"retryCount":{"oneOf":[{"type":"number","uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.retryCount.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.retryCount.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.retryCount","typeLabel":"number | null"},"createdAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.createdAt","typeLabel":"string\u003cdate-time> | null"},"updatedAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.updatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.updatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.currentStatus.oneOf.0.updatedAt","typeLabel":"string\u003cdate-time> | null"}},"uniqueKey":"data.oneOf.4.currentStatus.oneOf.0","typeLabel":"DeploymentStatus · object"},{"type":"null","uniqueKey":"data.oneOf.4.currentStatus.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.currentStatus","typeLabel":"DeploymentStatus · object | null"},"appliedRecommendations":{"oneOf":[{"description":"Applied recommendations for this deployment","type":"array","items":{"type":"object","properties":{"recommendationData":{"type":"object","additionalProperties":true,"isRequired":true,"uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].recommendationData","typeLabel":"object"},"recommendationType":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].recommendationType","typeLabel":"string"},"expiryTimestamp":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].expiryTimestamp","typeLabel":"string\u003cdate-time>"},"id":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].id","typeLabel":"string | null"},"clusterId":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].clusterId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].clusterId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].clusterId","typeLabel":"string | null"},"applicationId":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].applicationId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].applicationId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].applicationId","typeLabel":"string | null"},"deploymentId":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].deploymentId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].deploymentId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].deploymentId","typeLabel":"string | null"},"applicationVersion":{"oneOf":[{"type":"integer","uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].applicationVersion.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].applicationVersion.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].applicationVersion","typeLabel":"integer | null"},"appliedDeploymentId":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].appliedDeploymentId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].appliedDeploymentId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].appliedDeploymentId","typeLabel":"string | null"},"createdAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time> | null"},"updatedAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].updatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].updatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX].updatedAt","typeLabel":"string\u003cdate-time> | null"}},"required":["recommendationData","recommendationType","expiryTimestamp"],"title":"Recommendation","x-fern-type-name":"Recommendation","uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0.items.[INDEX]","typeLabel":"Recommendation · object"},"uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.0","typeLabel":"Recommendation · object[]"},{"description":"Applied recommendations for this deployment","type":"null","items":{"type":"object","properties":{"id":{"oneOf":[{"type":"string"},{"type":"null"}]},"clusterId":{"oneOf":[{"type":"string"},{"type":"null"}]},"applicationId":{"oneOf":[{"type":"string"},{"type":"null"}]},"deploymentId":{"oneOf":[{"type":"string"},{"type":"null"}]},"applicationVersion":{"oneOf":[{"type":"integer"},{"type":"null"}]},"recommendationData":{"type":"object","additionalProperties":true},"recommendationType":{"type":"string"},"appliedDeploymentId":{"oneOf":[{"type":"string"},{"type":"null"}]},"expiryTimestamp":{"format":"date-time","type":"string"},"createdAt":{"oneOf":[{"format":"date-time","type":"string"},{"format":"date-time","type":"null"}]},"updatedAt":{"oneOf":[{"format":"date-time","type":"string"},{"format":"date-time","type":"null"}]}},"required":["recommendationData","recommendationType","expiryTimestamp"],"title":"Recommendation","x-fern-type-name":"Recommendation"},"uniqueKey":"data.oneOf.4.appliedRecommendations.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.appliedRecommendations","typeLabel":"Recommendation · object[] | null"},"createdBy":{"oneOf":[{"type":"string","description":"Slug of the subject that created this deployment","uniqueKey":"data.oneOf.4.createdBy.oneOf.0","typeLabel":"string"},{"type":"null","description":"Slug of the subject that created this deployment","uniqueKey":"data.oneOf.4.createdBy.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.4.createdBy","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.4","typeLabel":"Deployment · object"},{"type":"object","title":"GatewayConfiguration","description":"The created or updated resource","required":["tenantName","type","manifest","createdBySubject"],"x-fern-type-name":"GatewayConfiguration","properties":{"tenantName":{"type":"string","description":"Tenant the gateway configuration belongs to.","isRequired":true,"uniqueKey":"data.oneOf.5.tenantName","typeLabel":"string"},"type":{"type":"string","description":"Configuration type.","isRequired":true,"uniqueKey":"data.oneOf.5.type","typeLabel":"string"},"manifest":{"type":"object","title":"Config","description":"The configuration manifest containing rules and settings.","x-fern-type-name":"Config","properties":{},"isRequired":true,"uniqueKey":"data.oneOf.5.manifest","typeLabel":"Config · object"},"createdBySubject":{"type":"object","title":"Subject","description":"Principal (user or service account) that created or last updated this configuration.","required":["subjectId","subjectType"],"x-fern-type-name":"Subject","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.5.createdBySubject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.5.createdBySubject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.5.createdBySubject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.5.createdBySubject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.5.createdBySubject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.5.createdBySubject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.5.createdBySubject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.5.createdBySubject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.5.createdBySubject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.5.createdBySubject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.5.createdBySubject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.5.createdBySubject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.5.createdBySubject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.5.createdBySubject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.5.createdBySubject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.5.createdBySubject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.5.createdBySubject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.oneOf.5.createdBySubject","typeLabel":"Subject · object"},"id":{"oneOf":[{"type":"string","description":"System-generated Configuration ID.","uniqueKey":"data.oneOf.5.id.oneOf.0","typeLabel":"string"},{"type":"null","description":"System-generated Configuration ID.","uniqueKey":"data.oneOf.5.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.5.id","typeLabel":"string | null"},"createdAt":{"oneOf":[{"format":"date-time","type":"string","description":"Creation timestamp.","uniqueKey":"data.oneOf.5.createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Creation timestamp.","uniqueKey":"data.oneOf.5.createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.5.createdAt","typeLabel":"string\u003cdate-time> | null"},"updatedAt":{"oneOf":[{"format":"date-time","type":"string","description":"Last-update timestamp.","uniqueKey":"data.oneOf.5.updatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Last-update timestamp.","uniqueKey":"data.oneOf.5.updatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.5.updatedAt","typeLabel":"string\u003cdate-time> | null"}},"uniqueKey":"data.oneOf.5","typeLabel":"GatewayConfiguration · object"},{"type":"object","title":"Team","description":"The created or updated resource","required":["id","tenantName","accountId","createdBySubject","createdAt","updatedAt","manifest","isEditable"],"x-fern-type-name":"Team","properties":{"id":{"type":"string","description":"System-generated team ID.","example":"jqfwg345gi25n5ju2yz5iz6m","isRequired":true,"uniqueKey":"data.oneOf.6.id","typeLabel":"string"},"tenantName":{"type":"string","description":"Tenant the team belongs to.","isRequired":true,"uniqueKey":"data.oneOf.6.tenantName","typeLabel":"string"},"accountId":{"type":"string","nullable":false,"description":"System-generated ID of the account that owns the team.","isRequired":true,"uniqueKey":"data.oneOf.6.accountId","typeLabel":"string"},"createdBySubject":{"type":"object","title":"Subject","description":"The subject (user or service account) that created the team.","required":["subjectId","subjectType"],"x-fern-type-name":"Subject","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.6.createdBySubject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.6.createdBySubject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.6.createdBySubject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.6.createdBySubject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.6.createdBySubject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.6.createdBySubject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.6.createdBySubject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.6.createdBySubject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.6.createdBySubject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.6.createdBySubject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.6.createdBySubject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.6.createdBySubject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.6.createdBySubject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.6.createdBySubject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.6.createdBySubject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.6.createdBySubject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.6.createdBySubject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.oneOf.6.createdBySubject","typeLabel":"Subject · object"},"createdAt":{"format":"date-time","type":"string","description":"Timestamp when the team was created.","isRequired":true,"uniqueKey":"data.oneOf.6.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"format":"date-time","type":"string","description":"Timestamp when the team was last updated.","isRequired":true,"uniqueKey":"data.oneOf.6.updatedAt","typeLabel":"string\u003cdate-time>"},"manifest":{"type":"object","title":"TeamManifest","description":"The team manifest defining name, managers, and ownership.","required":["type","name"],"x-fern-type-name":"TeamManifest","properties":{"type":{"description":"+value=team","type":"string","enum":["team"],"default":"team","isRequired":true,"uniqueKey":"data.oneOf.6.manifest.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the Team","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9_-]{1,48}[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.6.manifest.name","typeLabel":"string"},"displayName":{"description":"A human-readable label for the team in the UI. If omitted, the team name is shown.","type":"string","maxLength":128,"uniqueKey":"data.oneOf.6.manifest.displayName","typeLabel":"string"},"description":{"description":"A short description of the team and its purpose.","type":"string","maxLength":1024,"uniqueKey":"data.oneOf.6.manifest.description","typeLabel":"string"},"managers":{"description":"Emails of each of the user who can manage the members of the team. Any tenant admin is by default a team manager. Still applied from YAML/manifests when present; omit to leave managers unchanged. Dedicated manager endpoints are also available.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.6.manifest.managers.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.6.manifest.managers","typeLabel":"string[]"},"members":{"description":"Enter email of each user to add to the team. Use an empty list for a team with no members yet. Still applied from YAML/manifests when present; omit to leave membership unchanged. Dedicated member endpoints are also available.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.6.manifest.members.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.6.manifest.members","typeLabel":"string[]"},"ownedBy":{"description":"Names of the owners that own the team","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns the team","type":"string","isRequired":true,"uniqueKey":"data.oneOf.6.manifest.ownedBy.account","typeLabel":"string"}},"title":"TeamOwnedBy","x-fern-type-name":"TeamOwnedBy","uniqueKey":"data.oneOf.6.manifest.ownedBy","typeLabel":"TeamOwnedBy · object"},"tags":{"description":"Key-value pairs to categorize this Team (e.g., by owner or environment).","type":"object","uniqueKey":"data.oneOf.6.manifest.tags","typeLabel":"object"},"identity_provider_mapping":{"description":"Mappings from external identity provider claim value to this team","type":"array","items":{"description":"Map specific claim values from an external IdP token (e.g., Okta, Azure AD) to this agent identity.","type":"object","required":["identity_provider"],"properties":{"identity_provider":{"description":"Must already be configured under Platform → Identity Providers. Choosing a SPIRE provider means this agent's credential is an attested JWT-SVID from its runtime.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.6.manifest.identity_provider_mapping.items.[INDEX].identity_provider","typeLabel":"string"},"value":{"description":"The value that must appear in the subject claim of the IdP token for this mapping to match. For example, a service account email or a group name.","type":"string","uniqueKey":"data.oneOf.6.manifest.identity_provider_mapping.items.[INDEX].value","typeLabel":"string"},"claims":{"description":"Add a subject key and the value that must match on the token. The keys shown are required for this provider.","type":"object","additionalProperties":{"type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.6.manifest.identity_provider_mapping.items.[INDEX].claims.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.6.manifest.identity_provider_mapping.items.[INDEX].claims","typeLabel":"object"}},"title":"IdentityProviderMapping","x-fern-type-name":"IdentityProviderMapping","uniqueKey":"data.oneOf.6.manifest.identity_provider_mapping.items.[INDEX]","typeLabel":"IdentityProviderMapping · object"},"uniqueKey":"data.oneOf.6.manifest.identity_provider_mapping","typeLabel":"IdentityProviderMapping · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.6.manifest","typeLabel":"TeamManifest · object"},"isEditable":{"type":"boolean","description":"Whether the team can be edited. SCIM-managed teams may be non-editable.","isRequired":true,"uniqueKey":"data.oneOf.6.isEditable","typeLabel":"boolean"},"description":{"type":"string","description":"A short description of the team.","uniqueKey":"data.oneOf.6.description","typeLabel":"string"},"members":{"oneOf":[{"description":"Email addresses of team members.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.6.members.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.6.members.oneOf.0","typeLabel":"string[]"},{"description":"Email addresses of team members.","type":"null","items":{"type":"string"},"uniqueKey":"data.oneOf.6.members.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.6.members","typeLabel":"string[] | null"},"metadata":{"oneOf":[{"type":"object","title":"TeamMetadata","description":"SCIM-related metadata for the team.","x-fern-type-name":"TeamMetadata","properties":{"createdByScim":{"oneOf":[{"type":"boolean","uniqueKey":"data.oneOf.6.metadata.oneOf.0.createdByScim.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"data.oneOf.6.metadata.oneOf.0.createdByScim.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.6.metadata.oneOf.0.createdByScim","typeLabel":"boolean | null"},"scimExternalId":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.6.metadata.oneOf.0.scimExternalId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.6.metadata.oneOf.0.scimExternalId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.6.metadata.oneOf.0.scimExternalId","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.6.metadata.oneOf.0","typeLabel":"TeamMetadata · object"},{"type":"null","uniqueKey":"data.oneOf.6.metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.6.metadata","typeLabel":"TeamMetadata · object | null"},"roles":{"oneOf":[{"description":"Role names assigned to the team.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.6.roles.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.6.roles.oneOf.0","typeLabel":"string[]"},{"description":"Role names assigned to the team.","type":"null","items":{"type":"string"},"uniqueKey":"data.oneOf.6.roles.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.6.roles","typeLabel":"string[] | null"},"topMembers":{"description":"Up to 5 team member emails, sourced from cache. Absent when the cache is unavailable.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.6.topMembers.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.6.topMembers","typeLabel":"string[]"},"topManagers":{"description":"Up to 5 team manager emails, sourced from cache. Absent when the cache is unavailable.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.6.topManagers.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.6.topManagers","typeLabel":"string[]"},"totalMemberCount":{"type":"number","description":"Total number of team members, sourced from cache. Absent when the cache is unavailable.","uniqueKey":"data.oneOf.6.totalMemberCount","typeLabel":"number"},"totalManagerCount":{"type":"number","description":"Total number of team managers, sourced from cache. Absent when the cache is unavailable.","uniqueKey":"data.oneOf.6.totalManagerCount","typeLabel":"number"}},"uniqueKey":"data.oneOf.6","typeLabel":"Team · object"},{"type":"object","title":"Policy","description":"The created or updated resource","required":["name","tenantName","activeVersion","createdBySubject"],"x-fern-type-name":"Policy","properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.7.name","typeLabel":"string"},"tenantName":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.7.tenantName","typeLabel":"string"},"activeVersion":{"type":"number","isRequired":true,"uniqueKey":"data.oneOf.7.activeVersion","typeLabel":"number"},"createdBySubject":{"type":"object","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.7.createdBySubject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.7.createdBySubject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.7.createdBySubject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.7.createdBySubject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.7.createdBySubject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.7.createdBySubject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.7.createdBySubject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.7.createdBySubject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.7.createdBySubject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.7.createdBySubject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.7.createdBySubject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.7.createdBySubject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.7.createdBySubject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.7.createdBySubject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.7.createdBySubject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.7.createdBySubject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.7.createdBySubject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"required":["subjectId","subjectType"],"title":"Subject","x-fern-type-name":"Subject","isRequired":true,"uniqueKey":"data.oneOf.7.createdBySubject","typeLabel":"Subject · object"},"id":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.7.id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.7.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.7.id","typeLabel":"string | null"},"activePolicyVersion":{"oneOf":[{"type":"object","title":"PolicyVersion","required":["policyId","manifest","version"],"x-fern-type-name":"PolicyVersion","properties":{"policyId":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.policyId","typeLabel":"string"},"manifest":{"type":"object","additionalProperties":true,"isRequired":true,"uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.manifest","typeLabel":"object"},"version":{"type":"number","isRequired":true,"uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.version","typeLabel":"number"},"id":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.id","typeLabel":"string | null"},"createdBySubject":{"oneOf":[{"type":"object","title":"Subject","required":["subjectId","subjectType"],"x-fern-type-name":"Subject","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.0.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.0.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.0.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.0.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.0.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.0.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.0.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.0.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.0.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.0.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.0.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.0.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.0.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.0.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.0.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.0.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.0.subjectExternalIdentitySlug","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.0","typeLabel":"Subject · object"},{"type":"null","uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0.createdBySubject","typeLabel":"Subject · object | null"}},"uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.0","typeLabel":"PolicyVersion · object"},{"type":"null","uniqueKey":"data.oneOf.7.activePolicyVersion.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.7.activePolicyVersion","typeLabel":"PolicyVersion · object | null"},"createdBy":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.7.createdBy.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.7.createdBy.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.7.createdBy","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.7","typeLabel":"Policy · object"},{"type":"object","title":"Role","description":"The created or updated resource","required":["id","tenantName","accountId","resourceType","manifest","createdBySubject","roleType","isEditable","isDefault","isReserved"],"x-fern-type-name":"Role","properties":{"id":{"type":"string","description":"System-generated role ID.","example":"jqfwg345gi25n5ju2yz5iz6m","isRequired":true,"uniqueKey":"data.oneOf.8.id","typeLabel":"string"},"tenantName":{"type":"string","description":"Tenant the role belongs to.","isRequired":true,"uniqueKey":"data.oneOf.8.tenantName","typeLabel":"string"},"accountId":{"type":"string","description":"System-generated ID of the account that owns the role.","isRequired":true,"uniqueKey":"data.oneOf.8.accountId","typeLabel":"string"},"resourceType":{"type":"string","enum":["role","account","cluster","workspace","environment","secret-group","deployment","application","secret","docker-registry","tenant","vcs-integration","mlf-project","repository","provider-integration","team","service-account","llm-gateway","policy","role-binding","settings","provider-account","user","alert-config","alert-rule","gateway-config","gateway-controls","gateway-budget","gateway-rate-limit","gateway-policy","gateway-approval-request","tracing-project","tracing-application","agent","agent-channel","gateway-installation","virtual-account","mcp-server","external-identity-provider","agent-identity","oidc-client"],"description":"Resource type this role applies to (e.g. account, team).","isRequired":true,"uniqueKey":"data.oneOf.8.resourceType","typeLabel":"enum\u003cstring>"},"manifest":{"type":"object","title":"RoleManifest","description":"The role manifest defining name, permissions, and metadata.","required":["type","name","displayName","description","resourceType","permissions"],"x-fern-type-name":"RoleManifest","properties":{"type":{"description":"+value=role","type":"string","enum":["role"],"default":"role","isRequired":true,"uniqueKey":"data.oneOf.8.manifest.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique identifier of the role across the organization","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,33}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.8.manifest.name","typeLabel":"string"},"displayName":{"description":"Human-readable name for the role","type":"string","minLength":1,"maxLength":255,"isRequired":true,"uniqueKey":"data.oneOf.8.manifest.displayName","typeLabel":"string"},"description":{"description":"Description of the role that explains its purpose and permissions","type":"string","minLength":1,"maxLength":1024,"isRequired":true,"uniqueKey":"data.oneOf.8.manifest.description","typeLabel":"string"},"resourceType":{"description":"Type of resource this role applies to","type":"string","isRequired":true,"uniqueKey":"data.oneOf.8.manifest.resourceType","typeLabel":"string"},"permissions":{"description":"Define the resource type and the corresponding actions this role can perform on the resource","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.8.manifest.permissions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.8.manifest.permissions","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"data.oneOf.8.manifest","typeLabel":"RoleManifest · object"},"createdBySubject":{"type":"object","description":"The subject (user or service account) that created this role.","isRequired":true,"uniqueKey":"data.oneOf.8.createdBySubject","typeLabel":"object"},"roleType":{"type":"string","enum":["DEFAULT","CUSTOM"],"description":"Whether this role is a platform DEFAULT role or a CUSTOM role.","isRequired":true,"uniqueKey":"data.oneOf.8.roleType","typeLabel":"enum\u003cstring>"},"isEditable":{"type":"boolean","description":"Whether this role can be edited. Default and system roles are non-editable.","isRequired":true,"uniqueKey":"data.oneOf.8.isEditable","typeLabel":"boolean"},"isDefault":{"type":"boolean","description":"Whether this is a built-in default role.","isRequired":true,"uniqueKey":"data.oneOf.8.isDefault","typeLabel":"boolean"},"isReserved":{"type":"boolean","description":"Whether this role name is reserved for internal use.","isRequired":true,"uniqueKey":"data.oneOf.8.isReserved","typeLabel":"boolean"},"permissionSetsV2":{"oneOf":[{"description":"Permission sets defining the actions this role grants.","type":"array","items":{"type":"object","properties":{"resourceType":{"type":"string","enum":["role","account","cluster","workspace","environment","secret-group","deployment","application","secret","docker-registry","tenant","vcs-integration","mlf-project","repository","provider-integration","team","service-account","llm-gateway","policy","role-binding","settings","provider-account","user","alert-config","alert-rule","gateway-config","gateway-controls","gateway-budget","gateway-rate-limit","gateway-policy","gateway-approval-request","tracing-project","tracing-application","agent","agent-channel","gateway-installation","virtual-account","mcp-server","external-identity-provider","agent-identity","oidc-client"],"isRequired":true,"uniqueKey":"data.oneOf.8.permissionSetsV2.oneOf.0.items.[INDEX].resourceType","typeLabel":"enum\u003cstring>"},"permissions":{"type":"array","items":{"type":"string","uniqueKey":"data.oneOf.8.permissionSetsV2.oneOf.0.items.[INDEX].permissions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.8.permissionSetsV2.oneOf.0.items.[INDEX].permissions","typeLabel":"string[]"},"id":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.8.permissionSetsV2.oneOf.0.items.[INDEX].id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.8.permissionSetsV2.oneOf.0.items.[INDEX].id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.8.permissionSetsV2.oneOf.0.items.[INDEX].id","typeLabel":"string | null"}},"required":["resourceType","permissions"],"title":"PermissionSetV2","x-fern-type-name":"PermissionSetV2","uniqueKey":"data.oneOf.8.permissionSetsV2.oneOf.0.items.[INDEX]","typeLabel":"PermissionSetV2 · object"},"uniqueKey":"data.oneOf.8.permissionSetsV2.oneOf.0","typeLabel":"PermissionSetV2 · object[]"},{"description":"Permission sets defining the actions this role grants.","type":"null","items":{"type":"object","properties":{"id":{"oneOf":[{"type":"string"},{"type":"null"}]},"resourceType":{"type":"string","enum":["role","account","cluster","workspace","environment","secret-group","deployment","application","secret","docker-registry","tenant","vcs-integration","mlf-project","repository","provider-integration","team","service-account","llm-gateway","policy","role-binding","settings","provider-account","user","alert-config","alert-rule","gateway-config","gateway-controls","gateway-budget","gateway-rate-limit","gateway-policy","gateway-approval-request","tracing-project","tracing-application","agent","agent-channel","gateway-installation","virtual-account","mcp-server","external-identity-provider","agent-identity","oidc-client"]},"permissions":{"type":"array","items":{"type":"string"}}},"required":["resourceType","permissions"],"title":"PermissionSetV2","x-fern-type-name":"PermissionSetV2"},"uniqueKey":"data.oneOf.8.permissionSetsV2.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.8.permissionSetsV2","typeLabel":"PermissionSetV2 · object[] | null"}},"uniqueKey":"data.oneOf.8","typeLabel":"Role · object"},{"type":"object","title":"Settings","description":"The created or updated resource","required":["tenantName","type","manifest","createdBySubject"],"x-fern-type-name":"Settings","properties":{"tenantName":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.9.tenantName","typeLabel":"string"},"type":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.9.type","typeLabel":"string"},"manifest":{"type":"object","additionalProperties":true,"isRequired":true,"uniqueKey":"data.oneOf.9.manifest","typeLabel":"object"},"createdBySubject":{"type":"object","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.9.createdBySubject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.9.createdBySubject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.9.createdBySubject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.9.createdBySubject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.9.createdBySubject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.9.createdBySubject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.9.createdBySubject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.9.createdBySubject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.9.createdBySubject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.9.createdBySubject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.9.createdBySubject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.9.createdBySubject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.9.createdBySubject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.9.createdBySubject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.9.createdBySubject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.9.createdBySubject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.9.createdBySubject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"required":["subjectId","subjectType"],"title":"Subject","x-fern-type-name":"Subject","isRequired":true,"uniqueKey":"data.oneOf.9.createdBySubject","typeLabel":"Subject · object"},"id":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.9.id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.9.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.9.id","typeLabel":"string | null"},"metadata":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"data.oneOf.9.metadata.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"data.oneOf.9.metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.9.metadata","typeLabel":"object | null"}},"uniqueKey":"data.oneOf.9","typeLabel":"Settings · object"},{"type":"object","title":"AlertConfigEntity","description":"The created or updated resource","x-fern-type-name":"AlertConfigEntity","properties":{},"uniqueKey":"data.oneOf.10","typeLabel":"AlertConfigEntity · object"},{"type":"object","title":"VirtualAccount","description":"The created or updated resource","required":["id","type","tenantName","createdBySubject","createdAt","updatedAt","accountId"],"x-fern-type-name":"VirtualAccount","properties":{"id":{"type":"string","description":"System-generated virtual account ID.","example":"jqfwg345gi25n5ju2yz5iz6m","isRequired":true,"uniqueKey":"data.oneOf.11.id","typeLabel":"string"},"type":{"type":"string","description":"Type of service account.","isRequired":true,"uniqueKey":"data.oneOf.11.type","typeLabel":"string"},"tenantName":{"type":"string","description":"Tenant the virtual account belongs to.","isRequired":true,"uniqueKey":"data.oneOf.11.tenantName","typeLabel":"string"},"createdBySubject":{"type":"object","title":"Subject","description":"The subject (user or service account) that created this virtual account.","required":["subjectId","subjectType"],"x-fern-type-name":"Subject","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.11.createdBySubject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.11.createdBySubject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.11.createdBySubject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.11.createdBySubject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.11.createdBySubject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.11.createdBySubject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.11.createdBySubject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.11.createdBySubject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.11.createdBySubject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.11.createdBySubject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.11.createdBySubject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.11.createdBySubject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.11.createdBySubject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.11.createdBySubject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.11.createdBySubject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.11.createdBySubject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.11.createdBySubject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.oneOf.11.createdBySubject","typeLabel":"Subject · object"},"createdAt":{"format":"date-time","type":"string","description":"Timestamp when the virtual account was created.","isRequired":true,"uniqueKey":"data.oneOf.11.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"format":"date-time","type":"string","description":"Timestamp when the virtual account was last updated.","isRequired":true,"uniqueKey":"data.oneOf.11.updatedAt","typeLabel":"string\u003cdate-time>"},"accountId":{"type":"string","nullable":false,"description":"ID of the account that owns this virtual account.","isRequired":true,"uniqueKey":"data.oneOf.11.accountId","typeLabel":"string"},"manifest":{"oneOf":[{"type":"object","title":"VirtualAccountManifest","description":"The manifest defining name, permissions, ownership, and configuration.","required":["name","type"],"x-fern-type-name":"VirtualAccountManifest","properties":{"name":{"description":"Virtual Account Name","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.name","typeLabel":"string"},"type":{"description":"+value=virtual-account","type":"string","enum":["virtual-account"],"default":"virtual-account","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.type","typeLabel":"enum\u003cstring>"},"permissions":{"description":"Permissions","type":"array","items":{"type":"object","required":["resource_fqn","resource_type","role_id"],"properties":{"resource_fqn":{"description":"The fully qualified name of the resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.permissions.items.[INDEX].resource_fqn","typeLabel":"string"},"resource_type":{"description":"The type of the resource (cluster, workspace, etc.)","type":"string","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.permissions.items.[INDEX].resource_type","typeLabel":"string"},"role_id":{"description":"The role id of the role to be assigned to the service account for that resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.permissions.items.[INDEX].role_id","typeLabel":"string"}},"title":"Permissions","x-fern-type-name":"Permissions","uniqueKey":"data.oneOf.11.manifest.oneOf.0.permissions.items.[INDEX]","typeLabel":"Permissions · object"},"uniqueKey":"data.oneOf.11.manifest.oneOf.0.permissions","typeLabel":"Permissions · object[]"},"expiration_date":{"description":"Expiration Date of the Virtual Account (should be in the format yyyy-mm-dd)","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","uniqueKey":"data.oneOf.11.manifest.oneOf.0.expiration_date","typeLabel":"string"},"auto_rotate":{"description":"Enable Auto Rotation to automatically rotate the token","type":"object","required":["auto_rotate_interval","grace_period"],"properties":{"auto_rotate_interval":{"description":"Rotation Interval in days after which the token will be rotated. Minimum value is 30.","type":"integer","minimum":30,"default":360,"isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.auto_rotate.auto_rotate_interval","typeLabel":"integer"},"grace_period":{"description":"Grace Period in days for which the token will be valid after rotation interval. Minimum value is 1.","type":"integer","minimum":1,"default":30,"isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.auto_rotate.grace_period","typeLabel":"integer"}},"title":"AutoRotate","x-fern-type-name":"AutoRotate","uniqueKey":"data.oneOf.11.manifest.oneOf.0.auto_rotate","typeLabel":"AutoRotate · object"},"notification_target":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBot","description":"+discriminator=type","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.2.channels","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.2","typeLabel":"SlackBot · object"},{"type":"object","title":"PagerDuty","description":"+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.3","typeLabel":"PagerDuty · object"},{"type":"object","title":"MSTeamsWebhook","description":"MS Teams Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTarget","properties":{"type":{"description":"+value=ms-teams-webhook","type":"string","enum":["ms-teams-webhook"],"default":"ms-teams-webhook","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.4.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.4.notification_channel","typeLabel":"string"}},"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target.oneOf.4","typeLabel":"MSTeamsWebhook · object"}],"uniqueKey":"data.oneOf.11.manifest.oneOf.0.notification_target","typeLabel":"Email · object | SlackWebhook · object | SlackBot · object | PagerDuty · object | MSTeamsWebhook · object"},"secret_store_config":{"oneOf":[{"type":"object","title":"SecretStoreIntegrationConfig","description":"Store the virtual account token directly in an external secret store","required":["type","integration_fqn","secret_path"],"x-fern-type-name":"SecretStoreConfig","properties":{"type":{"description":"+value=secret-store","type":"string","enum":["secret-store"],"default":"secret-store","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.secret_store_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"integration_fqn":{"description":"The secret store to store the virtual account token in","type":"string","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.secret_store_config.oneOf.0.integration_fqn","typeLabel":"string"},"secret_path":{"description":"The path where the virtual account token will be stored in the secret store (example: secret/path/to/virtual-account-token)","type":"string","pattern":"^/?[A-Za-z0-9/-]*[A-Za-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.secret_store_config.oneOf.0.secret_path","typeLabel":"string"}},"uniqueKey":"data.oneOf.11.manifest.oneOf.0.secret_store_config.oneOf.0","typeLabel":"SecretStoreIntegrationConfig · object"},{"type":"object","title":"TfySecretsConfig","description":"Store the virtual account token as a secret in a TrueFoundry secret group","required":["type","secret_group","key"],"x-fern-type-name":"SecretStoreConfig","properties":{"type":{"description":"+value=tfy-secrets","type":"string","enum":["tfy-secrets"],"default":"tfy-secrets","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.secret_store_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"secret_group":{"description":"Name of the secret group to store the virtual account token in","type":"string","pattern":"^(?!.*--)[a-z][a-z0-9-]{3,48}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.secret_store_config.oneOf.1.secret_group","typeLabel":"string"},"key":{"description":"The key where the virtual account token will be stored in the secret group","type":"string","pattern":"^(?!.*--)[a-zA-Z][a-zA-Z0-9\\/_-]{3,498}[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.secret_store_config.oneOf.1.key","typeLabel":"string"}},"uniqueKey":"data.oneOf.11.manifest.oneOf.0.secret_store_config.oneOf.1","typeLabel":"TfySecretsConfig · object"}],"uniqueKey":"data.oneOf.11.manifest.oneOf.0.secret_store_config","typeLabel":"SecretStoreIntegrationConfig · object | TfySecretsConfig · object"},"ownedBy":{"description":"Names of the owners that own the virtual account","type":"object","required":["team"],"properties":{"team":{"description":"The name of the team that owns this resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.ownedBy.team","typeLabel":"string"},"account":{"description":"The name of the account that owns this resource","type":"string","uniqueKey":"data.oneOf.11.manifest.oneOf.0.ownedBy.account","typeLabel":"string"}},"title":"VirtualAccountOwnedBy","x-fern-type-name":"VirtualAccountOwnedBy","uniqueKey":"data.oneOf.11.manifest.oneOf.0.ownedBy","typeLabel":"VirtualAccountOwnedBy · object"},"tags":{"description":"Key-value pairs to categorize this Virtual Account (e.g., by owner or environment).","type":"object","uniqueKey":"data.oneOf.11.manifest.oneOf.0.tags","typeLabel":"object"},"identity_provider_mapping":{"description":"Mappings from external identity provider claim value to this virtual account","type":"array","items":{"description":"Map specific claim values from an external IdP token (e.g., Okta, Azure AD) to this agent identity.","type":"object","required":["identity_provider"],"properties":{"identity_provider":{"description":"Must already be configured under Platform → Identity Providers. Choosing a SPIRE provider means this agent's credential is an attested JWT-SVID from its runtime.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.0.identity_provider_mapping.items.[INDEX].identity_provider","typeLabel":"string"},"value":{"description":"The value that must appear in the subject claim of the IdP token for this mapping to match. For example, a service account email or a group name.","type":"string","uniqueKey":"data.oneOf.11.manifest.oneOf.0.identity_provider_mapping.items.[INDEX].value","typeLabel":"string"},"claims":{"description":"Add a subject key and the value that must match on the token. The keys shown are required for this provider.","type":"object","additionalProperties":{"type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.11.manifest.oneOf.0.identity_provider_mapping.items.[INDEX].claims.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.11.manifest.oneOf.0.identity_provider_mapping.items.[INDEX].claims","typeLabel":"object"}},"title":"IdentityProviderMapping","x-fern-type-name":"IdentityProviderMapping","uniqueKey":"data.oneOf.11.manifest.oneOf.0.identity_provider_mapping.items.[INDEX]","typeLabel":"IdentityProviderMapping · object"},"uniqueKey":"data.oneOf.11.manifest.oneOf.0.identity_provider_mapping","typeLabel":"IdentityProviderMapping · object[]"},"token_type":{"description":"Format of the issued token. Leave empty to use the platform default.","type":"string","enum":["jwt","opaque"],"uniqueKey":"data.oneOf.11.manifest.oneOf.0.token_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.11.manifest.oneOf.0","typeLabel":"VirtualAccountManifest · object"},{"type":"object","title":"PersonalAccessTokenManifest","description":"The manifest defining name, permissions, ownership, and configuration.","required":["name","type","user_fqn"],"x-fern-type-name":"PersonalAccessTokenManifest","properties":{"name":{"description":"Personal Access Token Name","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,34}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.1.name","typeLabel":"string"},"type":{"description":"+value=pat","type":"string","enum":["pat"],"default":"pat","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.1.type","typeLabel":"enum\u003cstring>"},"user_fqn":{"description":"The fully qualified name of the user","type":"string","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.1.user_fqn","typeLabel":"string"},"expiration_date":{"description":"Expiration Date of the Personal Access Token (should be in the ISO 8601 format)","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.11.manifest.oneOf.1.expiration_date","typeLabel":"string"},"ownedBy":{"description":"Names of the owners that own the virtual account","type":"object","required":["team"],"properties":{"team":{"description":"The name of the team that owns this resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.11.manifest.oneOf.1.ownedBy.team","typeLabel":"string"},"account":{"description":"The name of the account that owns this resource","type":"string","uniqueKey":"data.oneOf.11.manifest.oneOf.1.ownedBy.account","typeLabel":"string"}},"title":"VirtualAccountOwnedBy","x-fern-type-name":"VirtualAccountOwnedBy","uniqueKey":"data.oneOf.11.manifest.oneOf.1.ownedBy","typeLabel":"VirtualAccountOwnedBy · object"},"token_type":{"description":"Format of the issued token. Leave empty to use the platform default.","type":"string","enum":["jwt","opaque"],"uniqueKey":"data.oneOf.11.manifest.oneOf.1.token_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.11.manifest.oneOf.1","typeLabel":"PersonalAccessTokenManifest · object"},{"type":"null","uniqueKey":"data.oneOf.11.manifest.oneOf.2","typeLabel":"null"}],"uniqueKey":"data.oneOf.11.manifest","typeLabel":"VirtualAccountManifest · object | PersonalAccessTokenManifest · object | null"},"jwtId":{"oneOf":[{"type":"string","description":"System-generated ID of the currently active JWT.","uniqueKey":"data.oneOf.11.jwtId.oneOf.0","typeLabel":"string"},{"type":"null","description":"System-generated ID of the currently active JWT.","uniqueKey":"data.oneOf.11.jwtId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.11.jwtId","typeLabel":"string | null"},"lastAccessedAt":{"oneOf":[{"format":"date-time","type":"string","description":"Timestamp when the virtual account was last used to authenticate.","uniqueKey":"data.oneOf.11.lastAccessedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Timestamp when the virtual account was last used to authenticate.","uniqueKey":"data.oneOf.11.lastAccessedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.11.lastAccessedAt","typeLabel":"string\u003cdate-time> | null"},"isExpired":{"oneOf":[{"type":"boolean","description":"Whether the virtual account token has expired.","uniqueKey":"data.oneOf.11.isExpired.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether the virtual account token has expired.","uniqueKey":"data.oneOf.11.isExpired.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.11.isExpired","typeLabel":"boolean | null"},"jwts":{"oneOf":[{"description":"JWT tokens associated with this virtual account.","type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.11.jwts.oneOf.0.items.[INDEX].id","typeLabel":"string"},"subjectType":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.11.jwts.oneOf.0.items.[INDEX].subjectType","typeLabel":"string"},"subjectId":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.11.jwts.oneOf.0.items.[INDEX].subjectId","typeLabel":"string"},"expiry":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.oneOf.11.jwts.oneOf.0.items.[INDEX].expiry","typeLabel":"string\u003cdate-time>"},"tokenType":{"type":"string","enum":["jwt","opaque"],"isRequired":true,"uniqueKey":"data.oneOf.11.jwts.oneOf.0.items.[INDEX].tokenType","typeLabel":"enum\u003cstring>"},"createdAt":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.oneOf.11.jwts.oneOf.0.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.oneOf.11.jwts.oneOf.0.items.[INDEX].updatedAt","typeLabel":"string\u003cdate-time>"},"metadata":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"data.oneOf.11.jwts.oneOf.0.items.[INDEX].metadata.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"data.oneOf.11.jwts.oneOf.0.items.[INDEX].metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.11.jwts.oneOf.0.items.[INDEX].metadata","typeLabel":"object | null"},"lastAccessedAt":{"oneOf":[{"format":"date-time","type":"string","description":"Last authentication time for this specific token. Null until the first access event lands.","uniqueKey":"data.oneOf.11.jwts.oneOf.0.items.[INDEX].lastAccessedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Last authentication time for this specific token. Null until the first access event lands.","uniqueKey":"data.oneOf.11.jwts.oneOf.0.items.[INDEX].lastAccessedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.11.jwts.oneOf.0.items.[INDEX].lastAccessedAt","typeLabel":"string\u003cdate-time> | null"}},"required":["id","subjectType","subjectId","expiry","tokenType","createdAt","updatedAt"],"title":"Jwt","x-fern-type-name":"Jwt","uniqueKey":"data.oneOf.11.jwts.oneOf.0.items.[INDEX]","typeLabel":"Jwt · object"},"uniqueKey":"data.oneOf.11.jwts.oneOf.0","typeLabel":"Jwt · object[]"},{"description":"JWT tokens associated with this virtual account.","type":"null","items":{"type":"object","properties":{"id":{"type":"string"},"subjectType":{"type":"string"},"subjectId":{"type":"string"},"metadata":{"oneOf":[{"type":"object","additionalProperties":true},{"type":"null","additionalProperties":true}]},"expiry":{"format":"date-time","type":"string"},"tokenType":{"type":"string","enum":["jwt","opaque"]},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"},"lastAccessedAt":{"oneOf":[{"format":"date-time","type":"string","description":"Last authentication time for this specific token. Null until the first access event lands."},{"format":"date-time","type":"null","description":"Last authentication time for this specific token. Null until the first access event lands."}]}},"required":["id","subjectType","subjectId","expiry","tokenType","createdAt","updatedAt"],"title":"Jwt","x-fern-type-name":"Jwt"},"uniqueKey":"data.oneOf.11.jwts.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.11.jwts","typeLabel":"Jwt · object[] | null"},"metadata":{"oneOf":[{"type":"object","additionalProperties":true,"description":"Additional metadata for the virtual account.","uniqueKey":"data.oneOf.11.metadata.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"description":"Additional metadata for the virtual account.","uniqueKey":"data.oneOf.11.metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.11.metadata","typeLabel":"object | null"},"roleIds":{"oneOf":[{"description":"Role IDs assigned to this virtual account.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.11.roleIds.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.11.roleIds.oneOf.0","typeLabel":"string[]"},{"description":"Role IDs assigned to this virtual account.","type":"null","items":{"type":"string"},"uniqueKey":"data.oneOf.11.roleIds.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.11.roleIds","typeLabel":"string[] | null"},"rolesWithResource":{"oneOf":[{"description":"Roles with their associated resources.","type":"array","items":{"type":"object","properties":{"roleId":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.11.rolesWithResource.oneOf.0.items.[INDEX].roleId","typeLabel":"string"},"resourceType":{"type":"string","enum":["role","account","cluster","workspace","environment","secret-group","deployment","application","secret","docker-registry","tenant","vcs-integration","mlf-project","repository","provider-integration","team","service-account","llm-gateway","policy","role-binding","settings","provider-account","user","alert-config","alert-rule","gateway-config","gateway-controls","gateway-budget","gateway-rate-limit","gateway-policy","gateway-approval-request","tracing-project","tracing-application","agent","agent-channel","gateway-installation","virtual-account","mcp-server","external-identity-provider","agent-identity","oidc-client"],"isRequired":true,"uniqueKey":"data.oneOf.11.rolesWithResource.oneOf.0.items.[INDEX].resourceType","typeLabel":"enum\u003cstring>"},"resourceId":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.11.rolesWithResource.oneOf.0.items.[INDEX].resourceId","typeLabel":"string"},"roleName":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.11.rolesWithResource.oneOf.0.items.[INDEX].roleName","typeLabel":"string"}},"required":["roleId","resourceType","resourceId","roleName"],"title":"RoleWithResource","x-fern-type-name":"RoleWithResource","uniqueKey":"data.oneOf.11.rolesWithResource.oneOf.0.items.[INDEX]","typeLabel":"RoleWithResource · object"},"uniqueKey":"data.oneOf.11.rolesWithResource.oneOf.0","typeLabel":"RoleWithResource · object[]"},{"description":"Roles with their associated resources.","type":"null","items":{"type":"object","properties":{"roleId":{"type":"string"},"resourceType":{"type":"string","enum":["role","account","cluster","workspace","environment","secret-group","deployment","application","secret","docker-registry","tenant","vcs-integration","mlf-project","repository","provider-integration","team","service-account","llm-gateway","policy","role-binding","settings","provider-account","user","alert-config","alert-rule","gateway-config","gateway-controls","gateway-budget","gateway-rate-limit","gateway-policy","gateway-approval-request","tracing-project","tracing-application","agent","agent-channel","gateway-installation","virtual-account","mcp-server","external-identity-provider","agent-identity","oidc-client"]},"resourceId":{"type":"string"},"roleName":{"type":"string"}},"required":["roleId","resourceType","resourceId","roleName"],"title":"RoleWithResource","x-fern-type-name":"RoleWithResource"},"uniqueKey":"data.oneOf.11.rolesWithResource.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.11.rolesWithResource","typeLabel":"RoleWithResource · object[] | null"},"permissionPreviews":{"type":"object","properties":{"permissionsSummary":{"type":"object","additionalProperties":{"oneOf":[{"type":"number","uniqueKey":"data.oneOf.11.permissionPreviews.permissionsSummary.additionalProperties.oneOf.0","typeLabel":"number"},{"type":"string","enum":["all"],"uniqueKey":"data.oneOf.11.permissionPreviews.permissionsSummary.additionalProperties.oneOf.1","typeLabel":"enum\u003cstring>"}],"uniqueKey":"data.oneOf.11.permissionPreviews.permissionsSummary.additionalProperties","typeLabel":"number | enum\u003cstring>"},"description":"Distinct grant count per key, or `all` for a wildcard grant. Provider-account and provider-integration grants are keyed as `{parent}/{type}` so they never collide with resource types. A full `*` on either parent is `{parent}: all` (subtype keys are omitted). `{type}:*` is `{parent}/{type}: all`. `customRoles` counts the distinct role IDs granted on the account. Keys without grants are omitted.","uniqueKey":"data.oneOf.11.permissionPreviews.permissionsSummary","typeLabel":"object"},"isTenantAdmin":{"type":"boolean","description":"Whether the subject holds the tenant-admin role on the tenant.","uniqueKey":"data.oneOf.11.permissionPreviews.isTenantAdmin","typeLabel":"boolean"}},"example":{"permissionsSummary":{"provider-account/model-provider-accounts":1,"provider-account/guardrail-config-group":6,"provider-integration/docker-registry":"all","provider-integration/model":2,"mcp-server":1,"workspace":4,"customRoles":2},"isTenantAdmin":false},"uniqueKey":"data.oneOf.11.permissionPreviews","typeLabel":"object"},"createdBy":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.11.createdBy.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.11.createdBy.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.11.createdBy","typeLabel":"string | null"},"nextScheduledRotation":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.11.nextScheduledRotation.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.11.nextScheduledRotation.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.11.nextScheduledRotation","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.11","typeLabel":"VirtualAccount · object"},{"type":"object","title":"Agent","description":"The created or updated resource","required":["name","fqn","tenantName","accountId","latestVersion","type","source","controlMode","state","createdBySubject"],"x-fern-type-name":"Agent","properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.name","typeLabel":"string"},"fqn":{"type":"string","description":"Human-readable Fully Qualified Name of the agent.","isRequired":true,"uniqueKey":"data.oneOf.12.fqn","typeLabel":"string"},"tenantName":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.tenantName","typeLabel":"string"},"accountId":{"type":"string","nullable":false,"isRequired":true,"uniqueKey":"data.oneOf.12.accountId","typeLabel":"string"},"latestVersion":{"type":"number","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersion","typeLabel":"number"},"type":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.type","typeLabel":"string"},"source":{"type":"string","enum":["truefoundry","trueforge","aws-agentcore-runtime","aws-agentcore-harness","microsoft-copilot-studio","microsoft-foundry","snowflake-cortex-agent"],"default":"truefoundry","description":"Where the agent originated from. Distinct from the legacy manifest `source` object.","isRequired":true,"uniqueKey":"data.oneOf.12.source","typeLabel":"enum\u003cstring>"},"controlMode":{"type":"string","enum":["governed","ungoverned"],"description":"Whether TrueFoundry governs the agent lifecycle (`governed`) or the agent is imported for discovery (`ungoverned`).","isRequired":true,"uniqueKey":"data.oneOf.12.controlMode","typeLabel":"enum\u003cstring>"},"state":{"type":"string","enum":["active","blocked"],"description":"Lifecycle state of the agent (`active`, `blocked`). Discovered/ungoverned agents default to active.","isRequired":true,"uniqueKey":"data.oneOf.12.state","typeLabel":"enum\u003cstring>"},"createdBySubject":{"type":"object","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.12.createdBySubject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.12.createdBySubject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.12.createdBySubject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.12.createdBySubject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.createdBySubject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.12.createdBySubject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.12.createdBySubject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.createdBySubject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.12.createdBySubject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.12.createdBySubject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.createdBySubject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.12.createdBySubject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.12.createdBySubject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.createdBySubject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.12.createdBySubject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.12.createdBySubject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.createdBySubject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"required":["subjectId","subjectType"],"title":"Subject","x-fern-type-name":"Subject","isRequired":true,"uniqueKey":"data.oneOf.12.createdBySubject","typeLabel":"Subject · object"},"id":{"oneOf":[{"type":"string","description":"System-generated agent ID.","example":"jqfwg345gi25n5ju2yz5iz6m","uniqueKey":"data.oneOf.12.id.oneOf.0","typeLabel":"string"},{"type":"null","description":"System-generated agent ID.","example":"jqfwg345gi25n5ju2yz5iz6m","uniqueKey":"data.oneOf.12.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.id","typeLabel":"string | null"},"providerIntegrationId":{"oneOf":[{"type":"string","description":"Agent registry provider integration ID, when the agent was imported from a registry integration.","uniqueKey":"data.oneOf.12.providerIntegrationId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Agent registry provider integration ID, when the agent was imported from a registry integration.","uniqueKey":"data.oneOf.12.providerIntegrationId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.providerIntegrationId","typeLabel":"string | null"},"latestVersionDetails":{"oneOf":[{"type":"object","title":"AgentVersion","required":["agentId","fqn","manifest","version"],"x-fern-type-name":"AgentVersion","properties":{"agentId":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.agentId","typeLabel":"string"},"fqn":{"type":"string","description":"Human-readable Fully Qualified Name of the agent version.","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.fqn","typeLabel":"string"},"manifest":{"oneOf":[{"type":"object","title":"TrueFoundryAgentManifest","description":"Agent Manifest","required":["type","name","description","model"],"x-fern-type-name":"AgentManifest","properties":{"type":{"description":"Type of the manifest","type":"string","enum":["truefoundry-agent"],"default":"truefoundry-agent","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Agent","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.name","typeLabel":"string"},"description":{"description":"The description of the Agent","type":"string","maxLength":2000,"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.description","typeLabel":"string"},"model":{"type":"object","required":["name"],"properties":{"name":{"description":"Model name, e.g. openai-main/gpt-4o","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.model.name","typeLabel":"string"},"params":{"type":"object","properties":{"max_tokens":{"description":"Maximum number of tokens to generate.","type":"integer","minimum":0,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.model.params.max_tokens","typeLabel":"integer"},"reasoning_effort":{"description":"Reasoning depth when the model and provider support this parameter.","type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.model.params.reasoning_effort","typeLabel":"string"},"temperature":{"description":"Sampling temperature (0–2). Higher values increase randomness.","type":"number","minimum":0,"maximum":2,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.model.params.temperature","typeLabel":"number"},"top_p":{"description":"Nucleus sampling threshold (0–1). Alternative to temperature.","type":"number","minimum":0,"maximum":1,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.model.params.top_p","typeLabel":"number"},"top_k":{"description":"Top-K sampling when supported by the provider.","type":"integer","minimum":0,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.model.params.top_k","typeLabel":"integer"},"parallel_tool_calls":{"description":"Allow the model to request multiple tool calls in parallel when supported.","type":"boolean","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.model.params.parallel_tool_calls","typeLabel":"boolean"}},"title":"TrueFoundryAgentModelParams","x-fern-type-name":"TrueFoundryAgentModelParams","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.model.params","typeLabel":"TrueFoundryAgentModelParams · object"}},"title":"TrueFoundryAgentModel","x-fern-type-name":"TrueFoundryAgentModel","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.model","typeLabel":"TrueFoundryAgentModel · object"},"tags":{"description":"Tags for the Agent","type":"object","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.tags","typeLabel":"object"},"skills":{"description":"List of agent skills to attach to this agent","type":"array","items":{"oneOf":[{"type":"object","title":"TrueFoundryAgentTrueFoundrySkill","description":"Skill from the TrueFoundry skill registry, referenced by FQN.","required":["type","fqn","preload"],"x-fern-type-name":"TrueFoundryAgentSkill","properties":{"type":{"description":"Type","type":"string","enum":["truefoundry-skills-registry"],"default":"truefoundry-skills-registry","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.skills.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"fqn":{"description":"Fully qualified name of the agent skill","type":"string","minLength":1,"pattern":"^agent-skill:[^/]+/[^/]+/[^/:]+:[0-9]+$","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.skills.items.[INDEX].oneOf.0.fqn","typeLabel":"string"},"preload":{"description":"If true, the SKILL.md content is injected into the agent context.","type":"boolean","default":false,"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.skills.items.[INDEX].oneOf.0.preload","typeLabel":"boolean"}},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.skills.items.[INDEX].oneOf.0","typeLabel":"TrueFoundryAgentTrueFoundrySkill · object"},{"type":"object","title":"TrueFoundryAgentGitSourceSkill","description":"Skill from a public Git repository.","required":["type","url","name","ref"],"x-fern-type-name":"TrueFoundryAgentSkill","properties":{"type":{"description":"Type","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.skills.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"url":{"type":"string","description":"Full HTTPS URL of a GitHub or GitLab repository.","minLength":1,"pattern":"^https://(github\\.com/[A-Za-z0-9._-]+/[A-Za-z0-9._-]+|gitlab\\.com/[A-Za-z0-9._-]+(/[A-Za-z0-9._-]+)+)(/|\\.git)?$","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.skills.items.[INDEX].oneOf.1.url","typeLabel":"string"},"name":{"type":"string","description":"Name for the skill, used as the directory name in the sandbox.","maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9._-]+$","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.skills.items.[INDEX].oneOf.1.name","typeLabel":"string"},"ref":{"type":"string","description":"Git ref — branch name, tag, or commit SHA.","minLength":1,"pattern":"^[A-Za-z0-9._/-]+$","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.skills.items.[INDEX].oneOf.1.ref","typeLabel":"string"},"path":{"type":"string","description":"Path to the skill directory within the repository (e.g. skills/durable-objects). Omit to use the repository root.","minLength":1,"pattern":"^[A-Za-z0-9._/-]+$","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.skills.items.[INDEX].oneOf.1.path","typeLabel":"string"}},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.skills.items.[INDEX].oneOf.1","typeLabel":"TrueFoundryAgentGitSourceSkill · object"}],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.skills.items.[INDEX]","typeLabel":"TrueFoundryAgentTrueFoundrySkill · object | TrueFoundryAgentGitSourceSkill · object"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.skills","typeLabel":"(TrueFoundryAgentTrueFoundrySkill · object | TrueFoundryAgentGitSourceSkill · object)[]"},"mcp_servers":{"description":"List of MCP servers with tag-based tool enable/disable/preload/approval policy","type":"array","items":{"oneOf":[{"type":"object","title":"TrueFoundryAgentMcpServerRegistry","description":"An MCP server registered on the TrueFoundry platform, referenced by its registered name.","required":["type","name"],"x-fern-type-name":"TrueFoundryAgentMcpServer","properties":{"type":{"description":"Type","type":"string","enum":["truefoundry-mcp-registry"],"default":"truefoundry-mcp-registry","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The registered name of the MCP server to connect.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.0.name","typeLabel":"string"},"preload":{"description":"When true, this server's tools are preloaded into context. When false (default), tools are discovered lazily and only preload_tools stay eager.","type":"boolean","default":false,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.0.preload","typeLabel":"boolean"},"enable_tools":{"description":"Tools to enable. Supports tags @all, @read-only, @write, @destructive or literal tool names.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.0.enable_tools.items.[INDEX]","typeLabel":"string"},"default":["@all"],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.0.enable_tools","typeLabel":"string[]"},"disable_tools":{"description":"Tools to disable (subtracted from enable_tools).","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.0.disable_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.0.disable_tools","typeLabel":"string[]"},"preload_tools":{"description":"When preload is false, tools to still preload into context.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.0.preload_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.0.preload_tools","typeLabel":"string[]"},"require_approval_for_tools":{"description":"Tools that require human approval before execution. Supports tags and literal tool names.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.0.require_approval_for_tools.items.[INDEX]","typeLabel":"string"},"default":["@write","@destructive"],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.0.require_approval_for_tools","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.0","typeLabel":"TrueFoundryAgentMcpServerRegistry · object"},{"type":"object","title":"TrueFoundryAgentMcpServerInline","description":"An MCP server connected directly by its url, defined inline in the agent (not registered on the TrueFoundry platform).","required":["type","name","url"],"x-fern-type-name":"TrueFoundryAgentMcpServer","properties":{"type":{"description":"Type","type":"string","enum":["inline"],"default":"inline","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"name":{"description":"A name you choose to identify this inline server.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.1.name","typeLabel":"string"},"url":{"description":"The inline MCP server endpoint (streamable-http or SSE). Must be an http(s) URL.","type":"string","pattern":"^https?:\\/\\/[^\\s]+$","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.1.url","typeLabel":"string"},"preload":{"description":"When true, this server's tools are preloaded into context. When false (default), tools are discovered lazily and only preload_tools stay eager.","type":"boolean","default":false,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.1.preload","typeLabel":"boolean"},"enable_tools":{"description":"Tools to enable. Supports tags @all, @read-only, @write, @destructive or literal tool names.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.1.enable_tools.items.[INDEX]","typeLabel":"string"},"default":["@all"],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.1.enable_tools","typeLabel":"string[]"},"disable_tools":{"description":"Tools to disable (subtracted from enable_tools).","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.1.disable_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.1.disable_tools","typeLabel":"string[]"},"preload_tools":{"description":"When preload is false, tools to still preload into context.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.1.preload_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.1.preload_tools","typeLabel":"string[]"},"require_approval_for_tools":{"description":"Tools that require human approval before execution. Supports tags and literal tool names.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.1.require_approval_for_tools.items.[INDEX]","typeLabel":"string"},"default":["@write","@destructive"],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.1.require_approval_for_tools","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX].oneOf.1","typeLabel":"TrueFoundryAgentMcpServerInline · object"}],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers.items.[INDEX]","typeLabel":"TrueFoundryAgentMcpServerRegistry · object | TrueFoundryAgentMcpServerInline · object"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.mcp_servers","typeLabel":"(TrueFoundryAgentMcpServerRegistry · object | TrueFoundryAgentMcpServerInline · object)[]"},"instructions":{"description":"System instructions or prompt for the agent","type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.instructions","typeLabel":"string"},"messages":{"description":"Pre-defined initial messages for the agent. Supports template variable replacement.","type":"array","items":{"type":"object","required":["type","content"],"properties":{"type":{"description":"Message type discriminator.","type":"string","enum":["user.message"],"default":"user.message","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.messages.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"content":{"description":"Content of the user message. Supports template variables like {{variable_name}}.","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.messages.items.[INDEX].content","typeLabel":"string"}},"title":"TrueFoundryAgentUserMessage","x-fern-type-name":"TrueFoundryAgentUserMessage","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.messages.items.[INDEX]","typeLabel":"TrueFoundryAgentUserMessage · object"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.messages","typeLabel":"TrueFoundryAgentUserMessage · object[]"},"variables":{"description":"Variables keyed by name. Each has optional default_value and optional description.","type":"object","additionalProperties":{"type":"object","properties":{"default_value":{"description":"Default value for the variable","type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.variables.additionalProperties.default_value","typeLabel":"string"},"description":{"description":"Description of the variable","type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.variables.additionalProperties.description","typeLabel":"string"}},"title":"TrueFoundryAgentVariable","x-fern-type-name":"TrueFoundryAgentVariable","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.variables.additionalProperties","typeLabel":"TrueFoundryAgentVariable · object"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.variables","typeLabel":"object"},"sample_inputs":{"description":"Sample inputs for your agent. These inputs are shown as an example in the \"Agent Chat\" page. (Click on Try Now in the agent listing page)","type":"array","items":{"type":"object","properties":{"text":{"description":"Input for the agent","type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.sample_inputs.items.[INDEX].text","typeLabel":"string"},"variables":{"description":"Variable inputs for Prompt Variables defined in the Prompt","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.sample_inputs.items.[INDEX].variables.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.sample_inputs.items.[INDEX].variables","typeLabel":"object"}},"title":"SampleAgentInput","x-fern-type-name":"SampleAgentInput","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.sample_inputs.items.[INDEX]","typeLabel":"SampleAgentInput · object"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.sample_inputs","typeLabel":"SampleAgentInput · object[]"},"response_format":{"oneOf":[{"type":"object","title":"ResponseFormatText","required":["type"],"x-fern-type-name":"TrueFoundryAgentResponseFormat","properties":{"type":{"type":"string","enum":["text"],"default":"text","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.response_format.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.response_format.oneOf.0","typeLabel":"ResponseFormatText · object"},{"type":"object","title":"ResponseFormatJSONSchema","required":["type","json_schema"],"x-fern-type-name":"TrueFoundryAgentResponseFormat","properties":{"type":{"type":"string","enum":["json_schema"],"default":"json_schema","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.response_format.oneOf.1.type","typeLabel":"enum\u003cstring>"},"json_schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.response_format.oneOf.1.json_schema.name","typeLabel":"string"},"description":{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.response_format.oneOf.1.json_schema.description","typeLabel":"string"},"schema":{"type":"object","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.response_format.oneOf.1.json_schema.schema","typeLabel":"object"},"strict":{"type":"boolean","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.response_format.oneOf.1.json_schema.strict","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.response_format.oneOf.1.json_schema","typeLabel":"object"}},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.response_format.oneOf.1","typeLabel":"ResponseFormatJSONSchema · object"},{"type":"object","title":"ResponseFormatJSONObject","required":["type"],"x-fern-type-name":"TrueFoundryAgentResponseFormat","properties":{"type":{"type":"string","enum":["json_object"],"default":"json_object","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.response_format.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.response_format.oneOf.2","typeLabel":"ResponseFormatJSONObject · object"}],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.response_format","typeLabel":"ResponseFormatText · object | ResponseFormatJSONSchema · object | ResponseFormatJSONObject · object"},"config":{"type":"object","properties":{"iteration_limit":{"description":"Maximum number of iterations for the agent","type":"integer","minimum":1,"maximum":1024,"default":100,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.iteration_limit","typeLabel":"integer"},"sandbox":{"type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean","default":true,"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.sandbox.enabled","typeLabel":"boolean"},"file_downloads":{"type":"boolean","default":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.sandbox.file_downloads","typeLabel":"boolean"},"network_policy":{"type":"object","properties":{"auth_inject":{"description":"Rules for injecting authentication into outbound network requests from the sandbox.","type":"array","items":{"description":"Git Auth Inject","type":"object","required":["type","match","auth_data"],"properties":{"type":{"description":"+value=git","type":"string","enum":["git"],"default":"git","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.sandbox.network_policy.auth_inject.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"match":{"type":"object","required":["hosts"],"properties":{"hosts":{"description":"Exact hostnames that this auth injection rule applies to (e.g. api.github.com). Wildcards are not allowed.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9]([A-Za-z0-9.-]*[A-Za-z0-9])?$","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.sandbox.network_policy.auth_inject.items.[INDEX].match.hosts.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.sandbox.network_policy.auth_inject.items.[INDEX].match.hosts","typeLabel":"string[]"}},"title":"TrueFoundryAgentSandboxAuthInjectMatch","x-fern-type-name":"TrueFoundryAgentSandboxAuthInjectMatch","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.sandbox.network_policy.auth_inject.items.[INDEX].match","typeLabel":"TrueFoundryAgentSandboxAuthInjectMatch · object"},"auth_data":{"description":"Basic Auth","type":"object","required":["type","username","password"],"properties":{"type":{"description":"+value=basic","type":"string","enum":["basic"],"default":"basic","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.sandbox.network_policy.auth_inject.items.[INDEX].auth_data.type","typeLabel":"enum\u003cstring>"},"username":{"description":"Username for basic authentication.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.sandbox.network_policy.auth_inject.items.[INDEX].auth_data.username","typeLabel":"string"},"password":{"description":"Password or token for basic authentication. Stored as a secret reference (tfy-secret://…).","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.sandbox.network_policy.auth_inject.items.[INDEX].auth_data.password","typeLabel":"string"}},"title":"TrueFoundryAgentSandboxAuthData","x-fern-type-name":"TrueFoundryAgentSandboxAuthData","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.sandbox.network_policy.auth_inject.items.[INDEX].auth_data","typeLabel":"TrueFoundryAgentSandboxAuthData · object"}},"title":"TrueFoundryAgentSandboxAuthInject","x-fern-type-name":"TrueFoundryAgentSandboxAuthInject","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.sandbox.network_policy.auth_inject.items.[INDEX]","typeLabel":"TrueFoundryAgentSandboxAuthInject · object"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.sandbox.network_policy.auth_inject","typeLabel":"TrueFoundryAgentSandboxAuthInject · object[]"}},"title":"TrueFoundryAgentSandboxNetworkPolicy","x-fern-type-name":"TrueFoundryAgentSandboxNetworkPolicy","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.sandbox.network_policy","typeLabel":"TrueFoundryAgentSandboxNetworkPolicy · object"}},"title":"TrueFoundryAgentSandboxConfig","x-fern-type-name":"TrueFoundryAgentSandboxConfig","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.sandbox","typeLabel":"TrueFoundryAgentSandboxConfig · object"},"dynamic_sub_agents":{"type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean","default":true,"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.dynamic_sub_agents.enabled","typeLabel":"boolean"}},"title":"TrueFoundryAgentDynamicSubAgentsConfig","x-fern-type-name":"TrueFoundryAgentDynamicSubAgentsConfig","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.dynamic_sub_agents","typeLabel":"TrueFoundryAgentDynamicSubAgentsConfig · object"},"context_management":{"type":"object","properties":{"compaction":{"type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean","default":true,"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.context_management.compaction.enabled","typeLabel":"boolean"},"compaction_threshold_tokens":{"type":"integer","default":50000,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.context_management.compaction.compaction_threshold_tokens","typeLabel":"integer"}},"title":"TrueFoundryAgentCompactionConfig","x-fern-type-name":"TrueFoundryAgentCompactionConfig","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.context_management.compaction","typeLabel":"TrueFoundryAgentCompactionConfig · object"},"large_tool_response":{"type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean","default":true,"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.context_management.large_tool_response.enabled","typeLabel":"boolean"}},"title":"TrueFoundryAgentLargeToolResponseConfig","x-fern-type-name":"TrueFoundryAgentLargeToolResponseConfig","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.context_management.large_tool_response","typeLabel":"TrueFoundryAgentLargeToolResponseConfig · object"}},"title":"TrueFoundryAgentContextManagementConfig","x-fern-type-name":"TrueFoundryAgentContextManagementConfig","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.context_management","typeLabel":"TrueFoundryAgentContextManagementConfig · object"},"generative_ui":{"type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean","default":true,"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.generative_ui.enabled","typeLabel":"boolean"}},"title":"TrueFoundryAgentGenerativeUIConfig","x-fern-type-name":"TrueFoundryAgentGenerativeUIConfig","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.generative_ui","typeLabel":"TrueFoundryAgentGenerativeUIConfig · object"},"ask_user_questions":{"type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean","default":true,"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.ask_user_questions.enabled","typeLabel":"boolean"}},"title":"TrueFoundryAgentAskUserQuestionsConfig","x-fern-type-name":"TrueFoundryAgentAskUserQuestionsConfig","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config.ask_user_questions","typeLabel":"TrueFoundryAgentAskUserQuestionsConfig · object"}},"title":"TrueFoundryAgentConfig","x-fern-type-name":"TrueFoundryAgentConfig","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.config","typeLabel":"TrueFoundryAgentConfig · object"},"collaborators":{"description":"List of users who have access to this Agent","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.0","typeLabel":"TrueFoundryAgentManifest · object"},{"type":"object","title":"RemoteAgent","description":"Agent Manifest","required":["type","url","framework","name","description"],"x-fern-type-name":"AgentManifest","properties":{"name":{"description":"The name of the Agent","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.name","typeLabel":"string"},"description":{"description":"The description of the Agent","type":"string","maxLength":2000,"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.description","typeLabel":"string"},"type":{"description":"Type of the manifest","type":"string","enum":["remote-agent/self-hosted"],"default":"remote-agent/self-hosted","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.type","typeLabel":"enum\u003cstring>"},"url":{"description":"The URL of the server","type":"string","pattern":"^https?:\\/\\/[^\\s]+$","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.url","typeLabel":"string"},"framework":{"oneOf":[{"type":"object","title":"A2AFramework","description":"A2A","required":["type","agent_card_path"],"x-fern-type-name":"AgentFramework","properties":{"type":{"description":"Type","type":"string","enum":["a2a"],"default":"a2a","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.framework.oneOf.0.type","typeLabel":"enum\u003cstring>"},"agent_card_path":{"description":"Path to the agent card JSON, relative to the base URL","type":"string","default":"/.well-known/agent-card.json","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.framework.oneOf.0.agent_card_path","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.framework.oneOf.0","typeLabel":"A2AFramework · object"},{"type":"object","title":"CustomFramework","description":"Custom","required":["type"],"x-fern-type-name":"AgentFramework","properties":{"type":{"description":"Type","type":"string","enum":["custom"],"default":"custom","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.framework.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.framework.oneOf.1","typeLabel":"CustomFramework · object"}],"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.framework","typeLabel":"A2AFramework · object | CustomFramework · object"},"tags":{"description":"Tags for the Agent","type":"object","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.tags","typeLabel":"object"},"collaborators":{"description":"List of users who have access to this Agent","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.ownedBy","typeLabel":"OwnedBy · object"},"auth_data":{"oneOf":[{"type":"object","title":"CustomServerHeaderAuth","description":"Static API key or token authentication via request headers.","required":["type","headers"],"x-fern-type-name":"CustomAgentServerAuth","properties":{"type":{"description":"+value=header","type":"string","enum":["header"],"default":"header","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.0.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"Map each header name to its value.","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.0.headers.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.0.headers","typeLabel":"object"}},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.0","typeLabel":"CustomServerHeaderAuth · object"},{"type":"object","title":"CustomServerPassthrough","description":"Authenticate using your existing TrueFoundry account (PAT or Virtual Accounts). Your credentials are automatically passed to the server.","required":["type"],"x-fern-type-name":"CustomAgentServerAuth","properties":{"type":{"description":"+value=passthrough","type":"string","enum":["passthrough"],"default":"passthrough","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.1","typeLabel":"CustomServerPassthrough · object"},{"type":"object","title":"CustomServerOAuth2Marker","description":"The Gateway attaches an access token acquired from the agent's configured identity provider. The credentials live in the v2 manifest and are deliberately absent here, so this manifest can be synced to the Gateway without carrying a client secret.","required":["type","grant_type"],"x-fern-type-name":"CustomAgentServerAuth","properties":{"type":{"description":"+value=oauth2","type":"string","enum":["oauth2"],"default":"oauth2","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.2.type","typeLabel":"enum\u003cstring>"},"grant_type":{"description":"The OAuth2 flow the Gateway uses to acquire the token.","type":"string","enum":["client_credentials","jwt_bearer","token_exchange"],"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.2.grant_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.2","typeLabel":"CustomServerOAuth2Marker · object"},{"type":"object","title":"CustomServerAwsSigV4","description":"Sign requests to AWS Bedrock AgentCore with AWS credentials (SigV4).","required":["type","region","auth"],"x-fern-type-name":"CustomAgentServerAuth","properties":{"type":{"description":"+value=aws-sigv4","type":"string","enum":["aws-sigv4"],"default":"aws-sigv4","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.3.type","typeLabel":"enum\u003cstring>"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.3.region","typeLabel":"enum\u003cstring>"},"auth":{"oneOf":[{"type":"object","title":"CustomServerAwsAccessKeyAuth","description":"Authenticate with an AWS access key pair.","required":["type","access_key_id","secret_access_key"],"x-fern-type-name":"CustomServerAwsAccessKeyAuth","properties":{"type":{"description":"+value=aws-access-key","type":"string","enum":["aws-access-key"],"default":"aws-access-key","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.3.auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"access_key_id":{"description":"AWS access key ID. Prefer a tfy-secret reference.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.3.auth.oneOf.0.access_key_id","typeLabel":"string"},"secret_access_key":{"description":"AWS secret access key. Prefer a tfy-secret reference.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.3.auth.oneOf.0.secret_access_key","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.3.auth.oneOf.0","typeLabel":"CustomServerAwsAccessKeyAuth · object"},{"type":"object","title":"CustomServerAwsAssumeRoleAuth","description":"Authenticate by assuming an IAM role (SigV4).","required":["type","assumed_role_arn"],"x-fern-type-name":"CustomServerAwsAssumeRoleAuth","properties":{"type":{"description":"+value=aws-assumed-role","type":"string","enum":["aws-assumed-role"],"default":"aws-assumed-role","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.3.auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"assumed_role_arn":{"description":"ARN of the role you want to assume. Prefer a tfy-secret reference.","type":"string","pattern":"^(arn:(aws|aws-us-gov|aws-cn):iam::[0-9]{12}:role(/[\\w+=,.@-]+)+|tfy-secret:\\/\\/.+:.+:.+)$","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.3.auth.oneOf.1.assumed_role_arn","typeLabel":"string"},"external_id":{"description":"Optional external ID to use when assuming the role. This provides an added layer of security by ensuring only parties with the correct external ID can assume the role.","type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.3.auth.oneOf.1.external_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.3.auth.oneOf.1","typeLabel":"CustomServerAwsAssumeRoleAuth · object"}],"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.3.auth","typeLabel":"CustomServerAwsAccessKeyAuth · object | CustomServerAwsAssumeRoleAuth · object"}},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data.oneOf.3","typeLabel":"CustomServerAwsSigV4 · object"}],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1.auth_data","typeLabel":"CustomServerHeaderAuth · object | CustomServerPassthrough · object | CustomServerOAuth2Marker · object | CustomServerAwsSigV4 · object"}},"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.1","typeLabel":"RemoteAgent · object"},{"type":"object","title":"LegacyAgentManifest","description":"Agent Manifest","required":["type","name","description","source"],"x-fern-type-name":"AgentManifest","properties":{"type":{"description":"Type of the manifest","type":"string","enum":["agent"],"default":"agent","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Agent","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.name","typeLabel":"string"},"description":{"description":"The description of the Agent","type":"string","maxLength":2000,"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.description","typeLabel":"string"},"source":{"oneOf":[{"type":"object","title":"PromptSource","description":"Prompt","required":["type","prompt_version_fqn"],"x-fern-type-name":"AgentSource","properties":{"type":{"description":"Type of agent source","type":"string","enum":["prompt"],"default":"prompt","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt_version_fqn":{"description":"Fully qualified name of the prompt version to use as the agent source","type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.0.prompt_version_fqn","typeLabel":"string"},"skills":{"description":"List of skills associated with the agent","type":"array","items":{"type":"object","required":["id","name","description"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.0.skills.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.0.skills.items.[INDEX].name","typeLabel":"string"},"description":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.0.skills.items.[INDEX].description","typeLabel":"string"},"tags":{"type":"array","items":{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.0.skills.items.[INDEX].tags.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.0.skills.items.[INDEX].tags","typeLabel":"string[]"},"examples":{"type":"array","items":{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.0.skills.items.[INDEX].examples.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.0.skills.items.[INDEX].examples","typeLabel":"string[]"},"inputModes":{"type":"array","items":{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.0.skills.items.[INDEX].inputModes.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.0.skills.items.[INDEX].inputModes","typeLabel":"string[]"},"outputModes":{"type":"array","items":{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.0.skills.items.[INDEX].outputModes.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.0.skills.items.[INDEX].outputModes","typeLabel":"string[]"}},"title":"A2AAgentSkill","x-fern-type-name":"A2AAgentSkill","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.0.skills.items.[INDEX]","typeLabel":"A2AAgentSkill · object"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.0.skills","typeLabel":"A2AAgentSkill · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.0","typeLabel":"PromptSource · object"},{"type":"object","title":"HostedA2AAgent","description":"Hosted A2A Agent","required":["type","agent_card_url"],"x-fern-type-name":"AgentSource","properties":{"type":{"description":"Type of agent source","type":"string","enum":["hosted-a2a-agent"],"default":"hosted-a2a-agent","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"agent_card_url":{"description":"Agent Card URL for the A2A Agent","type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.1.agent_card_url","typeLabel":"string"},"headers":{"description":"Headers to be sent with the request to the hosted A2A agent. Primarily used for authentication.","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.1.headers.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.1.headers","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source.oneOf.1","typeLabel":"HostedA2AAgent · object"}],"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.source","typeLabel":"PromptSource · object | HostedA2AAgent · object"},"collaborators":{"description":"List of users who have access to this Agent","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.collaborators","typeLabel":"Collaborator · object[]"},"sample_inputs":{"description":"Sample inputs for your agent. These inputs are shown as an example in the \"Agent Chat\" page. (Click on Try Now in the agent listing page)","type":"array","items":{"type":"object","properties":{"text":{"description":"Input for the agent","type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.sample_inputs.items.[INDEX].text","typeLabel":"string"},"variables":{"description":"Variable inputs for Prompt Variables defined in the Prompt","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.sample_inputs.items.[INDEX].variables.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.sample_inputs.items.[INDEX].variables","typeLabel":"object"}},"title":"SampleAgentInput","x-fern-type-name":"SampleAgentInput","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.sample_inputs.items.[INDEX]","typeLabel":"SampleAgentInput · object"},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.sample_inputs","typeLabel":"SampleAgentInput · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2.ownedBy","typeLabel":"OwnedBy · object"}},"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest.oneOf.2","typeLabel":"LegacyAgentManifest · object"}],"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.manifest","typeLabel":"TrueFoundryAgentManifest · object | RemoteAgent · object | LegacyAgentManifest · object"},"version":{"type":"number","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.version","typeLabel":"number"},"id":{"oneOf":[{"type":"string","description":"System-generated agent version ID.","example":"jqfwg345gi25n5ju2yz5iz6m","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.id.oneOf.0","typeLabel":"string"},{"type":"null","description":"System-generated agent version ID.","example":"jqfwg345gi25n5ju2yz5iz6m","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.id","typeLabel":"string | null"},"metadata":{"oneOf":[{"type":"object","title":"AgentVersionMetadata","description":"Optional metadata attached to the agent version.","x-fern-type-name":"AgentVersionMetadata","properties":{"promptVariables":{"oneOf":[{"type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.metadata.oneOf.0.promptVariables.oneOf.0.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.metadata.oneOf.0.promptVariables.oneOf.0.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.metadata.oneOf.0.promptVariables.oneOf.0.additionalProperties","typeLabel":"string | null"},"description":"Prompt template variables (variable name to default value) saved from the linked prompt version. Only set for agents with an instruction.","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.metadata.oneOf.0.promptVariables.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.metadata.oneOf.0.promptVariables.oneOf.1.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.metadata.oneOf.0.promptVariables.oneOf.1.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.metadata.oneOf.0.promptVariables.oneOf.1.additionalProperties","typeLabel":"string | null"},"description":"Prompt template variables (variable name to default value) saved from the linked prompt version. Only set for agents with an instruction.","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.metadata.oneOf.0.promptVariables.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.metadata.oneOf.0.promptVariables","typeLabel":"object | null"}},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.metadata.oneOf.0","typeLabel":"AgentVersionMetadata · object"},{"type":"null","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.metadata","typeLabel":"AgentVersionMetadata · object | null"},"createdBySubject":{"oneOf":[{"type":"object","title":"Subject","required":["subjectId","subjectType"],"x-fern-type-name":"Subject","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.0.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.0.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.0.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.0.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.0.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.0.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.0.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.0.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.0.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.0.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.0.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.0.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.0.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.0.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.0.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.0.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.0.subjectExternalIdentitySlug","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.0","typeLabel":"Subject · object"},{"type":"null","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0.createdBySubject","typeLabel":"Subject · object | null"}},"uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.0","typeLabel":"AgentVersion · object"},{"type":"null","uniqueKey":"data.oneOf.12.latestVersionDetails.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.latestVersionDetails","typeLabel":"AgentVersion · object | null"},"manifest":{"oneOf":[{"type":"object","description":"Copy of the agent manifest (v2).","uniqueKey":"data.oneOf.12.manifest.oneOf.0","typeLabel":"object"},{"type":"null","description":"Copy of the agent manifest (v2).","uniqueKey":"data.oneOf.12.manifest.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.manifest","typeLabel":"object | null"},"metadata":{"oneOf":[{"type":"object","description":"Server-owned bookkeeping, such as the outbound auth revision.","uniqueKey":"data.oneOf.12.metadata.oneOf.0","typeLabel":"object"},{"type":"null","description":"Server-owned bookkeeping, such as the outbound auth revision.","uniqueKey":"data.oneOf.12.metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.metadata","typeLabel":"object | null"},"agentIdentityId":{"oneOf":[{"type":"string","description":"ID of the agent identity created for this agent.","uniqueKey":"data.oneOf.12.agentIdentityId.oneOf.0","typeLabel":"string"},{"type":"null","description":"ID of the agent identity created for this agent.","uniqueKey":"data.oneOf.12.agentIdentityId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.agentIdentityId","typeLabel":"string | null"},"jwtId":{"oneOf":[{"type":"string","description":"System-generated ID of the currently active JWT of the linked agent identity.","uniqueKey":"data.oneOf.12.jwtId.oneOf.0","typeLabel":"string"},{"type":"null","description":"System-generated ID of the currently active JWT of the linked agent identity.","uniqueKey":"data.oneOf.12.jwtId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.jwtId","typeLabel":"string | null"},"jwts":{"oneOf":[{"description":"JWT tokens of the linked agent identity. Present only for agents with an identity.","type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.jwts.oneOf.0.items.[INDEX].id","typeLabel":"string"},"subjectType":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.jwts.oneOf.0.items.[INDEX].subjectType","typeLabel":"string"},"subjectId":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.jwts.oneOf.0.items.[INDEX].subjectId","typeLabel":"string"},"expiry":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.jwts.oneOf.0.items.[INDEX].expiry","typeLabel":"string\u003cdate-time>"},"tokenType":{"type":"string","enum":["jwt","opaque"],"isRequired":true,"uniqueKey":"data.oneOf.12.jwts.oneOf.0.items.[INDEX].tokenType","typeLabel":"enum\u003cstring>"},"createdAt":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.jwts.oneOf.0.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.oneOf.12.jwts.oneOf.0.items.[INDEX].updatedAt","typeLabel":"string\u003cdate-time>"},"metadata":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"data.oneOf.12.jwts.oneOf.0.items.[INDEX].metadata.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"data.oneOf.12.jwts.oneOf.0.items.[INDEX].metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.jwts.oneOf.0.items.[INDEX].metadata","typeLabel":"object | null"},"lastAccessedAt":{"oneOf":[{"format":"date-time","type":"string","description":"Last authentication time for this specific token. Null until the first access event lands.","uniqueKey":"data.oneOf.12.jwts.oneOf.0.items.[INDEX].lastAccessedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Last authentication time for this specific token. Null until the first access event lands.","uniqueKey":"data.oneOf.12.jwts.oneOf.0.items.[INDEX].lastAccessedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.jwts.oneOf.0.items.[INDEX].lastAccessedAt","typeLabel":"string\u003cdate-time> | null"}},"required":["id","subjectType","subjectId","expiry","tokenType","createdAt","updatedAt"],"title":"Jwt","x-fern-type-name":"Jwt","uniqueKey":"data.oneOf.12.jwts.oneOf.0.items.[INDEX]","typeLabel":"Jwt · object"},"uniqueKey":"data.oneOf.12.jwts.oneOf.0","typeLabel":"Jwt · object[]"},{"description":"JWT tokens of the linked agent identity. Present only for agents with an identity.","type":"null","items":{"type":"object","properties":{"id":{"type":"string"},"subjectType":{"type":"string"},"subjectId":{"type":"string"},"metadata":{"oneOf":[{"type":"object","additionalProperties":true},{"type":"null","additionalProperties":true}]},"expiry":{"format":"date-time","type":"string"},"tokenType":{"type":"string","enum":["jwt","opaque"]},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"},"lastAccessedAt":{"oneOf":[{"format":"date-time","type":"string","description":"Last authentication time for this specific token. Null until the first access event lands."},{"format":"date-time","type":"null","description":"Last authentication time for this specific token. Null until the first access event lands."}]}},"required":["id","subjectType","subjectId","expiry","tokenType","createdAt","updatedAt"],"title":"Jwt","x-fern-type-name":"Jwt"},"uniqueKey":"data.oneOf.12.jwts.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.jwts","typeLabel":"Jwt · object[] | null"},"createdBy":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.12.createdBy.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.12.createdBy.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.12.createdBy","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.12","typeLabel":"Agent · object"},{"type":"object","title":"Environment","description":"The created or updated resource","required":["color","tenantName","createdBySubject","isProduction","manifest"],"x-fern-type-name":"Environment","properties":{"color":{"type":"object","title":"EnvironmentColor","x-fern-type-name":"EnvironmentColor","properties":{"colorHex":{"type":"string","uniqueKey":"data.oneOf.13.color.colorHex","typeLabel":"string"},"backgroundColorHex":{"type":"string","uniqueKey":"data.oneOf.13.color.backgroundColorHex","typeLabel":"string"},"color":{"type":"string","uniqueKey":"data.oneOf.13.color.color","typeLabel":"string"},"backgroundColor":{"type":"string","uniqueKey":"data.oneOf.13.color.backgroundColor","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.13.color","typeLabel":"EnvironmentColor · object"},"tenantName":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.13.tenantName","typeLabel":"string"},"createdBySubject":{"type":"object","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.13.createdBySubject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.13.createdBySubject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.13.createdBySubject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.13.createdBySubject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.13.createdBySubject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.13.createdBySubject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.13.createdBySubject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.13.createdBySubject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.13.createdBySubject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.13.createdBySubject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.13.createdBySubject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.13.createdBySubject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.13.createdBySubject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.13.createdBySubject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.13.createdBySubject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.13.createdBySubject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.13.createdBySubject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"required":["subjectId","subjectType"],"title":"Subject","x-fern-type-name":"Subject","isRequired":true,"uniqueKey":"data.oneOf.13.createdBySubject","typeLabel":"Subject · object"},"isProduction":{"type":"boolean","isRequired":true,"uniqueKey":"data.oneOf.13.isProduction","typeLabel":"boolean"},"manifest":{"type":"object","title":"EnvironmentManifest","required":["type","name","color","isProduction","optimizeFor"],"x-fern-type-name":"EnvironmentManifest","properties":{"type":{"description":"+value=environment","type":"string","enum":["environment"],"default":"environment","isRequired":true,"uniqueKey":"data.oneOf.13.manifest.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Environment Name","type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.13.manifest.name","typeLabel":"string"},"color":{"type":"object","properties":{"colorHex":{"type":"string","uniqueKey":"data.oneOf.13.manifest.color.colorHex","typeLabel":"string"},"backgroundColorHex":{"type":"string","uniqueKey":"data.oneOf.13.manifest.color.backgroundColorHex","typeLabel":"string"},"color":{"type":"string","uniqueKey":"data.oneOf.13.manifest.color.color","typeLabel":"string"},"backgroundColor":{"type":"string","uniqueKey":"data.oneOf.13.manifest.color.backgroundColor","typeLabel":"string"}},"title":"EnvironmentColor","x-fern-type-name":"EnvironmentColor","isRequired":true,"uniqueKey":"data.oneOf.13.manifest.color","typeLabel":"EnvironmentColor · object"},"isProduction":{"description":"Environment Type - Indicates if the environment is for production use","type":"boolean","isRequired":true,"uniqueKey":"data.oneOf.13.manifest.isProduction","typeLabel":"boolean"},"optimizeFor":{"type":"string","enum":["COST","AVAILABILITY"],"title":"EnvironmentOptimizeFor","x-fern-type-name":"EnvironmentOptimizeFor","isRequired":true,"uniqueKey":"data.oneOf.13.manifest.optimizeFor","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"data.oneOf.13.manifest","typeLabel":"EnvironmentManifest · object"},"id":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.13.id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.13.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.13.id","typeLabel":"string | null"},"priority":{"oneOf":[{"type":"number","uniqueKey":"data.oneOf.13.priority.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"data.oneOf.13.priority.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.13.priority","typeLabel":"number | null"},"optimizeFor":{"oneOf":[{"type":"string","title":"EnvironmentOptimizeFor","enum":["COST","AVAILABILITY"],"x-fern-type-name":"EnvironmentOptimizeFor","uniqueKey":"data.oneOf.13.optimizeFor.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"data.oneOf.13.optimizeFor.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.13.optimizeFor","typeLabel":"enum\u003cstring> | null"},"createdBy":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.13.createdBy.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.13.createdBy.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.13.createdBy","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.13","typeLabel":"Environment · object"},{"type":"object","title":"TracingProject","description":"The created or updated resource","required":["fqn","createdBySubject","tenantName","accountId","manifest","storageType","storageRoot"],"x-fern-type-name":"TracingProject","properties":{"fqn":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.14.fqn","typeLabel":"string"},"createdBySubject":{"type":"object","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.14.createdBySubject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.14.createdBySubject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.14.createdBySubject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.14.createdBySubject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.14.createdBySubject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.14.createdBySubject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.14.createdBySubject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.14.createdBySubject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.14.createdBySubject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.14.createdBySubject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.14.createdBySubject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.14.createdBySubject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.14.createdBySubject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.14.createdBySubject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.14.createdBySubject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.14.createdBySubject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.14.createdBySubject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"required":["subjectId","subjectType"],"title":"Subject","x-fern-type-name":"Subject","isRequired":true,"uniqueKey":"data.oneOf.14.createdBySubject","typeLabel":"Subject · object"},"tenantName":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.14.tenantName","typeLabel":"string"},"accountId":{"type":"string","nullable":false,"isRequired":true,"uniqueKey":"data.oneOf.14.accountId","typeLabel":"string"},"manifest":{"type":"object","additionalProperties":true,"isRequired":true,"uniqueKey":"data.oneOf.14.manifest","typeLabel":"object"},"storageType":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.14.storageType","typeLabel":"string"},"storageRoot":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.14.storageRoot","typeLabel":"string"},"id":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.14.id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.14.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.14.id","typeLabel":"string | null"},"createdAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.14.createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.14.createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.14.createdAt","typeLabel":"string\u003cdate-time> | null"},"updatedAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.14.updatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.14.updatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.14.updatedAt","typeLabel":"string\u003cdate-time> | null"},"storageIntegrationId":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.14.storageIntegrationId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.14.storageIntegrationId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.14.storageIntegrationId","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.14","typeLabel":"TracingProject · object"},{"type":"object","title":"MCPServerV2","description":"The created or updated resource","required":["fqn","tenantName","manifest","createdBySubject"],"x-fern-type-name":"MCPServerV2","properties":{"fqn":{"type":"string","description":"Fully qualified name.","example":"my-tenant:mcp-server:filesystem-tools","isRequired":true,"uniqueKey":"data.oneOf.15.fqn","typeLabel":"string"},"tenantName":{"type":"string","description":"Tenant the MCP server belongs to.","isRequired":true,"uniqueKey":"data.oneOf.15.tenantName","typeLabel":"string"},"manifest":{"oneOf":[{"type":"object","title":"RemoteMCPServerManifest","description":"User-supplied MCP server configuration. Sensitive fields inside `auth_data` (and other manifest secrets) are redacted for callers who do not have `MANAGE_MCP_SERVER` permission on this server.","required":["type","name","description","url"],"x-fern-type-name":"MCPServerManifest","properties":{"type":{"description":"+value=mcp-server/remote","type":"string","enum":["mcp-server/remote"],"default":"mcp-server/remote","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,71}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.description","typeLabel":"string"},"url":{"description":"The endpoint URL for the MCP Server.","type":"string","pattern":"^https?:\\/\\/[^\\s]+$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.url","typeLabel":"string"},"display_name":{"description":"A human-readable label for the MCP Server in the UI. If omitted, the server name is shown.","type":"string","minLength":1,"maxLength":128,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.display_name","typeLabel":"string"},"tls_settings":{"description":"Configure TLS settings for secure connections with custom CA certificates.","type":"object","required":["reject_unauthorized"],"properties":{"reject_unauthorized":{"description":"When set to true, it will reject any connection which is not authorized with the list of supplied CAs.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.tls_settings.reject_unauthorized","typeLabel":"boolean"},"ca_cert":{"description":"Add custom CA certificates to use for TLS verification.","type":"string","uniqueKey":"data.oneOf.15.manifest.oneOf.0.tls_settings.ca_cert","typeLabel":"string"}},"title":"CustomTLSSettings","x-fern-type-name":"CustomTLSSettings","uniqueKey":"data.oneOf.15.manifest.oneOf.0.tls_settings","typeLabel":"CustomTLSSettings · object"},"tool_settings":{"description":"Customize tool descriptions or enable/disable specific tools from the MCP Server.","type":"array","items":{"description":"MCP Tool Setting","type":"object","required":["name"],"properties":{"name":{"description":"The unique name of the tool.","type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_settings.items.[INDEX].name","typeLabel":"string"},"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_settings.items.[INDEX].description","typeLabel":"string"},"disabled":{"description":"Allows to disable the tool.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_settings.items.[INDEX].disabled","typeLabel":"boolean"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_settings.items.[INDEX].annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_settings.items.[INDEX].annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_settings.items.[INDEX].annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"MCPToolSetting","x-fern-type-name":"MCPToolSetting","uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_settings.items.[INDEX]","typeLabel":"MCPToolSetting · object"},"uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_settings","typeLabel":"MCPToolSetting · object[]"},"tool_policy":{"description":"Enable/disable policy for MCP tools.","type":"object","required":["enable_tools_by_default"],"properties":{"enable_tools_by_default":{"description":"When true, all tools are exposed except those in disabled_tools. When false, only tools listed in enabled_tools are exposed.","type":"boolean","enum":[true,false],"default":true,"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_policy.enable_tools_by_default","typeLabel":"enum\u003cboolean>"},"disabled_tools":{"description":"Tool names to disable when enable_tools_by_default is true.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_policy.disabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_policy.disabled_tools","typeLabel":"string[]"},"enabled_tools":{"description":"Tool names to enable when enable_tools_by_default is false.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_policy.enabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_policy.enabled_tools","typeLabel":"string[]"}},"title":"MCPToolPolicy","x-fern-type-name":"MCPToolPolicy","uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_policy","typeLabel":"MCPToolPolicy · object"},"tool_metadata":{"description":"Per-tool description and annotation overrides keyed by tool name.","type":"object","additionalProperties":{"description":"Description and annotation overrides for a single MCP tool.","type":"object","properties":{"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_metadata.additionalProperties.description","typeLabel":"string"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_metadata.additionalProperties.annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_metadata.additionalProperties.annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_metadata.additionalProperties.annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"MCPToolMetadata","x-fern-type-name":"MCPToolMetadata","uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_metadata.additionalProperties","typeLabel":"MCPToolMetadata · object"},"uniqueKey":"data.oneOf.15.manifest.oneOf.0.tool_metadata","typeLabel":"object"},"auth_data":{"oneOf":[{"type":"object","title":"MCPServerHeaderAuth","description":"Authenticate using a static key or token sent as a request header. Choose shared vs individual credentials below.","required":["type","headers","auth_level"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=header","type":"string","enum":["header"],"default":"header","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.0.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"Map each header name to its value. For shared, enter the actual value. For individual, use a placeholder that will be filled in by each user (e.g. Bearer {{API_KEY}}).","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.0.headers.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.0.headers","typeLabel":"object"},"auth_level":{"description":"Level at which this authentication will be applied. Values: global (default), per_user","type":"string","enum":["global","per_user"],"default":"global","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.0.auth_level","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.0","typeLabel":"MCPServerHeaderAuth · object"},{"type":"object","title":"MCPServerOAuth2","description":"OAuth2","required":["type","grant_type","provider"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"OAuth2 authentication","type":"string","enum":["oauth2"],"default":"oauth2","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.type","typeLabel":"enum\u003cstring>"},"grant_type":{"description":"The OAuth2 grant type to use for authentication.","type":"string","enum":["authorization_code","client_credentials","token_exchange","id_jag","jwt_bearer"],"default":"authorization_code","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.grant_type","typeLabel":"enum\u003cstring>"},"provider":{"description":"Select the OAuth provider. Provider-specific configuration (e.g. Auth0 organization) is unlocked based on this value.","type":"string","enum":["custom","auth0","okta","microsoft-entra"],"default":"custom","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.provider","typeLabel":"enum\u003cstring>"},"use_organization":{"description":"When enabled, organization will be extracted from the inbound token and it will be included as the organization parameter on token endpoint requests.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.use_organization","typeLabel":"boolean"},"default_organization":{"description":"Fallback Auth0 organization when the inbound token does not include organization.","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.default_organization","typeLabel":"string"},"audience":{"description":"Okta target audience (RFC 8693 'audience'). Required when the token_exchange grant type is used with the okta provider.","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.audience","typeLabel":"string"},"issuer_uri":{"description":"Issuer URI of the authorization server the ID-JAG token is issued for. Sent as the 'audience' parameter on the ID-JAG token exchange.","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.issuer_uri","typeLabel":"string"},"authorization_url":{"description":"URL for the authorization request","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.authorization_url","typeLabel":"string"},"token_url":{"description":"The endpoint to exchange auth code for tokens.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.token_url","typeLabel":"string"},"client_id":{"description":"client ID for OAuth2 or the TrueFoundry secret FQN containing the client ID.","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.client_id","typeLabel":"string"},"client_authentication":{"description":"How the OAuth client authenticates to the token endpoint. Certificate auth is available for Microsoft Entra client_credentials and jwt_bearer (on-behalf-of).","type":"string","enum":["client_secret","certificate"],"default":"client_secret","uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.client_authentication","typeLabel":"enum\u003cstring>"},"client_secret":{"description":"Client secret or the TrueFoundry secret FQN containing the client secret for OAuth2.","type":"string","minLength":1,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.client_secret","typeLabel":"string"},"certificate_thumbprint":{"description":"Hex SHA-1 thumbprint from the Azure portal, or the TrueFoundry secret FQN containing it.","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.certificate_thumbprint","typeLabel":"string"},"private_key":{"description":"PEM private key for Microsoft Entra certificate-based client authentication, or the TrueFoundry secret FQN containing it.","type":"string","minLength":1,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.private_key","typeLabel":"string"},"registration_url":{"description":"URL for dynamic client registration (RFC 7591). If provided, client credentials will be obtained automatically using the Dynamic Client Registration (DCR) process.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.registration_url","typeLabel":"string"},"introspection_url":{"description":"URL to fetch token expiry (RFC 7662) when the provider does not return expires_in (e.g. Salesforce). Requires client_id and client_secret.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.introspection_url","typeLabel":"string"},"include_resource":{"description":"When enabled, the MCP server URL is sent as the resource parameter (RFC 8707) on both authorization and token endpoint requests.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.include_resource","typeLabel":"boolean"},"code_challenge_methods_supported":{"description":"List of supported PKCE code challenge methods (S256 only)","type":"array","items":{"type":"string","enum":["S256"],"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.code_challenge_methods_supported.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.code_challenge_methods_supported","typeLabel":"enum\u003cstring>[]"},"jwt_source":{"description":"Source of the JWT token to be used for verification.","type":"string","enum":["access_token","id_token"],"default":"access_token","uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.jwt_source","typeLabel":"enum\u003cstring>"},"scopes":{"description":"List of scopes to request from the OAuth2 provider.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.scopes.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.scopes","typeLabel":"string[]"},"additional_token_params":{"description":"Extra key/value pairs sent on every token endpoint request (e.g. Auth0 'organization').","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.additional_token_params.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1.additional_token_params","typeLabel":"object"}},"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.1","typeLabel":"MCPServerOAuth2 · object"},{"type":"object","title":"MCPServerPassthrough","description":"Authenticate using your existing TrueFoundry account (PAT or Virtual Accounts). Your credentials are automatically passed to the MCP server.","required":["type"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=passthrough","type":"string","enum":["passthrough"],"default":"passthrough","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.2","typeLabel":"MCPServerPassthrough · object"},{"type":"object","title":"MCPServerAwsSigV4Auth","description":"Sign requests to AWS Bedrock AgentCore with AWS credentials (SigV4).","required":["type","region","auth"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=aws-sigv4","type":"string","enum":["aws-sigv4"],"default":"aws-sigv4","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.3.type","typeLabel":"enum\u003cstring>"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.3.region","typeLabel":"enum\u003cstring>"},"auth":{"oneOf":[{"type":"object","title":"MCPServerAwsAccessKeyAuth","description":"Authenticate with an AWS access key pair.","required":["type","access_key_id","secret_access_key"],"x-fern-type-name":"MCPServerAwsAccessKeyAuth","properties":{"type":{"description":"+value=aws-access-key","type":"string","enum":["aws-access-key"],"default":"aws-access-key","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.3.auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"access_key_id":{"description":"AWS access key ID. Prefer a tfy-secret reference.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.3.auth.oneOf.0.access_key_id","typeLabel":"string"},"secret_access_key":{"description":"AWS secret access key. Prefer a tfy-secret reference.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.3.auth.oneOf.0.secret_access_key","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.3.auth.oneOf.0","typeLabel":"MCPServerAwsAccessKeyAuth · object"},{"type":"object","title":"MCPServerAwsAssumeRoleAuth","description":"Authenticate by assuming an IAM role (SigV4).","required":["type","assumed_role_arn"],"x-fern-type-name":"MCPServerAwsAssumeRoleAuth","properties":{"type":{"description":"+value=aws-assumed-role","type":"string","enum":["aws-assumed-role"],"default":"aws-assumed-role","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.3.auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"assumed_role_arn":{"description":"ARN of the role you want to assume. Prefer a tfy-secret reference.","type":"string","pattern":"^(arn:(aws|aws-us-gov|aws-cn):iam::[0-9]{12}:role(/[\\w+=,.@-]+)+|tfy-secret:\\/\\/.+:.+:.+)$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.3.auth.oneOf.1.assumed_role_arn","typeLabel":"string"},"external_id":{"description":"Optional external ID to use when assuming the role. This provides an added layer of security by ensuring only parties with the correct external ID can assume the role.","type":"string","uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.3.auth.oneOf.1.external_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.3.auth.oneOf.1","typeLabel":"MCPServerAwsAssumeRoleAuth · object"}],"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.3.auth","typeLabel":"MCPServerAwsAccessKeyAuth · object | MCPServerAwsAssumeRoleAuth · object"}},"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data.oneOf.3","typeLabel":"MCPServerAwsSigV4Auth · object"}],"uniqueKey":"data.oneOf.15.manifest.oneOf.0.auth_data","typeLabel":"MCPServerHeaderAuth · object | MCPServerOAuth2 · object | MCPServerPassthrough · object | MCPServerAwsSigV4Auth · object"},"collaborators":{"description":"Users and Teams that have access to this MCP Server","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"data.oneOf.15.manifest.oneOf.0.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"data.oneOf.15.manifest.oneOf.0.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"data.oneOf.15.manifest.oneOf.0.ownedBy","typeLabel":"OwnedBy · object"},"additional_headers":{"description":"Additional HTTP headers sent on each request to the MCP server. If the same header is set in both `additional_headers` and `auth_data`, the `auth_data` value wins.","type":"object","uniqueKey":"data.oneOf.15.manifest.oneOf.0.additional_headers","typeLabel":"object"},"forwarded_headers":{"description":"Extra header names copied from the client request to the upstream MCP server. Content-Type, Accept, Last-Event-ID, and every header starting with mcp- (Mcp-Session-Id, Mcp-Protocol-Version, Mcp-Param-*) are already forwarded automatically.","type":"array","items":{"type":"string","pattern":"^[!#$%\u0026'+\\-.^_`|~0-9A-Za-z]+$","uniqueKey":"data.oneOf.15.manifest.oneOf.0.forwarded_headers.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.15.manifest.oneOf.0.forwarded_headers","typeLabel":"string[]"},"tags":{"description":"Key-value pairs to categorize this MCP Server (e.g., by owner or environment).","type":"object","uniqueKey":"data.oneOf.15.manifest.oneOf.0.tags","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.0","typeLabel":"RemoteMCPServerManifest · object"},{"type":"object","title":"VirtualMCPServerManifest","description":"User-supplied MCP server configuration. Sensitive fields inside `auth_data` (and other manifest secrets) are redacted for callers who do not have `MANAGE_MCP_SERVER` permission on this server.","required":["type","name","description","servers"],"x-fern-type-name":"MCPServerManifest","properties":{"type":{"description":"+value=mcp-server/virtual","type":"string","enum":["mcp-server/virtual"],"default":"mcp-server/virtual","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.1.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the Virtual MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,71}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.1.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this Virtual MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.1.description","typeLabel":"string"},"servers":{"description":"List of source MCP servers to include in this virtual server.","type":"array","items":{"description":"MCP Server Source","type":"object","required":["name"],"properties":{"name":{"description":"Name of the MCP server","type":"string","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.1.servers.items.[INDEX].name","typeLabel":"string"},"enabled_tools":{"description":"List of tools to enable from this source server.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.15.manifest.oneOf.1.servers.items.[INDEX].enabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.15.manifest.oneOf.1.servers.items.[INDEX].enabled_tools","typeLabel":"string[]"},"tool_slug":{"description":"Suffix appended to this server's tool names. Defaults to an auto-generated suffix.","type":"string","pattern":"^[a-z0-9]([a-z0-9-]{0,14}[a-z0-9])?$","uniqueKey":"data.oneOf.15.manifest.oneOf.1.servers.items.[INDEX].tool_slug","typeLabel":"string"}},"title":"McpServerSource","x-fern-type-name":"McpServerSource","uniqueKey":"data.oneOf.15.manifest.oneOf.1.servers.items.[INDEX]","typeLabel":"McpServerSource · object"},"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.1.servers","typeLabel":"McpServerSource · object[]"},"display_name":{"description":"A human-readable label for the Virtual MCP Server in the UI. If omitted, the server name is shown.","type":"string","minLength":1,"maxLength":128,"uniqueKey":"data.oneOf.15.manifest.oneOf.1.display_name","typeLabel":"string"},"best_effort_mode":{"description":"When enabled, the virtual MCP server continues with available source servers even if some servers fail.","type":"boolean","default":false,"uniqueKey":"data.oneOf.15.manifest.oneOf.1.best_effort_mode","typeLabel":"boolean"},"collaborators":{"description":"Users and Teams that have access to this Virtual MCP Server","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.1.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.1.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"data.oneOf.15.manifest.oneOf.1.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"data.oneOf.15.manifest.oneOf.1.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.1.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"data.oneOf.15.manifest.oneOf.1.ownedBy","typeLabel":"OwnedBy · object"},"tags":{"description":"Key-value pairs to categorize this Virtual MCP Server (e.g., by owner or environment).","type":"object","uniqueKey":"data.oneOf.15.manifest.oneOf.1.tags","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.1","typeLabel":"VirtualMCPServerManifest · object"},{"type":"object","title":"OpenAPIMCPServerManifest","description":"User-supplied MCP server configuration. Sensitive fields inside `auth_data` (and other manifest secrets) are redacted for callers who do not have `MANAGE_MCP_SERVER` permission on this server.","required":["type","name","description","url","openapi_spec_source"],"x-fern-type-name":"MCPServerManifest","properties":{"type":{"description":"+value=mcp-server/openapi","type":"string","enum":["mcp-server/openapi"],"default":"mcp-server/openapi","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the OpenAPI MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,71}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this OpenAPI MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.description","typeLabel":"string"},"url":{"description":"The base URL where API requests will be sent. This should be the root endpoint of your API server, without any path suffix.","type":"string","pattern":"^https?:\\/\\/[^\\s]+$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.url","typeLabel":"string"},"openapi_spec_source":{"oneOf":[{"type":"object","title":"RemoteSpecSource","description":"Fetch the OpenAPI specification from a remote HTTP/HTTPS endpoint.","required":["type","url"],"x-fern-type-name":"OpenAPISpecSource","properties":{"type":{"description":"+value=remote","type":"string","enum":["remote"],"default":"remote","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.openapi_spec_source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"url":{"description":"URL to fetch the OpenAPI specification (JSON or YAML format).","type":"string","pattern":"^https?:\\/\\/[^\\s]+$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.openapi_spec_source.oneOf.0.url","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.openapi_spec_source.oneOf.0","typeLabel":"RemoteSpecSource · object"},{"type":"object","title":"UploadSpecSource","description":"Fetch the stored/uploaded OpenAPI specification.","required":["type","url"],"x-fern-type-name":"OpenAPISpecSource","properties":{"type":{"description":"+value=upload","type":"string","enum":["upload"],"default":"upload","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.openapi_spec_source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"url":{"description":"Cloud storage path where the OpenAPI specification is stored (S3, GCS, or Azure Blob).","type":"string","pattern":"^(s3://[^/]+|gs://[^/]+|https://[^.]+\\.blob\\.core\\.windows\\.net/[^/]+)/tfy-openapi-specs/(?:\\d{4}-\\d{2}/|[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/)[a-f0-9-]+\\.json$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.openapi_spec_source.oneOf.1.url","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.openapi_spec_source.oneOf.1","typeLabel":"UploadSpecSource · object"},{"type":"object","title":"InlineSpecSource","description":"Inline your OpenAPI specification directly. The spec will be stored securely.","required":["type","openapi_spec"],"x-fern-type-name":"OpenAPISpecSource","properties":{"type":{"description":"+value=inline","type":"string","enum":["inline"],"default":"inline","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.openapi_spec_source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"openapi_spec":{"oneOf":[{"type":"object","description":"The OpenAPI specification as a JSON object or a JSON/YAML string.","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.openapi_spec_source.oneOf.2.openapi_spec.oneOf.0","typeLabel":"object"},{"type":"string","description":"The OpenAPI specification as a JSON object or a JSON/YAML string.","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.openapi_spec_source.oneOf.2.openapi_spec.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.openapi_spec_source.oneOf.2.openapi_spec","typeLabel":"object | string"}},"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.openapi_spec_source.oneOf.2","typeLabel":"InlineSpecSource · object"}],"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.openapi_spec_source","typeLabel":"RemoteSpecSource · object | UploadSpecSource · object | InlineSpecSource · object"},"display_name":{"description":"A human-readable label for the OpenAPI MCP Server in the UI. If omitted, the server name is shown.","type":"string","minLength":1,"maxLength":128,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.display_name","typeLabel":"string"},"tls_settings":{"description":"Configure TLS settings for secure connections with custom CA certificates.","type":"object","required":["reject_unauthorized"],"properties":{"reject_unauthorized":{"description":"When set to true, it will reject any connection which is not authorized with the list of supplied CAs.","type":"boolean","default":true,"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.tls_settings.reject_unauthorized","typeLabel":"boolean"},"ca_cert":{"description":"Add custom CA certificates to use for TLS verification.","type":"string","uniqueKey":"data.oneOf.15.manifest.oneOf.2.tls_settings.ca_cert","typeLabel":"string"}},"title":"CustomTLSSettings","x-fern-type-name":"CustomTLSSettings","uniqueKey":"data.oneOf.15.manifest.oneOf.2.tls_settings","typeLabel":"CustomTLSSettings · object"},"enable_all_tools":{"description":"When enabled, all tools from the OpenAPI spec will be available (up to 30 tools). Disable to select specific tools.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.2.enable_all_tools","typeLabel":"boolean"},"tool_settings":{"description":"The tools to customize from the OpenAPI Server.","type":"array","items":{"description":"OpenAPI MCP Tool Setting","type":"object","required":["method","path","name","description"],"properties":{"method":{"description":"The HTTP method for this endpoint.","type":"string","enum":["get","post","put","patch","delete","head"],"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.tool_settings.items.[INDEX].method","typeLabel":"enum\u003cstring>"},"path":{"description":"The API endpoint path (e.g., /users/{id}).","type":"string","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.tool_settings.items.[INDEX].path","typeLabel":"string"},"name":{"description":"The unique name of this tool, derived from OpenAPI operationId.","type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.tool_settings.items.[INDEX].name","typeLabel":"string"},"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.tool_settings.items.[INDEX].description","typeLabel":"string"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.2.tool_settings.items.[INDEX].annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.2.tool_settings.items.[INDEX].annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"data.oneOf.15.manifest.oneOf.2.tool_settings.items.[INDEX].annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"OpenAPIMCPToolSetting","x-fern-type-name":"OpenAPIMCPToolSetting","uniqueKey":"data.oneOf.15.manifest.oneOf.2.tool_settings.items.[INDEX]","typeLabel":"OpenAPIMCPToolSetting · object"},"uniqueKey":"data.oneOf.15.manifest.oneOf.2.tool_settings","typeLabel":"OpenAPIMCPToolSetting · object[]"},"auth_data":{"oneOf":[{"type":"object","title":"MCPServerHeaderAuth","description":"Authenticate using a static key or token sent as a request header. Choose shared vs individual credentials below.","required":["type","headers","auth_level"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=header","type":"string","enum":["header"],"default":"header","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.0.type","typeLabel":"enum\u003cstring>"},"headers":{"description":"Map each header name to its value. For shared, enter the actual value. For individual, use a placeholder that will be filled in by each user (e.g. Bearer {{API_KEY}}).","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.0.headers.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.0.headers","typeLabel":"object"},"auth_level":{"description":"Level at which this authentication will be applied. Values: global (default), per_user","type":"string","enum":["global","per_user"],"default":"global","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.0.auth_level","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.0","typeLabel":"MCPServerHeaderAuth · object"},{"type":"object","title":"MCPServerOAuth2","description":"OAuth2","required":["type","grant_type","provider"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"OAuth2 authentication","type":"string","enum":["oauth2"],"default":"oauth2","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.type","typeLabel":"enum\u003cstring>"},"grant_type":{"description":"The OAuth2 grant type to use for authentication.","type":"string","enum":["authorization_code","client_credentials","token_exchange","id_jag","jwt_bearer"],"default":"authorization_code","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.grant_type","typeLabel":"enum\u003cstring>"},"provider":{"description":"Select the OAuth provider. Provider-specific configuration (e.g. Auth0 organization) is unlocked based on this value.","type":"string","enum":["custom","auth0","okta","microsoft-entra"],"default":"custom","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.provider","typeLabel":"enum\u003cstring>"},"use_organization":{"description":"When enabled, organization will be extracted from the inbound token and it will be included as the organization parameter on token endpoint requests.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.use_organization","typeLabel":"boolean"},"default_organization":{"description":"Fallback Auth0 organization when the inbound token does not include organization.","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.default_organization","typeLabel":"string"},"audience":{"description":"Okta target audience (RFC 8693 'audience'). Required when the token_exchange grant type is used with the okta provider.","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.audience","typeLabel":"string"},"issuer_uri":{"description":"Issuer URI of the authorization server the ID-JAG token is issued for. Sent as the 'audience' parameter on the ID-JAG token exchange.","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.issuer_uri","typeLabel":"string"},"authorization_url":{"description":"URL for the authorization request","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.authorization_url","typeLabel":"string"},"token_url":{"description":"The endpoint to exchange auth code for tokens.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.token_url","typeLabel":"string"},"client_id":{"description":"client ID for OAuth2 or the TrueFoundry secret FQN containing the client ID.","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.client_id","typeLabel":"string"},"client_authentication":{"description":"How the OAuth client authenticates to the token endpoint. Certificate auth is available for Microsoft Entra client_credentials and jwt_bearer (on-behalf-of).","type":"string","enum":["client_secret","certificate"],"default":"client_secret","uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.client_authentication","typeLabel":"enum\u003cstring>"},"client_secret":{"description":"Client secret or the TrueFoundry secret FQN containing the client secret for OAuth2.","type":"string","minLength":1,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.client_secret","typeLabel":"string"},"certificate_thumbprint":{"description":"Hex SHA-1 thumbprint from the Azure portal, or the TrueFoundry secret FQN containing it.","type":"string","pattern":"^\\S+$","uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.certificate_thumbprint","typeLabel":"string"},"private_key":{"description":"PEM private key for Microsoft Entra certificate-based client authentication, or the TrueFoundry secret FQN containing it.","type":"string","minLength":1,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.private_key","typeLabel":"string"},"registration_url":{"description":"URL for dynamic client registration (RFC 7591). If provided, client credentials will be obtained automatically using the Dynamic Client Registration (DCR) process.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.registration_url","typeLabel":"string"},"introspection_url":{"description":"URL to fetch token expiry (RFC 7662) when the provider does not return expires_in (e.g. Salesforce). Requires client_id and client_secret.","type":"string","pattern":"^https:\\/\\/(([a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,63})(:[0-9]{1,5})?(\\/[^\\s]*)?$","uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.introspection_url","typeLabel":"string"},"include_resource":{"description":"When enabled, the MCP server URL is sent as the resource parameter (RFC 8707) on both authorization and token endpoint requests.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.include_resource","typeLabel":"boolean"},"code_challenge_methods_supported":{"description":"List of supported PKCE code challenge methods (S256 only)","type":"array","items":{"type":"string","enum":["S256"],"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.code_challenge_methods_supported.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.code_challenge_methods_supported","typeLabel":"enum\u003cstring>[]"},"jwt_source":{"description":"Source of the JWT token to be used for verification.","type":"string","enum":["access_token","id_token"],"default":"access_token","uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.jwt_source","typeLabel":"enum\u003cstring>"},"scopes":{"description":"List of scopes to request from the OAuth2 provider.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.scopes.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.scopes","typeLabel":"string[]"},"additional_token_params":{"description":"Extra key/value pairs sent on every token endpoint request (e.g. Auth0 'organization').","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.additional_token_params.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1.additional_token_params","typeLabel":"object"}},"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.1","typeLabel":"MCPServerOAuth2 · object"},{"type":"object","title":"MCPServerPassthrough","description":"Authenticate using your existing TrueFoundry account (PAT or Virtual Accounts). Your credentials are automatically passed to the MCP server.","required":["type"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=passthrough","type":"string","enum":["passthrough"],"default":"passthrough","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.2","typeLabel":"MCPServerPassthrough · object"},{"type":"object","title":"MCPServerAwsSigV4Auth","description":"Sign requests to AWS Bedrock AgentCore with AWS credentials (SigV4).","required":["type","region","auth"],"x-fern-type-name":"MCPServerAuth","properties":{"type":{"description":"+value=aws-sigv4","type":"string","enum":["aws-sigv4"],"default":"aws-sigv4","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.3.type","typeLabel":"enum\u003cstring>"},"region":{"type":"string","enum":["af-south-1","ap-east-1","ap-northeast-1","ap-northeast-2","ap-northeast-3","ap-south-1","ap-south-2","ap-southeast-1","ap-southeast-2","ap-southeast-3","ap-southeast-4","ap-southeast-5","ap-southeast-7","ca-central-1","ca-west-1","cn-north-1","cn-northwest-1","eu-central-1","eu-central-2","eu-north-1","eu-south-1","eu-south-2","eu-west-1","eu-west-2","eu-west-3","il-central-1","me-central-1","me-south-1","mx-central-1","sa-east-1","us-east-1","us-east-2","us-gov-east-1","us-gov-west-1","us-west-1","us-west-2","ap-southeast-6","ap-east-2"],"title":"AWSRegion","x-fern-type-name":"AWSRegion","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.3.region","typeLabel":"enum\u003cstring>"},"auth":{"oneOf":[{"type":"object","title":"MCPServerAwsAccessKeyAuth","description":"Authenticate with an AWS access key pair.","required":["type","access_key_id","secret_access_key"],"x-fern-type-name":"MCPServerAwsAccessKeyAuth","properties":{"type":{"description":"+value=aws-access-key","type":"string","enum":["aws-access-key"],"default":"aws-access-key","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.3.auth.oneOf.0.type","typeLabel":"enum\u003cstring>"},"access_key_id":{"description":"AWS access key ID. Prefer a tfy-secret reference.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.3.auth.oneOf.0.access_key_id","typeLabel":"string"},"secret_access_key":{"description":"AWS secret access key. Prefer a tfy-secret reference.","type":"string","pattern":"^\\S+$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.3.auth.oneOf.0.secret_access_key","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.3.auth.oneOf.0","typeLabel":"MCPServerAwsAccessKeyAuth · object"},{"type":"object","title":"MCPServerAwsAssumeRoleAuth","description":"Authenticate by assuming an IAM role (SigV4).","required":["type","assumed_role_arn"],"x-fern-type-name":"MCPServerAwsAssumeRoleAuth","properties":{"type":{"description":"+value=aws-assumed-role","type":"string","enum":["aws-assumed-role"],"default":"aws-assumed-role","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.3.auth.oneOf.1.type","typeLabel":"enum\u003cstring>"},"assumed_role_arn":{"description":"ARN of the role you want to assume. Prefer a tfy-secret reference.","type":"string","pattern":"^(arn:(aws|aws-us-gov|aws-cn):iam::[0-9]{12}:role(/[\\w+=,.@-]+)+|tfy-secret:\\/\\/.+:.+:.+)$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.3.auth.oneOf.1.assumed_role_arn","typeLabel":"string"},"external_id":{"description":"Optional external ID to use when assuming the role. This provides an added layer of security by ensuring only parties with the correct external ID can assume the role.","type":"string","uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.3.auth.oneOf.1.external_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.3.auth.oneOf.1","typeLabel":"MCPServerAwsAssumeRoleAuth · object"}],"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.3.auth","typeLabel":"MCPServerAwsAccessKeyAuth · object | MCPServerAwsAssumeRoleAuth · object"}},"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data.oneOf.3","typeLabel":"MCPServerAwsSigV4Auth · object"}],"uniqueKey":"data.oneOf.15.manifest.oneOf.2.auth_data","typeLabel":"MCPServerHeaderAuth · object | MCPServerOAuth2 · object | MCPServerPassthrough · object | MCPServerAwsSigV4Auth · object"},"collaborators":{"description":"Users and Teams that have access to this OpenAPI Server","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"data.oneOf.15.manifest.oneOf.2.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"data.oneOf.15.manifest.oneOf.2.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"data.oneOf.15.manifest.oneOf.2.ownedBy","typeLabel":"OwnedBy · object"},"additional_headers":{"description":"Additional HTTP headers sent on each request to the upstream OpenAPI server. If the same header is set in both `additional_headers` and `auth_data`, the `auth_data` value wins.","type":"object","uniqueKey":"data.oneOf.15.manifest.oneOf.2.additional_headers","typeLabel":"object"},"forwarded_headers":{"description":"Extra header names copied from the client request to the upstream OpenAPI server. Content-Type, Accept, Last-Event-ID, and every header starting with mcp- (Mcp-Session-Id, Mcp-Protocol-Version, Mcp-Param-*) are already forwarded automatically.","type":"array","items":{"type":"string","pattern":"^[!#$%\u0026'+\\-.^_`|~0-9A-Za-z]+$","uniqueKey":"data.oneOf.15.manifest.oneOf.2.forwarded_headers.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.15.manifest.oneOf.2.forwarded_headers","typeLabel":"string[]"},"tags":{"description":"Key-value pairs to categorize this OpenAPI MCP Server (e.g., by owner or environment).","type":"object","uniqueKey":"data.oneOf.15.manifest.oneOf.2.tags","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.2","typeLabel":"OpenAPIMCPServerManifest · object"},{"type":"object","title":"StdioMCPServerManifest","description":"User-supplied MCP server configuration. Sensitive fields inside `auth_data` (and other manifest secrets) are redacted for callers who do not have `MANAGE_MCP_SERVER` permission on this server.","required":["name","description","type","command"],"x-fern-type-name":"MCPServerManifest","properties":{"name":{"description":"The name of the MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,71}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.3.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.3.description","typeLabel":"string"},"type":{"description":"+value=mcp-server/stdio\n+sort=400","type":"string","enum":["mcp-server/stdio"],"default":"mcp-server/stdio","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.3.type","typeLabel":"enum\u003cstring>"},"command":{"description":"Executable to run for the stdio MCP server process.","type":"string","minLength":1,"default":"npx","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.3.command","typeLabel":"string"},"display_name":{"description":"A human-readable label for the MCP Server in the UI. If omitted, the server name is shown.","type":"string","minLength":1,"maxLength":128,"uniqueKey":"data.oneOf.15.manifest.oneOf.3.display_name","typeLabel":"string"},"collaborators":{"description":"Users and Teams that have access to this MCP Server","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.3.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.3.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"data.oneOf.15.manifest.oneOf.3.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"data.oneOf.15.manifest.oneOf.3.collaborators","typeLabel":"Collaborator · object[]"},"args":{"description":"Arguments passed to the stdio MCP server command.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.15.manifest.oneOf.3.args.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.15.manifest.oneOf.3.args","typeLabel":"string[]"},"tool_settings":{"description":"Customize tool descriptions or enable/disable specific tools from the MCP Server.","type":"array","items":{"description":"MCP Tool Setting","type":"object","required":["name"],"properties":{"name":{"description":"The unique name of the tool.","type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_settings.items.[INDEX].name","typeLabel":"string"},"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_settings.items.[INDEX].description","typeLabel":"string"},"disabled":{"description":"Allows to disable the tool.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_settings.items.[INDEX].disabled","typeLabel":"boolean"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_settings.items.[INDEX].annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_settings.items.[INDEX].annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_settings.items.[INDEX].annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"MCPToolSetting","x-fern-type-name":"MCPToolSetting","uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_settings.items.[INDEX]","typeLabel":"MCPToolSetting · object"},"uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_settings","typeLabel":"MCPToolSetting · object[]"},"tool_policy":{"description":"Enable/disable policy for MCP tools.","type":"object","required":["enable_tools_by_default"],"properties":{"enable_tools_by_default":{"description":"When true, all tools are exposed except those in disabled_tools. When false, only tools listed in enabled_tools are exposed.","type":"boolean","enum":[true,false],"default":true,"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_policy.enable_tools_by_default","typeLabel":"enum\u003cboolean>"},"disabled_tools":{"description":"Tool names to disable when enable_tools_by_default is true.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_policy.disabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_policy.disabled_tools","typeLabel":"string[]"},"enabled_tools":{"description":"Tool names to enable when enable_tools_by_default is false.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_policy.enabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_policy.enabled_tools","typeLabel":"string[]"}},"title":"MCPToolPolicy","x-fern-type-name":"MCPToolPolicy","uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_policy","typeLabel":"MCPToolPolicy · object"},"tool_metadata":{"description":"Per-tool description and annotation overrides keyed by tool name.","type":"object","additionalProperties":{"description":"Description and annotation overrides for a single MCP tool.","type":"object","properties":{"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_metadata.additionalProperties.description","typeLabel":"string"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_metadata.additionalProperties.annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_metadata.additionalProperties.annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_metadata.additionalProperties.annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"MCPToolMetadata","x-fern-type-name":"MCPToolMetadata","uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_metadata.additionalProperties","typeLabel":"MCPToolMetadata · object"},"uniqueKey":"data.oneOf.15.manifest.oneOf.3.tool_metadata","typeLabel":"object"},"auth_data":{"description":"Environment variable authentication for stdio MCP. For individual credentials, use one or more {{placeholder}} names in values (same rules as header auth).","type":"object","required":["type","env"],"properties":{"type":{"description":"+value=env","type":"string","enum":["env"],"default":"env","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.3.auth_data.type","typeLabel":"enum\u003cstring>"},"env":{"description":"Map each env variable to its value. For shared, enter the actual value. For individual, use a placeholder that will be filled in by each user (e.g. API_KEY {{API_KEY}}).","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.15.manifest.oneOf.3.auth_data.env.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.3.auth_data.env","typeLabel":"object"},"auth_level":{"description":"Level at which this authentication will be applied. Values: global (default), per_user","type":"string","enum":["global","per_user"],"default":"global","uniqueKey":"data.oneOf.15.manifest.oneOf.3.auth_data.auth_level","typeLabel":"enum\u003cstring>"}},"title":"MCPServerEnvAuth","x-fern-type-name":"MCPServerEnvAuth","uniqueKey":"data.oneOf.15.manifest.oneOf.3.auth_data","typeLabel":"MCPServerEnvAuth · object"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.3.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"data.oneOf.15.manifest.oneOf.3.ownedBy","typeLabel":"OwnedBy · object"},"tags":{"description":"Key-value pairs to categorize this MCP Server (e.g., by owner or environment).","type":"object","uniqueKey":"data.oneOf.15.manifest.oneOf.3.tags","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.3","typeLabel":"StdioMCPServerManifest · object"},{"type":"object","title":"TfyManagedMCPServerManifest","description":"User-supplied MCP server configuration. Sensitive fields inside `auth_data` (and other manifest secrets) are redacted for callers who do not have `MANAGE_MCP_SERVER` permission on this server.","required":["type","name","description","server_identifier"],"x-fern-type-name":"MCPServerManifest","properties":{"type":{"description":"+value=mcp-server/tfy-managed","type":"string","enum":["mcp-server/tfy-managed"],"default":"mcp-server/tfy-managed","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the MCP Server.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,71}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.4.name","typeLabel":"string"},"description":{"description":"Provide a brief description of the purpose of this MCP Server.","type":"string","minLength":1,"maxLength":1000,"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.4.description","typeLabel":"string"},"server_identifier":{"description":"Catalog slug of the TrueFoundry-managed MCP server to connect to. Used to resolve the hosted endpoint and available tools.","type":"string","pattern":"^[a-z][a-z0-9\\-]{1,71}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.4.server_identifier","typeLabel":"string"},"display_name":{"description":"A human-readable label for the MCP Server in the UI. If omitted, the server name is shown.","type":"string","minLength":1,"maxLength":128,"uniqueKey":"data.oneOf.15.manifest.oneOf.4.display_name","typeLabel":"string"},"tool_settings":{"description":"Customize tool descriptions or enable/disable specific tools from the MCP Server.","type":"array","items":{"description":"MCP Tool Setting","type":"object","required":["name"],"properties":{"name":{"description":"The unique name of the tool.","type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_settings.items.[INDEX].name","typeLabel":"string"},"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_settings.items.[INDEX].description","typeLabel":"string"},"disabled":{"description":"Allows to disable the tool.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_settings.items.[INDEX].disabled","typeLabel":"boolean"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_settings.items.[INDEX].annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_settings.items.[INDEX].annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_settings.items.[INDEX].annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"MCPToolSetting","x-fern-type-name":"MCPToolSetting","uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_settings.items.[INDEX]","typeLabel":"MCPToolSetting · object"},"uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_settings","typeLabel":"MCPToolSetting · object[]"},"tool_policy":{"description":"Enable/disable policy for MCP tools.","type":"object","required":["enable_tools_by_default"],"properties":{"enable_tools_by_default":{"description":"When true, all tools are exposed except those in disabled_tools. When false, only tools listed in enabled_tools are exposed.","type":"boolean","enum":[true,false],"default":true,"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_policy.enable_tools_by_default","typeLabel":"enum\u003cboolean>"},"disabled_tools":{"description":"Tool names to disable when enable_tools_by_default is true.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_policy.disabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_policy.disabled_tools","typeLabel":"string[]"},"enabled_tools":{"description":"Tool names to enable when enable_tools_by_default is false.","type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_policy.enabled_tools.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_policy.enabled_tools","typeLabel":"string[]"}},"title":"MCPToolPolicy","x-fern-type-name":"MCPToolPolicy","uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_policy","typeLabel":"MCPToolPolicy · object"},"tool_metadata":{"description":"Per-tool description and annotation overrides keyed by tool name.","type":"object","additionalProperties":{"description":"Description and annotation overrides for a single MCP tool.","type":"object","properties":{"description":{"description":"Describe what this tool does. This helps AI models understand when to use it.","type":"string","minLength":1,"maxLength":20000,"uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_metadata.additionalProperties.description","typeLabel":"string"},"annotations":{"description":"MCP Tool Annotations","type":"object","properties":{"readOnlyHint":{"description":"Indicates the tool only reads data and does not modify anything.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_metadata.additionalProperties.annotations.readOnlyHint","typeLabel":"boolean"},"destructiveHint":{"description":"Indicates the tool may perform destructive updates.","type":"boolean","uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_metadata.additionalProperties.annotations.destructiveHint","typeLabel":"boolean"}},"title":"MCPToolAnnotations","x-fern-type-name":"MCPToolAnnotations","uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_metadata.additionalProperties.annotations","typeLabel":"MCPToolAnnotations · object"}},"title":"MCPToolMetadata","x-fern-type-name":"MCPToolMetadata","uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_metadata.additionalProperties","typeLabel":"MCPToolMetadata · object"},"uniqueKey":"data.oneOf.15.manifest.oneOf.4.tool_metadata","typeLabel":"object"},"collaborators":{"description":"Users and Teams that have access to this MCP Server","type":"array","items":{"type":"object","required":["subject","role_id"],"properties":{"subject":{"description":"Fully Qualified Name of the subject. eg: user:email or team:teamname","type":"string","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.4.collaborators.items.[INDEX].subject","typeLabel":"string"},"role_id":{"description":"Role ID for the resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.4.collaborators.items.[INDEX].role_id","typeLabel":"string"}},"title":"Collaborator","x-fern-type-name":"Collaborator","uniqueKey":"data.oneOf.15.manifest.oneOf.4.collaborators.items.[INDEX]","typeLabel":"Collaborator · object"},"uniqueKey":"data.oneOf.15.manifest.oneOf.4.collaborators","typeLabel":"Collaborator · object[]"},"ownedBy":{"description":"Names of the owners that own this resource","type":"object","required":["account"],"properties":{"account":{"description":"The name of the account that owns this resource","type":"string","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.4.ownedBy.account","typeLabel":"string"}},"title":"OwnedBy","x-fern-type-name":"OwnedBy","uniqueKey":"data.oneOf.15.manifest.oneOf.4.ownedBy","typeLabel":"OwnedBy · object"},"auth_data":{"description":"TfyManaged OAuth2","type":"object","required":["type","grant_type"],"properties":{"type":{"description":"OAuth2 authentication","type":"string","enum":["oauth2"],"default":"oauth2","isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.4.auth_data.type","typeLabel":"enum\u003cstring>"},"grant_type":{"description":"The OAuth2 grant type to use for authentication.","type":"string","enum":["authorization_code"],"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.4.auth_data.grant_type","typeLabel":"enum\u003cstring>"}},"title":"TfyManagedMCPServerOAuth","x-fern-type-name":"TfyManagedMCPServerOAuth","uniqueKey":"data.oneOf.15.manifest.oneOf.4.auth_data","typeLabel":"TfyManagedMCPServerOAuth · object"},"tags":{"description":"Key-value pairs to categorize this MCP Server (e.g., by owner or environment).","type":"object","uniqueKey":"data.oneOf.15.manifest.oneOf.4.tags","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data.oneOf.15.manifest.oneOf.4","typeLabel":"TfyManagedMCPServerManifest · object"}],"isRequired":true,"uniqueKey":"data.oneOf.15.manifest","typeLabel":"RemoteMCPServerManifest · object | VirtualMCPServerManifest · object | OpenAPIMCPServerManifest · object | StdioMCPServerManifest · object | TfyManagedMCPServerManifest · object"},"createdBySubject":{"type":"object","title":"Subject","description":"Principal (user or service account) that originally created this MCP server.","required":["subjectId","subjectType"],"x-fern-type-name":"Subject","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.15.createdBySubject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.15.createdBySubject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.15.createdBySubject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.15.createdBySubject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.createdBySubject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.15.createdBySubject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.15.createdBySubject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.createdBySubject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.15.createdBySubject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.15.createdBySubject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.createdBySubject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.15.createdBySubject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.15.createdBySubject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.createdBySubject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.15.createdBySubject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.15.createdBySubject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.createdBySubject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.oneOf.15.createdBySubject","typeLabel":"Subject · object"},"id":{"oneOf":[{"type":"string","description":"Identifier for this MCP server.","uniqueKey":"data.oneOf.15.id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Identifier for this MCP server.","uniqueKey":"data.oneOf.15.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.id","typeLabel":"string | null"},"createdAt":{"oneOf":[{"format":"date-time","type":"string","description":"MCP server creation timestamp.","uniqueKey":"data.oneOf.15.createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"MCP server creation timestamp.","uniqueKey":"data.oneOf.15.createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.createdAt","typeLabel":"string\u003cdate-time> | null"},"updatedAt":{"oneOf":[{"format":"date-time","type":"string","description":"MCP server last-update timestamp.","uniqueKey":"data.oneOf.15.updatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"MCP server last-update timestamp.","uniqueKey":"data.oneOf.15.updatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.updatedAt","typeLabel":"string\u003cdate-time> | null"},"proxyUrl":{"oneOf":[{"type":"string","description":"Proxy URL template for accessing the MCP server. Contains a `{{mcpProxyBaseURL}}` placeholder that callers must substitute with the actual gateway base URL before use.","uniqueKey":"data.oneOf.15.proxyUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"Proxy URL template for accessing the MCP server. Contains a `{{mcpProxyBaseURL}}` placeholder that callers must substitute with the actual gateway base URL before use.","uniqueKey":"data.oneOf.15.proxyUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.proxyUrl","typeLabel":"string | null"},"isAuthOverrideSupported":{"oneOf":[{"type":"boolean","description":"Whether the MCP server accepts per-subject auth overrides via `PUT /mcp/{mcpServerId}/auth`.","uniqueKey":"data.oneOf.15.isAuthOverrideSupported.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether the MCP server accepts per-subject auth overrides via `PUT /mcp/{mcpServerId}/auth`.","uniqueKey":"data.oneOf.15.isAuthOverrideSupported.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.isAuthOverrideSupported","typeLabel":"boolean | null"},"authStatus":{"oneOf":[{"type":"object","title":"MCPServerAuthStatusAuthenticated","description":"Caller's stored per-subject auth status for this MCP server, present on list responses. Same shape as `GET /mcp/{mcpServerId}/auth/status`, without refreshing expired tokens.","required":["status"],"x-fern-type-name":"MCPServerAuthStatusAuthenticated","properties":{"status":{"type":"string","enum":["authenticated","authentication_required","authentication_not_required"],"isRequired":true,"uniqueKey":"data.oneOf.15.authStatus.oneOf.0.status","typeLabel":"enum\u003cstring>"},"method":{"oneOf":[{"type":"string","enum":["oauth","auth-override"],"description":"Authentication source that satisfied this status.","uniqueKey":"data.oneOf.15.authStatus.oneOf.0.method.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["oauth","auth-override"],"description":"Authentication source that satisfied this status.","uniqueKey":"data.oneOf.15.authStatus.oneOf.0.method.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.authStatus.oneOf.0.method","typeLabel":"enum\u003cstring> | null"},"expiresAt":{"oneOf":[{"type":"string","description":"When the access token expires (ISO 8601 UTC). Only for OAuth2 credentials.","example":"2026-10-01T12:40:00.000Z","uniqueKey":"data.oneOf.15.authStatus.oneOf.0.expiresAt.oneOf.0","typeLabel":"string"},{"type":"null","description":"When the access token expires (ISO 8601 UTC). Only for OAuth2 credentials.","example":"2026-10-01T12:40:00.000Z","uniqueKey":"data.oneOf.15.authStatus.oneOf.0.expiresAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.authStatus.oneOf.0.expiresAt","typeLabel":"string | null"},"isRefreshable":{"oneOf":[{"type":"boolean","description":"Whether a new access token can be obtained without the user re-authorizing. Only for OAuth2 credentials.","example":true,"uniqueKey":"data.oneOf.15.authStatus.oneOf.0.isRefreshable.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether a new access token can be obtained without the user re-authorizing. Only for OAuth2 credentials.","example":true,"uniqueKey":"data.oneOf.15.authStatus.oneOf.0.isRefreshable.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.authStatus.oneOf.0.isRefreshable","typeLabel":"boolean | null"},"lastUpdatedAt":{"oneOf":[{"type":"string","description":"When the stored OAuth2 credential was last written (ISO 8601 UTC).","example":"2026-10-01T11:40:00.000Z","uniqueKey":"data.oneOf.15.authStatus.oneOf.0.lastUpdatedAt.oneOf.0","typeLabel":"string"},{"type":"null","description":"When the stored OAuth2 credential was last written (ISO 8601 UTC).","example":"2026-10-01T11:40:00.000Z","uniqueKey":"data.oneOf.15.authStatus.oneOf.0.lastUpdatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.authStatus.oneOf.0.lastUpdatedAt","typeLabel":"string | null"},"refreshFailureCount":{"oneOf":[{"type":"number","description":"Consecutive background token refresh failures; 0 when none. Only for OAuth2 credentials.","example":0,"uniqueKey":"data.oneOf.15.authStatus.oneOf.0.refreshFailureCount.oneOf.0","typeLabel":"number"},{"type":"null","description":"Consecutive background token refresh failures; 0 when none. Only for OAuth2 credentials.","example":0,"uniqueKey":"data.oneOf.15.authStatus.oneOf.0.refreshFailureCount.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.authStatus.oneOf.0.refreshFailureCount","typeLabel":"number | null"},"refreshFailureMessage":{"oneOf":[{"type":"string","description":"Provider error from the most recent background token refresh failure. Only for OAuth2 credentials.","example":"invalid_grant: refresh token expired","uniqueKey":"data.oneOf.15.authStatus.oneOf.0.refreshFailureMessage.oneOf.0","typeLabel":"string"},{"type":"null","description":"Provider error from the most recent background token refresh failure. Only for OAuth2 credentials.","example":"invalid_grant: refresh token expired","uniqueKey":"data.oneOf.15.authStatus.oneOf.0.refreshFailureMessage.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.authStatus.oneOf.0.refreshFailureMessage","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.15.authStatus.oneOf.0","typeLabel":"MCPServerAuthStatusAuthenticated · object"},{"type":"object","title":"MCPServerAuthStatusAuthRequired","description":"Caller's stored per-subject auth status for this MCP server, present on list responses. Same shape as `GET /mcp/{mcpServerId}/auth/status`, without refreshing expired tokens.","required":["status"],"x-fern-type-name":"MCPServerAuthStatusAuthRequired","properties":{"status":{"type":"string","enum":["authenticated","authentication_required","authentication_not_required"],"isRequired":true,"uniqueKey":"data.oneOf.15.authStatus.oneOf.1.status","typeLabel":"enum\u003cstring>"},"method":{"oneOf":[{"type":"string","enum":["oauth","auth-override"],"description":"Authentication source that satisfied this status.","uniqueKey":"data.oneOf.15.authStatus.oneOf.1.method.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["oauth","auth-override"],"description":"Authentication source that satisfied this status.","uniqueKey":"data.oneOf.15.authStatus.oneOf.1.method.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.authStatus.oneOf.1.method","typeLabel":"enum\u003cstring> | null"},"reason":{"oneOf":[{"type":"string","description":"Why the subject has authentication required status (e.g. `refresh_failed`, `invalid_grant`).","example":"User needs to complete the OAuth2 authorization flow.","uniqueKey":"data.oneOf.15.authStatus.oneOf.1.reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Why the subject has authentication required status (e.g. `refresh_failed`, `invalid_grant`).","example":"User needs to complete the OAuth2 authorization flow.","uniqueKey":"data.oneOf.15.authStatus.oneOf.1.reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.authStatus.oneOf.1.reason","typeLabel":"string | null"},"refreshFailureCount":{"oneOf":[{"type":"number","description":"Consecutive background token refresh failures. Omitted when no credential is stored.","example":5,"uniqueKey":"data.oneOf.15.authStatus.oneOf.1.refreshFailureCount.oneOf.0","typeLabel":"number"},{"type":"null","description":"Consecutive background token refresh failures. Omitted when no credential is stored.","example":5,"uniqueKey":"data.oneOf.15.authStatus.oneOf.1.refreshFailureCount.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.authStatus.oneOf.1.refreshFailureCount","typeLabel":"number | null"}},"uniqueKey":"data.oneOf.15.authStatus.oneOf.1","typeLabel":"MCPServerAuthStatusAuthRequired · object"},{"type":"object","title":"MCPServerAuthStatusAuthNotRequired","description":"Caller's stored per-subject auth status for this MCP server, present on list responses. Same shape as `GET /mcp/{mcpServerId}/auth/status`, without refreshing expired tokens.","required":["status","reason"],"x-fern-type-name":"MCPServerAuthStatusAuthNotRequired","properties":{"status":{"type":"string","enum":["authenticated","authentication_required","authentication_not_required"],"isRequired":true,"uniqueKey":"data.oneOf.15.authStatus.oneOf.2.status","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","description":"Why per-subject auth is not applicable for this server configuration.","example":"This MCP server has no authentication configured.","isRequired":true,"uniqueKey":"data.oneOf.15.authStatus.oneOf.2.reason","typeLabel":"string"}},"uniqueKey":"data.oneOf.15.authStatus.oneOf.2","typeLabel":"MCPServerAuthStatusAuthNotRequired · object"},{"type":"null","uniqueKey":"data.oneOf.15.authStatus.oneOf.3","typeLabel":"null"}],"uniqueKey":"data.oneOf.15.authStatus","typeLabel":"MCPServerAuthStatusAuthenticated · object | MCPServerAuthStatusAuthRequired · object | MCPServerAuthStatusAuthNotRequired · object | null"}},"uniqueKey":"data.oneOf.15","typeLabel":"MCPServerV2 · object"},{"type":"object","title":"RoleBinding","description":"The created or updated resource","required":["name","accountId","manifest","createdBySubject"],"x-fern-type-name":"RoleBinding","properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.16.name","typeLabel":"string"},"accountId":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.16.accountId","typeLabel":"string"},"manifest":{"type":"object","title":"RoleBindingManifest","description":"Stored role binding manifest","required":["type","name","subjects","permissions"],"x-fern-type-name":"RoleBindingManifest","properties":{"type":{"description":"+value=role-binding","type":"string","enum":["role-binding"],"default":"role-binding","isRequired":true,"uniqueKey":"data.oneOf.16.manifest.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique name for this role binding.","type":"string","pattern":"^[a-z][a-z0-9-]{1,64}[a-z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.16.manifest.name","typeLabel":"string"},"subjects":{"description":"One row per principal; set type and name (email, team name, virtual account name, agent name, or external identity name).","type":"array","items":{"description":"Single row per principal: type selects how to interpret name (email vs names).\nField names mirror the manifest root (type + name) for consistency in the UI and YAML.","type":"object","required":["type","name"],"properties":{"type":{"description":"Whether this row identifies a user (email), a team (name), a virtual account (name), or an agent (name).","type":"string","enum":["user","team","virtualaccount","agent"],"isRequired":true,"uniqueKey":"data.oneOf.16.manifest.subjects.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"description":"User email when type is user; team, virtual account, or agent name otherwise.","type":"string","minLength":1,"maxLength":1024,"isRequired":true,"uniqueKey":"data.oneOf.16.manifest.subjects.items.[INDEX].name","typeLabel":"string"}},"title":"RoleBindingSubject","x-fern-type-name":"RoleBindingSubject","uniqueKey":"data.oneOf.16.manifest.subjects.items.[INDEX]","typeLabel":"RoleBindingSubject · object"},"isRequired":true,"uniqueKey":"data.oneOf.16.manifest.subjects","typeLabel":"RoleBindingSubject · object[]"},"permissions":{"description":"Resource-scoped role grants (resource type, FQN, and role name).","type":"array","items":{"description":"Grants a named account role on a specific resource identified by FQN.","type":"object","required":["resourceType","resourceFqn","role"],"properties":{"resourceType":{"description":"Target resource kind (e.g. workspace, cluster, ml-repo).","type":"string","minLength":1,"maxLength":128,"isRequired":true,"uniqueKey":"data.oneOf.16.manifest.permissions.items.[INDEX].resourceType","typeLabel":"string"},"resourceFqn":{"description":"Fully qualified name of the resource.","type":"string","minLength":1,"maxLength":1024,"isRequired":true,"uniqueKey":"data.oneOf.16.manifest.permissions.items.[INDEX].resourceFqn","typeLabel":"string"},"role":{"description":"Name of the role to bind (e.g. workspace-editor, model-user).","type":"string","minLength":1,"maxLength":255,"isRequired":true,"uniqueKey":"data.oneOf.16.manifest.permissions.items.[INDEX].role","typeLabel":"string"}},"title":"RoleBindingPermission","x-fern-type-name":"RoleBindingPermission","uniqueKey":"data.oneOf.16.manifest.permissions.items.[INDEX]","typeLabel":"RoleBindingPermission · object"},"isRequired":true,"uniqueKey":"data.oneOf.16.manifest.permissions","typeLabel":"RoleBindingPermission · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.16.manifest","typeLabel":"RoleBindingManifest · object"},"createdBySubject":{"type":"object","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.16.createdBySubject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.16.createdBySubject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.16.createdBySubject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.16.createdBySubject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.16.createdBySubject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.16.createdBySubject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.16.createdBySubject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.16.createdBySubject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.16.createdBySubject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.16.createdBySubject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.16.createdBySubject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.16.createdBySubject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.16.createdBySubject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.16.createdBySubject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.16.createdBySubject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.16.createdBySubject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.16.createdBySubject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"required":["subjectId","subjectType"],"title":"Subject","x-fern-type-name":"Subject","isRequired":true,"uniqueKey":"data.oneOf.16.createdBySubject","typeLabel":"Subject · object"},"id":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.16.id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.16.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.16.id","typeLabel":"string | null"},"metadata":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"data.oneOf.16.metadata.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"data.oneOf.16.metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.16.metadata","typeLabel":"object | null"},"createdAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.16.createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.16.createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.16.createdAt","typeLabel":"string\u003cdate-time> | null"},"updatedAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.16.updatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.16.updatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.16.updatedAt","typeLabel":"string\u003cdate-time> | null"}},"uniqueKey":"data.oneOf.16","typeLabel":"RoleBinding · object"},{"type":"object","title":"SecretGroup","description":"The created or updated resource","required":["tenantName","createdBySubject","associatedSecrets","accountId","createdAt","updatedAt"],"x-fern-type-name":"SecretGroup","properties":{"tenantName":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.17.tenantName","typeLabel":"string"},"createdBySubject":{"type":"object","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.17.createdBySubject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.17.createdBySubject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.17.createdBySubject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.17.createdBySubject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.createdBySubject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.17.createdBySubject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.17.createdBySubject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.createdBySubject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.17.createdBySubject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.17.createdBySubject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.createdBySubject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.17.createdBySubject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.17.createdBySubject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.createdBySubject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.17.createdBySubject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.17.createdBySubject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.createdBySubject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"required":["subjectId","subjectType"],"title":"Subject","x-fern-type-name":"Subject","isRequired":true,"uniqueKey":"data.oneOf.17.createdBySubject","typeLabel":"Subject · object"},"associatedSecrets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].id","typeLabel":"string"},"fqn":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].fqn","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].name","typeLabel":"string"},"secretGroupId":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretGroupId","typeLabel":"string"},"value":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].value.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].value","typeLabel":"string | null"},"createdBySubject":{"oneOf":[{"type":"object","title":"Subject","required":["subjectId","subjectType"],"x-fern-type-name":"Subject","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.0.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.0.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.0.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.0.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.0.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.0.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.0.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.0.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.0.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.0.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.0.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.0.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.0.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.0.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.0.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.0.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.0.subjectExternalIdentitySlug","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.0","typeLabel":"Subject · object"},{"type":"null","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBySubject","typeLabel":"Subject · object | null"},"createdAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time> | null"},"updatedAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].updatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].updatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].updatedAt","typeLabel":"string\u003cdate-time> | null"},"secretVersions":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].id","typeLabel":"string"},"fqn":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].fqn","typeLabel":"string"},"value":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].value.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].value","typeLabel":"string | null"},"version":{"oneOf":[{"type":"number","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].version.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].version.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].version","typeLabel":"number | null"},"secret":{"oneOf":[{"type":"object","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].secret.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].secret.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].secret","typeLabel":"object | null"},"secretId":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].secretId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].secretId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].secretId","typeLabel":"string | null"},"createdAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time> | null"},"updatedAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].updatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].updatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX].updatedAt","typeLabel":"string\u003cdate-time> | null"}},"required":["id","fqn"],"title":"SecretVersion","x-fern-type-name":"SecretVersion","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0.items.[INDEX]","typeLabel":"SecretVersion · object"},"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.0","typeLabel":"SecretVersion · object[]"},{"type":"null","items":{"type":"object","properties":{"id":{"type":"string"},"fqn":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"null"}]},"version":{"oneOf":[{"type":"number"},{"type":"null"}]},"secret":{"oneOf":[{"type":"object"},{"type":"null"}]},"secretId":{"oneOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"oneOf":[{"format":"date-time","type":"string"},{"format":"date-time","type":"null"}]},"updatedAt":{"oneOf":[{"format":"date-time","type":"string"},{"format":"date-time","type":"null"}]}},"required":["id","fqn"],"title":"SecretVersion","x-fern-type-name":"SecretVersion"},"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].secretVersions","typeLabel":"SecretVersion · object[] | null"},"activeDeploymentsCount":{"oneOf":[{"type":"integer","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].activeDeploymentsCount.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].activeDeploymentsCount.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].activeDeploymentsCount","typeLabel":"integer | null"},"createdBy":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBy.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBy.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX].createdBy","typeLabel":"string | null"}},"required":["id","fqn","name","secretGroupId"],"title":"Secret","x-fern-type-name":"Secret","uniqueKey":"data.oneOf.17.associatedSecrets.items.[INDEX]","typeLabel":"Secret · object"},"isRequired":true,"uniqueKey":"data.oneOf.17.associatedSecrets","typeLabel":"Secret · object[]"},"accountId":{"type":"string","nullable":false,"isRequired":true,"uniqueKey":"data.oneOf.17.accountId","typeLabel":"string"},"createdAt":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.oneOf.17.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.oneOf.17.updatedAt","typeLabel":"string\u003cdate-time>"},"id":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.17.id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.17.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.id","typeLabel":"string | null"},"fqn":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.17.fqn.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.17.fqn.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.fqn","typeLabel":"string | null"},"integrationId":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.17.integrationId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.17.integrationId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.integrationId","typeLabel":"string | null"},"manifest":{"oneOf":[{"type":"object","uniqueKey":"data.oneOf.17.manifest.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"data.oneOf.17.manifest.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.manifest","typeLabel":"object | null"},"createdBy":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.17.createdBy.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.17.createdBy.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.17.createdBy","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.17","typeLabel":"SecretGroup · object"},{"type":"object","title":"ExternalIdentityProvider","description":"The created or updated resource","required":["fqn","tenantName","manifest","createdBySubject","accountId"],"x-fern-type-name":"ExternalIdentityProvider","properties":{"fqn":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.18.fqn","typeLabel":"string"},"tenantName":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.18.tenantName","typeLabel":"string"},"manifest":{"type":"object","description":"External identity provider manifest","isRequired":true,"uniqueKey":"data.oneOf.18.manifest","typeLabel":"object"},"createdBySubject":{"type":"object","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.18.createdBySubject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.18.createdBySubject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.18.createdBySubject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.18.createdBySubject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.18.createdBySubject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.18.createdBySubject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.18.createdBySubject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.18.createdBySubject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.18.createdBySubject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.18.createdBySubject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.18.createdBySubject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.18.createdBySubject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.18.createdBySubject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.18.createdBySubject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.18.createdBySubject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.18.createdBySubject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.18.createdBySubject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"required":["subjectId","subjectType"],"title":"Subject","x-fern-type-name":"Subject","isRequired":true,"uniqueKey":"data.oneOf.18.createdBySubject","typeLabel":"Subject · object"},"accountId":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.18.accountId","typeLabel":"string"},"id":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.18.id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.18.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.18.id","typeLabel":"string | null"},"createdAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.18.createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.18.createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.18.createdAt","typeLabel":"string\u003cdate-time> | null"},"updatedAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.18.updatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.18.updatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.18.updatedAt","typeLabel":"string\u003cdate-time> | null"}},"uniqueKey":"data.oneOf.18","typeLabel":"ExternalIdentityProvider · object"},{"type":"object","title":"GatewayInstallation","description":"The created or updated resource","required":["id","manifest","enabled","tenantName","createdAt","updatedAt","isDefault"],"x-fern-type-name":"GatewayInstallation","properties":{"id":{"type":"string","description":"System-generated gateway installation ID.","example":"jqfwg345gi25n5ju2yz5iz6m","isRequired":true,"uniqueKey":"data.oneOf.19.id","typeLabel":"string"},"manifest":{"type":"object","isRequired":true,"uniqueKey":"data.oneOf.19.manifest","typeLabel":"object"},"enabled":{"type":"boolean","isRequired":true,"uniqueKey":"data.oneOf.19.enabled","typeLabel":"boolean"},"tenantName":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.19.tenantName","typeLabel":"string"},"createdAt":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.oneOf.19.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.oneOf.19.updatedAt","typeLabel":"string\u003cdate-time>"},"isDefault":{"type":"boolean","isRequired":true,"uniqueKey":"data.oneOf.19.isDefault","typeLabel":"boolean"},"serviceAccountId":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.19.serviceAccountId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.19.serviceAccountId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.19.serviceAccountId","typeLabel":"string | null"},"createdBySubject":{"oneOf":[{"type":"object","title":"Subject","required":["subjectId","subjectType"],"x-fern-type-name":"Subject","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.19.createdBySubject.oneOf.0.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.19.createdBySubject.oneOf.0.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.19.createdBySubject.oneOf.0.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.19.createdBySubject.oneOf.0.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.19.createdBySubject.oneOf.0.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.19.createdBySubject.oneOf.0.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.19.createdBySubject.oneOf.0.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.19.createdBySubject.oneOf.0.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.19.createdBySubject.oneOf.0.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.19.createdBySubject.oneOf.0.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.19.createdBySubject.oneOf.0.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.19.createdBySubject.oneOf.0.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.19.createdBySubject.oneOf.0.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.19.createdBySubject.oneOf.0.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.19.createdBySubject.oneOf.0.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.19.createdBySubject.oneOf.0.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.19.createdBySubject.oneOf.0.subjectExternalIdentitySlug","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.19.createdBySubject.oneOf.0","typeLabel":"Subject · object"},{"type":"null","uniqueKey":"data.oneOf.19.createdBySubject.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.19.createdBySubject","typeLabel":"Subject · object | null"},"createdBy":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.19.createdBy.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.19.createdBy.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.19.createdBy","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.19","typeLabel":"GatewayInstallation · object"},{"type":"object","title":"GatewayBudget","description":"The created or updated resource","required":["tenantName","name","type","manifest","createdBySubject"],"x-fern-type-name":"GatewayBudget","properties":{"tenantName":{"type":"string","description":"Tenant the budget belongs to.","isRequired":true,"uniqueKey":"data.oneOf.20.tenantName","typeLabel":"string"},"name":{"type":"string","description":"Budget name (unique per tenant).","isRequired":true,"uniqueKey":"data.oneOf.20.name","typeLabel":"string"},"type":{"type":"string","description":"Budget type (tenant-budget-config | team-budget-config).","isRequired":true,"uniqueKey":"data.oneOf.20.type","typeLabel":"string"},"manifest":{"oneOf":[{"type":"object","title":"TenantBudgetConfig","description":"The budget manifest.","required":["type","name","limits","applies_to","mode"],"x-fern-type-name":"TenantBudgetConfig","properties":{"type":{"description":"+value=tenant-budget-config\n+sort=1","type":"string","enum":["tenant-budget-config"],"default":"tenant-budget-config","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Unique name for this budget","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.name","typeLabel":"string"},"limits":{"description":"Budget Limits","type":"object","properties":{"cost_per_day":{"description":"Maximum daily cost in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Maximum weekly cost in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Maximum monthly cost in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Maximum quarterly cost in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Maximum lifetime cost in USD. Mutually exclusive with the day/week/month/quarter limits.","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2Limits","x-fern-type-name":"BudgetV2Limits","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.limits","typeLabel":"BudgetV2Limits · object"},"applies_to":{"oneOf":[{"type":"object","title":"BudgetV2AppliesToAggregate","description":"A single shared budget across every matching request.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["aggregate"],"default":"aggregate","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.0","typeLabel":"BudgetV2AppliesToAggregate · object"},{"type":"object","title":"BudgetV2AppliesToPerUser","description":"Track a separate budget for each unique user.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-user"],"default":"per-user","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.1.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-user limit overrides","type":"array","items":{"description":"Per-User Override","type":"object","required":["users","limits"],"properties":{"users":{"description":"Users whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.1.overrides.items.[INDEX].users.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.1.overrides.items.[INDEX].users","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.1.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerUserOverride","x-fern-type-name":"BudgetV2PerUserOverride","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.1.overrides.items.[INDEX]","typeLabel":"BudgetV2PerUserOverride · object"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.1.overrides","typeLabel":"BudgetV2PerUserOverride · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.1","typeLabel":"BudgetV2AppliesToPerUser · object"},{"type":"object","title":"BudgetV2AppliesToPerModel","description":"Track a separate budget for each model.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-model"],"default":"per-model","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.2.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-model limit overrides","type":"array","items":{"description":"Per-Model Override","type":"object","required":["models","limits"],"properties":{"models":{"description":"Models whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.2.overrides.items.[INDEX].models.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.2.overrides.items.[INDEX].models","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.2.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerModelOverride","x-fern-type-name":"BudgetV2PerModelOverride","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.2.overrides.items.[INDEX]","typeLabel":"BudgetV2PerModelOverride · object"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.2.overrides","typeLabel":"BudgetV2PerModelOverride · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.2","typeLabel":"BudgetV2AppliesToPerModel · object"},{"type":"object","title":"BudgetV2AppliesToPerVirtualAccount","description":"Track a separate budget for each virtual account.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-virtual-account"],"default":"per-virtual-account","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.3.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-virtual-account limit overrides","type":"array","items":{"description":"Per-Virtual-Account Override","type":"object","required":["virtual_accounts","limits"],"properties":{"virtual_accounts":{"description":"Virtual accounts whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.3.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerVirtualAccountOverride","x-fern-type-name":"BudgetV2PerVirtualAccountOverride","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.3.overrides.items.[INDEX]","typeLabel":"BudgetV2PerVirtualAccountOverride · object"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.3.overrides","typeLabel":"BudgetV2PerVirtualAccountOverride · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.3","typeLabel":"BudgetV2AppliesToPerVirtualAccount · object"},{"type":"object","title":"BudgetV2AppliesToPerAgent","description":"Track a separate budget for each agent.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-agent"],"default":"per-agent","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.4.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-agent limit overrides","type":"array","items":{"description":"Per-Agent Override","type":"object","required":["agents","limits"],"properties":{"agents":{"description":"Agents whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.4.overrides.items.[INDEX].agents.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.4.overrides.items.[INDEX].agents","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.4.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerAgentOverride","x-fern-type-name":"BudgetV2PerAgentOverride","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.4.overrides.items.[INDEX]","typeLabel":"BudgetV2PerAgentOverride · object"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.4.overrides","typeLabel":"BudgetV2PerAgentOverride · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.4","typeLabel":"BudgetV2AppliesToPerAgent · object"},{"type":"object","title":"BudgetV2AppliesToMetadata","description":"Track a separate budget for each unique value of a metadata key.","required":["type","metadata"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["metadata"],"default":"metadata","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.5.type","typeLabel":"enum\u003cstring>"},"metadata":{"description":"Metadata key whose distinct values each get their own budget bucket","type":"string","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.5.metadata","typeLabel":"string"},"overrides":{"description":"Optional per-metadata-value limit overrides","type":"array","items":{"description":"Per-Metadata Override","type":"object","required":["metadata_values","limits"],"properties":{"metadata_values":{"description":"Metadata values whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.5.overrides.items.[INDEX].metadata_values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.5.overrides.items.[INDEX].metadata_values","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.5.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerMetadataOverride","x-fern-type-name":"BudgetV2PerMetadataOverride","uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.5.overrides.items.[INDEX]","typeLabel":"BudgetV2PerMetadataOverride · object"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.5.overrides","typeLabel":"BudgetV2PerMetadataOverride · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to.oneOf.5","typeLabel":"BudgetV2AppliesToMetadata · object"}],"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.applies_to","typeLabel":"BudgetV2AppliesToAggregate · object | BudgetV2AppliesToPerUser · object | BudgetV2AppliesToPerModel · object | BudgetV2AppliesToPerVirtualAccount · object | BudgetV2AppliesToPerAgent · object | BudgetV2AppliesToMetadata · object"},"mode":{"description":"`enforce` blocks breaching requests, `audit` only tracks them, `soft_enforce` blocks only when no other matching budget allows the request.","type":"string","enum":["enforce","audit","soft_enforce"],"default":"enforce","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.mode","typeLabel":"enum\u003cstring>"},"when":{"description":"Tenant Budget Conditions\nvirtual_models | virtual_provider_accounts cannot be combined with models | provider_accounts\n(enforced in GatewayBudgetService).","type":"object","properties":{"subjects":{"description":"Tenant Budget Subjects","type":"object","properties":{"users":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.users.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.users.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.users.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.users.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.users","typeLabel":"BudgetV2InNotInFilter · object"},"teams":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.teams.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.teams.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.teams.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.teams.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.teams","typeLabel":"BudgetV2InNotInFilter · object"},"virtual_accounts":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.virtual_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.virtual_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.virtual_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.virtual_accounts.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.virtual_accounts","typeLabel":"BudgetV2InNotInFilter · object"},"agents":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.agents.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.agents.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.agents.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.agents.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects.agents","typeLabel":"BudgetV2InNotInFilter · object"}},"title":"BudgetV2SubjectsTenantScoped","x-fern-type-name":"BudgetV2SubjectsTenantScoped","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.subjects","typeLabel":"BudgetV2SubjectsTenantScoped · object"},"models":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.models.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.models.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.models.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.models.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.models","typeLabel":"BudgetV2InNotInFilter · object"},"provider_accounts":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.provider_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.provider_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.provider_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.provider_accounts.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.provider_accounts","typeLabel":"BudgetV2InNotInFilter · object"},"virtual_models":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.virtual_models.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.virtual_models.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.virtual_models.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.virtual_models.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.virtual_models","typeLabel":"BudgetV2InNotInFilter · object"},"virtual_provider_accounts":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.virtual_provider_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.virtual_provider_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.virtual_provider_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.virtual_provider_accounts.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.virtual_provider_accounts","typeLabel":"BudgetV2InNotInFilter · object"},"metadata":{"description":"Filter by metadata key-value pairs this budget applies to","type":"object","additionalProperties":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.metadata.additionalProperties.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.metadata.additionalProperties.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.metadata.additionalProperties.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.metadata.additionalProperties.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.metadata.additionalProperties","typeLabel":"BudgetV2InNotInFilter · object"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.when.metadata","typeLabel":"object"}},"title":"BudgetV2WhenTenantScoped","x-fern-type-name":"BudgetV2WhenTenantScoped","uniqueKey":"data.oneOf.20.manifest.oneOf.0.when","typeLabel":"BudgetV2WhenTenantScoped · object"},"alerts":{"description":"Budget Alert","type":"object","required":["thresholds"],"properties":{"thresholds":{"description":"List of usage percentages (0-100) at which alerts should be triggered. Default thresholds are [75, 90, 95, 100].","type":"array","items":{"type":"number","minimum":0,"maximum":100,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.thresholds.items.[INDEX]","typeLabel":"number"},"default":[75,90,95,100],"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.thresholds","typeLabel":"number[]"},"notification_target":{"description":"Select where to send budget alert notifications","type":"array","items":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBotWithUsers","description":"Budget-only variant. Alertmanager-backed alerts cannot resolve an email to a Slack\nuser, so `users` is kept off the shared #SlackBot.","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.2.channels","typeLabel":"string[]"},"users":{"description":"List of user emails to send direct messages to. Use {{user.email}} to message the user who breached the budget.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.2.users.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.2.users","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.2","typeLabel":"SlackBotWithUsers · object"},{"type":"object","title":"PagerDuty","description":"+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.3","typeLabel":"PagerDuty · object"},{"type":"object","title":"MSTeamsWebhook","description":"MS Teams Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=ms-teams-webhook","type":"string","enum":["ms-teams-webhook"],"default":"ms-teams-webhook","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.4.notification_channel","typeLabel":"string"}},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.4","typeLabel":"MSTeamsWebhook · object"},{"type":"object","title":"Webhook","description":"Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=webhook","type":"string","enum":["webhook"],"default":"webhook","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.5.notification_channel","typeLabel":"string"}},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX].oneOf.5","typeLabel":"Webhook · object"}],"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target.items.[INDEX]","typeLabel":"Email · object | SlackWebhook · object | SlackBotWithUsers · object | PagerDuty · object | MSTeamsWebhook · object | Webhook · object"},"uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts.notification_target","typeLabel":"(Email · object | SlackWebhook · object | SlackBotWithUsers · object | PagerDuty · object | MSTeamsWebhook · object | Webhook · object)[]"}},"title":"BudgetV2Alert","x-fern-type-name":"BudgetV2Alert","uniqueKey":"data.oneOf.20.manifest.oneOf.0.alerts","typeLabel":"BudgetV2Alert · object"}},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.0","typeLabel":"TenantBudgetConfig · object"},{"type":"object","title":"TeamBudgetConfig","description":"The budget manifest.","required":["type","team_name","name","limits","applies_to","mode"],"x-fern-type-name":"TeamBudgetConfig","properties":{"type":{"description":"+value=team-budget-config\n+sort=1","type":"string","enum":["team-budget-config"],"default":"team-budget-config","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.type","typeLabel":"enum\u003cstring>"},"team_name":{"description":"Name of the team that owns this budget. RBAC is enforced on this value.","type":"string","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.team_name","typeLabel":"string"},"name":{"description":"Unique name for this budget","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.name","typeLabel":"string"},"limits":{"description":"Budget Limits","type":"object","properties":{"cost_per_day":{"description":"Maximum daily cost in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Maximum weekly cost in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Maximum monthly cost in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Maximum quarterly cost in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Maximum lifetime cost in USD. Mutually exclusive with the day/week/month/quarter limits.","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2Limits","x-fern-type-name":"BudgetV2Limits","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.limits","typeLabel":"BudgetV2Limits · object"},"applies_to":{"oneOf":[{"type":"object","title":"BudgetV2AppliesToAggregate","description":"A single shared budget across every matching request.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["aggregate"],"default":"aggregate","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.0","typeLabel":"BudgetV2AppliesToAggregate · object"},{"type":"object","title":"BudgetV2AppliesToPerUser","description":"Track a separate budget for each unique user.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-user"],"default":"per-user","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.1.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-user limit overrides","type":"array","items":{"description":"Per-User Override","type":"object","required":["users","limits"],"properties":{"users":{"description":"Users whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.1.overrides.items.[INDEX].users.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.1.overrides.items.[INDEX].users","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.1.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.1.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerUserOverride","x-fern-type-name":"BudgetV2PerUserOverride","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.1.overrides.items.[INDEX]","typeLabel":"BudgetV2PerUserOverride · object"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.1.overrides","typeLabel":"BudgetV2PerUserOverride · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.1","typeLabel":"BudgetV2AppliesToPerUser · object"},{"type":"object","title":"BudgetV2AppliesToPerModel","description":"Track a separate budget for each model.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-model"],"default":"per-model","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.2.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-model limit overrides","type":"array","items":{"description":"Per-Model Override","type":"object","required":["models","limits"],"properties":{"models":{"description":"Models whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.2.overrides.items.[INDEX].models.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.2.overrides.items.[INDEX].models","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.2.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.2.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerModelOverride","x-fern-type-name":"BudgetV2PerModelOverride","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.2.overrides.items.[INDEX]","typeLabel":"BudgetV2PerModelOverride · object"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.2.overrides","typeLabel":"BudgetV2PerModelOverride · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.2","typeLabel":"BudgetV2AppliesToPerModel · object"},{"type":"object","title":"BudgetV2AppliesToPerVirtualAccount","description":"Track a separate budget for each virtual account.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-virtual-account"],"default":"per-virtual-account","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.3.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-virtual-account limit overrides","type":"array","items":{"description":"Per-Virtual-Account Override","type":"object","required":["virtual_accounts","limits"],"properties":{"virtual_accounts":{"description":"Virtual accounts whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.3.overrides.items.[INDEX].virtual_accounts","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.3.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.3.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerVirtualAccountOverride","x-fern-type-name":"BudgetV2PerVirtualAccountOverride","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.3.overrides.items.[INDEX]","typeLabel":"BudgetV2PerVirtualAccountOverride · object"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.3.overrides","typeLabel":"BudgetV2PerVirtualAccountOverride · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.3","typeLabel":"BudgetV2AppliesToPerVirtualAccount · object"},{"type":"object","title":"BudgetV2AppliesToPerAgent","description":"Track a separate budget for each agent.","required":["type"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["per-agent"],"default":"per-agent","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.4.type","typeLabel":"enum\u003cstring>"},"overrides":{"description":"Optional per-agent limit overrides","type":"array","items":{"description":"Per-Agent Override","type":"object","required":["agents","limits"],"properties":{"agents":{"description":"Agents whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.4.overrides.items.[INDEX].agents.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.4.overrides.items.[INDEX].agents","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.4.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.4.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerAgentOverride","x-fern-type-name":"BudgetV2PerAgentOverride","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.4.overrides.items.[INDEX]","typeLabel":"BudgetV2PerAgentOverride · object"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.4.overrides","typeLabel":"BudgetV2PerAgentOverride · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.4","typeLabel":"BudgetV2AppliesToPerAgent · object"},{"type":"object","title":"BudgetV2AppliesToMetadata","description":"Track a separate budget for each unique value of a metadata key.","required":["type","metadata"],"x-fern-type-name":"BudgetV2AppliesTo","properties":{"type":{"description":"Applies To Type","type":"string","enum":["metadata"],"default":"metadata","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.5.type","typeLabel":"enum\u003cstring>"},"metadata":{"description":"Metadata key whose distinct values each get their own budget bucket","type":"string","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.5.metadata","typeLabel":"string"},"overrides":{"description":"Optional per-metadata-value limit overrides","type":"array","items":{"description":"Per-Metadata Override","type":"object","required":["metadata_values","limits"],"properties":{"metadata_values":{"description":"Metadata values whose usage uses this override instead of the default limits","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.5.overrides.items.[INDEX].metadata_values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.5.overrides.items.[INDEX].metadata_values","typeLabel":"string[]"},"limits":{"description":"Override Limits","type":"object","properties":{"cost_per_day":{"description":"Override daily cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_day","typeLabel":"number"},"cost_per_week":{"description":"Override weekly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_week","typeLabel":"number"},"cost_per_month":{"description":"Override monthly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_month","typeLabel":"number"},"cost_per_quarter":{"description":"Override quarterly cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_quarter","typeLabel":"number"},"cost_per_lifetime":{"description":"Override lifetime cost cap in USD","type":"number","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.5.overrides.items.[INDEX].limits.cost_per_lifetime","typeLabel":"number"}},"title":"BudgetV2OverrideLimits","x-fern-type-name":"BudgetV2OverrideLimits","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.5.overrides.items.[INDEX].limits","typeLabel":"BudgetV2OverrideLimits · object"}},"title":"BudgetV2PerMetadataOverride","x-fern-type-name":"BudgetV2PerMetadataOverride","uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.5.overrides.items.[INDEX]","typeLabel":"BudgetV2PerMetadataOverride · object"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.5.overrides","typeLabel":"BudgetV2PerMetadataOverride · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to.oneOf.5","typeLabel":"BudgetV2AppliesToMetadata · object"}],"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.applies_to","typeLabel":"BudgetV2AppliesToAggregate · object | BudgetV2AppliesToPerUser · object | BudgetV2AppliesToPerModel · object | BudgetV2AppliesToPerVirtualAccount · object | BudgetV2AppliesToPerAgent · object | BudgetV2AppliesToMetadata · object"},"mode":{"description":"`enforce` blocks breaching requests, `audit` only tracks them, `soft_enforce` blocks only when no other matching budget allows the request.","type":"string","enum":["enforce","audit","soft_enforce"],"default":"enforce","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.mode","typeLabel":"enum\u003cstring>"},"when":{"description":"Team Budget Conditions\nvirtual_models | virtual_provider_accounts cannot be combined with models | provider_accounts\n(enforced in GatewayBudgetService).","type":"object","properties":{"subjects":{"description":"Team Budget Subjects","type":"object","properties":{"users":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.subjects.users.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.subjects.users.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.subjects.users.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.subjects.users.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.subjects.users","typeLabel":"BudgetV2InNotInFilter · object"},"virtual_accounts":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.subjects.virtual_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.subjects.virtual_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.subjects.virtual_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.subjects.virtual_accounts.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.subjects.virtual_accounts","typeLabel":"BudgetV2InNotInFilter · object"}},"title":"BudgetV2SubjectsTeamScoped","x-fern-type-name":"BudgetV2SubjectsTeamScoped","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.subjects","typeLabel":"BudgetV2SubjectsTeamScoped · object"},"models":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.models.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.models.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.models.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.models.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.models","typeLabel":"BudgetV2InNotInFilter · object"},"provider_accounts":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.provider_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.provider_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.provider_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.provider_accounts.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.provider_accounts","typeLabel":"BudgetV2InNotInFilter · object"},"virtual_models":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.virtual_models.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.virtual_models.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.virtual_models.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.virtual_models.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.virtual_models","typeLabel":"BudgetV2InNotInFilter · object"},"virtual_provider_accounts":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.virtual_provider_accounts.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.virtual_provider_accounts.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.virtual_provider_accounts.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.virtual_provider_accounts.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.virtual_provider_accounts","typeLabel":"BudgetV2InNotInFilter · object"},"metadata":{"description":"Filter by metadata key-value pairs this budget applies to","type":"object","additionalProperties":{"description":"In/Not-In Filter","type":"object","properties":{"in":{"description":"Match when the value is present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.metadata.additionalProperties.in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.metadata.additionalProperties.in","typeLabel":"string[]"},"not_in":{"description":"Match when the value is NOT present in this list","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.metadata.additionalProperties.not_in.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.metadata.additionalProperties.not_in","typeLabel":"string[]"}},"title":"BudgetV2InNotInFilter","x-fern-type-name":"BudgetV2InNotInFilter","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.metadata.additionalProperties","typeLabel":"BudgetV2InNotInFilter · object"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.when.metadata","typeLabel":"object"}},"title":"BudgetV2WhenTeamScoped","x-fern-type-name":"BudgetV2WhenTeamScoped","uniqueKey":"data.oneOf.20.manifest.oneOf.1.when","typeLabel":"BudgetV2WhenTeamScoped · object"},"alerts":{"description":"Budget Alert","type":"object","required":["thresholds"],"properties":{"thresholds":{"description":"List of usage percentages (0-100) at which alerts should be triggered. Default thresholds are [75, 90, 95, 100].","type":"array","items":{"type":"number","minimum":0,"maximum":100,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.thresholds.items.[INDEX]","typeLabel":"number"},"default":[75,90,95,100],"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.thresholds","typeLabel":"number[]"},"notification_target":{"description":"Select where to send budget alert notifications","type":"array","items":{"oneOf":[{"type":"object","title":"Email","description":"Email","required":["type","notification_channel","to_emails"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=email","type":"string","enum":["email"],"default":"email","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.0.notification_channel","typeLabel":"string"},"to_emails":{"description":"List of recipients' email addresses if the notification channel is Email.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.0.to_emails.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.0.to_emails","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.0","typeLabel":"Email · object"},{"type":"object","title":"SlackWebhook","description":"Slack Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=slack-webhook","type":"string","enum":["slack-webhook"],"default":"slack-webhook","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.1.notification_channel","typeLabel":"string"}},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.1","typeLabel":"SlackWebhook · object"},{"type":"object","title":"SlackBotWithUsers","description":"Budget-only variant. Alertmanager-backed alerts cannot resolve an email to a Slack\nuser, so `users` is kept off the shared #SlackBot.","required":["type","notification_channel","channels"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=slack-bot","type":"string","enum":["slack-bot"],"default":"slack-bot","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.2.notification_channel","typeLabel":"string"},"channels":{"description":"List of channels to send messages to.","type":"array","items":{"type":"string","pattern":"^#?[a-z0-9\\-_]{2,80}$","uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.2.channels.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.2.channels","typeLabel":"string[]"},"users":{"description":"List of user emails to send direct messages to. Use {{user.email}} to message the user who breached the budget.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.2.users.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.2.users","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.2","typeLabel":"SlackBotWithUsers · object"},{"type":"object","title":"PagerDuty","description":"+discriminator=type","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=pagerduty","type":"string","enum":["pagerduty"],"default":"pagerduty","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.3.notification_channel","typeLabel":"string"}},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.3","typeLabel":"PagerDuty · object"},{"type":"object","title":"MSTeamsWebhook","description":"MS Teams Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=ms-teams-webhook","type":"string","enum":["ms-teams-webhook"],"default":"ms-teams-webhook","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.4.notification_channel","typeLabel":"string"}},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.4","typeLabel":"MSTeamsWebhook · object"},{"type":"object","title":"Webhook","description":"Webhook","required":["type","notification_channel"],"x-fern-type-name":"NotificationTargetForBudget","properties":{"type":{"description":"+value=webhook","type":"string","enum":["webhook"],"default":"webhook","isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"notification_channel":{"description":"Specify the notification channel to send alerts to","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.5.notification_channel","typeLabel":"string"}},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX].oneOf.5","typeLabel":"Webhook · object"}],"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target.items.[INDEX]","typeLabel":"Email · object | SlackWebhook · object | SlackBotWithUsers · object | PagerDuty · object | MSTeamsWebhook · object | Webhook · object"},"uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts.notification_target","typeLabel":"(Email · object | SlackWebhook · object | SlackBotWithUsers · object | PagerDuty · object | MSTeamsWebhook · object | Webhook · object)[]"}},"title":"BudgetV2Alert","x-fern-type-name":"BudgetV2Alert","uniqueKey":"data.oneOf.20.manifest.oneOf.1.alerts","typeLabel":"BudgetV2Alert · object"}},"isRequired":true,"uniqueKey":"data.oneOf.20.manifest.oneOf.1","typeLabel":"TeamBudgetConfig · object"}],"isRequired":true,"uniqueKey":"data.oneOf.20.manifest","typeLabel":"TenantBudgetConfig · object | TeamBudgetConfig · object"},"createdBySubject":{"type":"object","title":"Subject","description":"Principal that created or last updated this budget.","required":["subjectId","subjectType"],"x-fern-type-name":"Subject","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.20.createdBySubject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.20.createdBySubject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.20.createdBySubject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.20.createdBySubject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.20.createdBySubject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.20.createdBySubject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.20.createdBySubject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.20.createdBySubject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.20.createdBySubject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.20.createdBySubject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.20.createdBySubject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.20.createdBySubject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.20.createdBySubject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.20.createdBySubject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.20.createdBySubject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.20.createdBySubject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.20.createdBySubject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.oneOf.20.createdBySubject","typeLabel":"Subject · object"},"id":{"oneOf":[{"type":"string","description":"System-generated Budget ID.","uniqueKey":"data.oneOf.20.id.oneOf.0","typeLabel":"string"},{"type":"null","description":"System-generated Budget ID.","uniqueKey":"data.oneOf.20.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.20.id","typeLabel":"string | null"},"createdAt":{"oneOf":[{"format":"date-time","type":"string","description":"Creation timestamp.","uniqueKey":"data.oneOf.20.createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Creation timestamp.","uniqueKey":"data.oneOf.20.createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.20.createdAt","typeLabel":"string\u003cdate-time> | null"},"updatedAt":{"oneOf":[{"format":"date-time","type":"string","description":"Last-update timestamp.","uniqueKey":"data.oneOf.20.updatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Last-update timestamp.","uniqueKey":"data.oneOf.20.updatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.20.updatedAt","typeLabel":"string\u003cdate-time> | null"}},"uniqueKey":"data.oneOf.20","typeLabel":"GatewayBudget · object"},{"type":"object","title":"ArtifactVersion","description":"The created or updated resource","required":["manifest","id","fqn","created_by_subject","ml_repo_id","artifact_id"],"x-fern-type-name":"ArtifactVersion","properties":{"manifest":{"type":"object","title":"ArtifactManifest","description":"Manifest describing the artifact version.","required":["type","source","step","metadata"],"x-fern-type-name":"ArtifactManifest","properties":{"metadata":{"description":"Key value metadata. Should be valid JSON. For e.g. `{\"business-unit\": \"sales\", \"quality\": \"good\", \"rating\": 4.5}`","type":"object","isRequired":true,"uniqueKey":"data.oneOf.21.manifest.metadata","typeLabel":"object"},"type":{"description":"Artifact Version","type":"string","enum":["artifact-version"],"default":"artifact-version","isRequired":true,"uniqueKey":"data.oneOf.21.manifest.type","typeLabel":"enum\u003cstring>"},"source":{"oneOf":[{"type":"object","title":"TrueFoundryManagedSource","description":"TrueFoundry Managed Source","required":["type"],"x-fern-type-name":"TrueFoundryManagedSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["truefoundry"],"default":"truefoundry","isRequired":true,"uniqueKey":"data.oneOf.21.manifest.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"uri":{"description":"URI","type":"string","pattern":"^(s3|gs|wasbs)://.*","uniqueKey":"data.oneOf.21.manifest.source.oneOf.0.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.21.manifest.source.oneOf.0","typeLabel":"TrueFoundryManagedSource · object"},{"type":"object","title":"ExternalBlobStorageSource","description":"External Blob Storage Source","required":["type","uri"],"x-fern-type-name":"ExternalBlobStorageSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["external"],"default":"external","isRequired":true,"uniqueKey":"data.oneOf.21.manifest.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uri":{"description":"URI referencing a path in the blob storage bucket linked to the MLRepo","type":"string","pattern":"^(s3|gs|wasbs)://.*","isRequired":true,"uniqueKey":"data.oneOf.21.manifest.source.oneOf.1.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.21.manifest.source.oneOf.1","typeLabel":"ExternalBlobStorageSource · object"},{"type":"object","title":"LocalArtifactSource","description":"Artifact Source","required":["type","paths"],"x-fern-type-name":"LocalArtifactSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"data.oneOf.21.manifest.source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"paths":{"description":"Array of ArtifactPath objects representing the source and destination paths","type":"array","items":{"type":"object","required":["src"],"properties":{"src":{"description":"Local file or folder path","type":"string","isRequired":true,"uniqueKey":"data.oneOf.21.manifest.source.oneOf.2.paths.items.[INDEX].src","typeLabel":"string"},"dest":{"description":"Relative path where the file or folder will be uploaded to in the artifact","type":"string","uniqueKey":"data.oneOf.21.manifest.source.oneOf.2.paths.items.[INDEX].dest","typeLabel":"string"}},"title":"ArtifactPath","x-fern-type-name":"ArtifactPath","uniqueKey":"data.oneOf.21.manifest.source.oneOf.2.paths.items.[INDEX]","typeLabel":"ArtifactPath · object"},"isRequired":true,"uniqueKey":"data.oneOf.21.manifest.source.oneOf.2.paths","typeLabel":"ArtifactPath · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.21.manifest.source.oneOf.2","typeLabel":"LocalArtifactSource · object"}],"isRequired":true,"uniqueKey":"data.oneOf.21.manifest.source","typeLabel":"TrueFoundryManagedSource · object | ExternalBlobStorageSource · object | LocalArtifactSource · object"},"step":{"description":"Step/Epoch number in an iterative training loop the artifact version was created. Generally useful when logging a model version from a MLRepo Run","type":"integer","minimum":0,"default":0,"isRequired":true,"uniqueKey":"data.oneOf.21.manifest.step","typeLabel":"integer"},"name":{"description":"Name of the entity","type":"string","maxLength":256,"pattern":"^[A-Za-z0-9_\\-]+$","uniqueKey":"data.oneOf.21.manifest.name","typeLabel":"string"},"ml_repo":{"description":"Name of the ML Repo","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,98}[a-zA-Z0-9]$","uniqueKey":"data.oneOf.21.manifest.ml_repo","typeLabel":"string"},"version":{"description":"Version of the entity","type":"integer","minimum":1,"uniqueKey":"data.oneOf.21.manifest.version","typeLabel":"integer"},"description":{"oneOf":[{"description":"Description","type":"string","maxLength":512,"uniqueKey":"data.oneOf.21.manifest.description.oneOf.0","typeLabel":"string"},{"description":"Description","type":"null","maxLength":512,"uniqueKey":"data.oneOf.21.manifest.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.21.manifest.description","typeLabel":"string | null"},"version_alias":{"description":"Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)","type":"string","maxLength":128,"pattern":"^v[a-zA-Z0-9.-]*([a-zA-Z0-9]+)$","uniqueKey":"data.oneOf.21.manifest.version_alias","typeLabel":"string"},"run_id":{"description":"ID of the MLRepo Run that generated the artifact version","type":"string","uniqueKey":"data.oneOf.21.manifest.run_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.21.manifest","typeLabel":"ArtifactManifest · object"},"id":{"type":"string","description":"System-generated artifact version ID.","example":"jqfwg345gi25n5ju2yz5iz6m","isRequired":true,"uniqueKey":"data.oneOf.21.id","typeLabel":"string"},"fqn":{"type":"string","description":"Human-readable Fully Qualified Name of the artifact version.","isRequired":true,"uniqueKey":"data.oneOf.21.fqn","typeLabel":"string"},"created_by_subject":{"type":"object","title":"Subject","description":"Subject (user, team, or service account) that created the artifact version.","required":["subjectId","subjectType"],"x-fern-type-name":"Subject","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.21.created_by_subject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.21.created_by_subject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.21.created_by_subject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.21.created_by_subject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.21.created_by_subject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.21.created_by_subject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.21.created_by_subject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.21.created_by_subject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.21.created_by_subject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.21.created_by_subject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.21.created_by_subject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.21.created_by_subject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.21.created_by_subject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.21.created_by_subject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.21.created_by_subject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.21.created_by_subject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.21.created_by_subject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.oneOf.21.created_by_subject","typeLabel":"Subject · object"},"ml_repo_id":{"type":"string","description":"Identifier of the ML Repo the artifact version belongs to.","isRequired":true,"uniqueKey":"data.oneOf.21.ml_repo_id","typeLabel":"string"},"artifact_id":{"type":"string","description":"Identifier of the artifact this version belongs to.","isRequired":true,"uniqueKey":"data.oneOf.21.artifact_id","typeLabel":"string"},"created_at":{"oneOf":[{"format":"date-time","type":"string","description":"Timestamp when the artifact version was created.","uniqueKey":"data.oneOf.21.created_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Timestamp when the artifact version was created.","uniqueKey":"data.oneOf.21.created_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.21.created_at","typeLabel":"string\u003cdate-time> | null"},"updated_at":{"oneOf":[{"format":"date-time","type":"string","description":"Timestamp when the artifact version was last updated.","uniqueKey":"data.oneOf.21.updated_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Timestamp when the artifact version was last updated.","uniqueKey":"data.oneOf.21.updated_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.21.updated_at","typeLabel":"string\u003cdate-time> | null"},"usage_code_snippet":{"oneOf":[{"type":"string","description":"Code snippet demonstrating how to use the artifact version.","uniqueKey":"data.oneOf.21.usage_code_snippet.oneOf.0","typeLabel":"string"},{"type":"null","description":"Code snippet demonstrating how to use the artifact version.","uniqueKey":"data.oneOf.21.usage_code_snippet.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.21.usage_code_snippet","typeLabel":"string | null"},"tags":{"oneOf":[{"description":"Tags associated with the artifact version.","default":[],"type":"array","items":{"type":"string","uniqueKey":"data.oneOf.21.tags.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.21.tags.oneOf.0","typeLabel":"string[]"},{"description":"Tags associated with the artifact version.","default":[],"type":"null","items":{"type":"string"},"uniqueKey":"data.oneOf.21.tags.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.21.tags","typeLabel":"string[] | null"}},"uniqueKey":"data.oneOf.21","typeLabel":"ArtifactVersion · object"},{"type":"object","title":"ModelVersion","description":"The created or updated resource","required":["manifest","id","fqn","created_by_subject","ml_repo_id","model_id"],"x-fern-type-name":"ModelVersion","properties":{"manifest":{"type":"object","title":"ModelManifest","description":"Manifest describing the model version.","required":["type","source","step","metadata"],"x-fern-type-name":"ModelManifest","properties":{"metadata":{"description":"Key value metadata. Should be valid JSON. For e.g. `{\"business-unit\": \"sales\", \"quality\": \"good\", \"rating\": 4.5}`","type":"object","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.metadata","typeLabel":"object"},"type":{"description":"Model Version","type":"string","enum":["model-version"],"default":"model-version","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.type","typeLabel":"enum\u003cstring>"},"source":{"oneOf":[{"type":"object","title":"TrueFoundryManagedSource","description":"TrueFoundry Managed Source","required":["type"],"x-fern-type-name":"TrueFoundryManagedSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["truefoundry"],"default":"truefoundry","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"uri":{"description":"URI","type":"string","pattern":"^(s3|gs|wasbs)://.*","uniqueKey":"data.oneOf.22.manifest.source.oneOf.0.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.22.manifest.source.oneOf.0","typeLabel":"TrueFoundryManagedSource · object"},{"type":"object","title":"ExternalBlobStorageSource","description":"External Blob Storage Source","required":["type","uri"],"x-fern-type-name":"ExternalBlobStorageSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["external"],"default":"external","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uri":{"description":"URI referencing a path in the blob storage bucket linked to the MLRepo","type":"string","pattern":"^(s3|gs|wasbs)://.*","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.source.oneOf.1.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.22.manifest.source.oneOf.1","typeLabel":"ExternalBlobStorageSource · object"},{"type":"object","title":"LocalModelSource","description":"Model Source","required":["type","file_or_folder"],"x-fern-type-name":"LocalModelSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"file_or_folder":{"description":"Path to the model file or folder","type":"string","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.source.oneOf.2.file_or_folder","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.22.manifest.source.oneOf.2","typeLabel":"LocalModelSource · object"}],"isRequired":true,"uniqueKey":"data.oneOf.22.manifest.source","typeLabel":"TrueFoundryManagedSource · object | ExternalBlobStorageSource · object | LocalModelSource · object"},"step":{"description":"Step/Epoch number in an iterative training loop the model version was created. Generally useful when logging a model version from a MLRepo Run","type":"integer","minimum":0,"default":0,"isRequired":true,"uniqueKey":"data.oneOf.22.manifest.step","typeLabel":"integer"},"name":{"description":"Name of the entity","type":"string","maxLength":256,"pattern":"^[A-Za-z0-9_\\-]+$","uniqueKey":"data.oneOf.22.manifest.name","typeLabel":"string"},"ml_repo":{"description":"Name of the ML Repo","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,98}[a-zA-Z0-9]$","uniqueKey":"data.oneOf.22.manifest.ml_repo","typeLabel":"string"},"version":{"description":"Version of the entity","type":"integer","minimum":1,"uniqueKey":"data.oneOf.22.manifest.version","typeLabel":"integer"},"description":{"oneOf":[{"description":"Description","type":"string","maxLength":512,"uniqueKey":"data.oneOf.22.manifest.description.oneOf.0","typeLabel":"string"},{"description":"Description","type":"null","maxLength":512,"uniqueKey":"data.oneOf.22.manifest.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.22.manifest.description","typeLabel":"string | null"},"version_alias":{"description":"Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)","type":"string","maxLength":128,"pattern":"^v[a-zA-Z0-9.-]*([a-zA-Z0-9]+)$","uniqueKey":"data.oneOf.22.manifest.version_alias","typeLabel":"string"},"framework":{"oneOf":[{"type":"object","title":"TransformersFramework","description":"Transformers","required":["type"],"x-fern-type-name":"TransformersFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["transformers"],"default":"transformers","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.0.type","typeLabel":"enum\u003cstring>"},"library_name":{"oneOf":[{"description":"Name of the library for the framework","type":"string","enum":["transformers","sentence-transformers","diffusers"],"default":"transformers","title":"LibraryName","x-fern-type-name":"LibraryName","uniqueKey":"data.oneOf.22.manifest.framework.oneOf.0.library_name.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"Name of the library for the framework","type":"null","enum":["transformers","sentence-transformers","diffusers"],"default":"transformers","title":"LibraryName","x-fern-type-name":"LibraryName","uniqueKey":"data.oneOf.22.manifest.framework.oneOf.0.library_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.0.library_name","typeLabel":"enum\u003cstring> | null"},"pipeline_tag":{"oneOf":[{"description":"The `pipeline()` task this model can be used with e.g. `text-generation`. See [huggingface docs](https://huggingface.co/docs/transformers/main/en/main_classes/pipelines#transformers.pipeline.task) for all possible values","type":"string","default":null,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.0.pipeline_tag.oneOf.0","typeLabel":"string"},{"description":"The `pipeline()` task this model can be used with e.g. `text-generation`. See [huggingface docs](https://huggingface.co/docs/transformers/main/en/main_classes/pipelines#transformers.pipeline.task) for all possible values","type":"null","default":null,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.0.pipeline_tag.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.0.pipeline_tag","typeLabel":"string | null"},"base_model":{"oneOf":[{"description":"Base model Id from HuggingFace Hub. If this is a finetuned model, this points to the base model id used for finetuning.","type":"string","default":null,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.0.base_model.oneOf.0","typeLabel":"string"},{"description":"Base model Id from HuggingFace Hub. If this is a finetuned model, this points to the base model id used for finetuning.","type":"null","default":null,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.0.base_model.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.0.base_model","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.0","typeLabel":"TransformersFramework · object"},{"type":"object","title":"TensorFlowFramework","description":"Tensorflow","required":["type"],"x-fern-type-name":"TensorFlowFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["tensorflow"],"default":"tensorflow","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.1","typeLabel":"TensorFlowFramework · object"},{"type":"object","title":"SklearnFramework","description":"Sklearn","required":["type"],"x-fern-type-name":"SklearnFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["sklearn"],"default":"sklearn","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.2.type","typeLabel":"enum\u003cstring>"},"model_filepath":{"description":"Relative path to the model file in the model version contents","type":"string","uniqueKey":"data.oneOf.22.manifest.framework.oneOf.2.model_filepath","typeLabel":"string"},"serialization_format":{"description":"Serialization format used to save the sklearn model","type":"string","enum":["cloudpickle","joblib","pickle"],"title":"SklearnSerializationFormat","x-fern-type-name":"SklearnSerializationFormat","uniqueKey":"data.oneOf.22.manifest.framework.oneOf.2.serialization_format","typeLabel":"enum\u003cstring>"},"model_schema":{"description":"Scikit Learn Model Schema","type":"object","required":["infer_method_name","inputs","outputs"],"properties":{"infer_method_name":{"description":"Name of the method used for inference","type":"string","enum":["predict","predict_proba"],"title":"InferMethodName","x-fern-type-name":"InferMethodName","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.2.model_schema.infer_method_name","typeLabel":"enum\u003cstring>"},"inputs":{"description":"Schema of the input","type":"array","items":{"type":"object","uniqueKey":"data.oneOf.22.manifest.framework.oneOf.2.model_schema.inputs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.2.model_schema.inputs","typeLabel":"object[]"},"outputs":{"description":"Schema of the output","type":"array","items":{"type":"object","uniqueKey":"data.oneOf.22.manifest.framework.oneOf.2.model_schema.outputs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.2.model_schema.outputs","typeLabel":"object[]"}},"title":"SklearnModelSchema","x-fern-type-name":"SklearnModelSchema","uniqueKey":"data.oneOf.22.manifest.framework.oneOf.2.model_schema","typeLabel":"SklearnModelSchema · object"}},"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.2","typeLabel":"SklearnFramework · object"},{"type":"object","title":"PyTorchFramework","description":"PyTorch","required":["type"],"x-fern-type-name":"PyTorchFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["pytorch"],"default":"pytorch","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.3","typeLabel":"PyTorchFramework · object"},{"type":"object","title":"KerasFramework","description":"Keras","required":["type"],"x-fern-type-name":"KerasFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["keras"],"default":"keras","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.4.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.4","typeLabel":"KerasFramework · object"},{"type":"object","title":"XGBoostFramework","description":"XGBoost","required":["type"],"x-fern-type-name":"XGBoostFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["xgboost"],"default":"xgboost","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.5.type","typeLabel":"enum\u003cstring>"},"serialization_format":{"description":"Serialization format used to save the xgboost model","type":"string","enum":["cloudpickle","joblib","pickle","json"],"title":"XGBoostSerializationFormat","x-fern-type-name":"XGBoostSerializationFormat","uniqueKey":"data.oneOf.22.manifest.framework.oneOf.5.serialization_format","typeLabel":"enum\u003cstring>"},"model_filepath":{"description":"Relative path to the model file in the model version contents","type":"string","uniqueKey":"data.oneOf.22.manifest.framework.oneOf.5.model_filepath","typeLabel":"string"},"model_schema":{"description":"Schema of the XGBoost model","type":"object","required":["infer_method_name","inputs","outputs"],"properties":{"infer_method_name":{"description":"Name of the method used for inference","type":"string","enum":["predict"],"isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.5.model_schema.infer_method_name","typeLabel":"enum\u003cstring>"},"inputs":{"description":"Schema of the input","type":"array","items":{"type":"object","uniqueKey":"data.oneOf.22.manifest.framework.oneOf.5.model_schema.inputs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.5.model_schema.inputs","typeLabel":"object[]"},"outputs":{"description":"Schema of the output","type":"array","items":{"type":"object","uniqueKey":"data.oneOf.22.manifest.framework.oneOf.5.model_schema.outputs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.5.model_schema.outputs","typeLabel":"object[]"}},"title":"XGBoostModelSchema","x-fern-type-name":"XGBoostModelSchema","uniqueKey":"data.oneOf.22.manifest.framework.oneOf.5.model_schema","typeLabel":"XGBoostModelSchema · object"}},"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.5","typeLabel":"XGBoostFramework · object"},{"type":"object","title":"LightGBMFramework","description":"LightGBM","required":["type"],"x-fern-type-name":"LightGBMFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["lightgbm"],"default":"lightgbm","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.6.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.6","typeLabel":"LightGBMFramework · object"},{"type":"object","title":"FastAIFramework","description":"FastAI","required":["type"],"x-fern-type-name":"FastAIFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["fastai"],"default":"fastai","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.7.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.7","typeLabel":"FastAIFramework · object"},{"type":"object","title":"H2OFramework","description":"H2O","required":["type"],"x-fern-type-name":"H2OFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["h2o"],"default":"h2o","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.8.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.8","typeLabel":"H2OFramework · object"},{"type":"object","title":"ONNXFramework","description":"ONNX","required":["type"],"x-fern-type-name":"ONNXFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["onnx"],"default":"onnx","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.9.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.9","typeLabel":"ONNXFramework · object"},{"type":"object","title":"SpaCyFramework","description":"SpaCy","required":["type"],"x-fern-type-name":"SpaCyFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["spacy"],"default":"spacy","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.10.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.10","typeLabel":"SpaCyFramework · object"},{"type":"object","title":"StatsModelsFramework","description":"StatsModels","required":["type"],"x-fern-type-name":"StatsModelsFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["statsmodels"],"default":"statsmodels","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.11.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.11","typeLabel":"StatsModelsFramework · object"},{"type":"object","title":"GluonFramework","description":"Gluon","required":["type"],"x-fern-type-name":"GluonFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["gluon"],"default":"gluon","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.12.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.12","typeLabel":"GluonFramework · object"},{"type":"object","title":"PaddleFramework","description":"Paddle","required":["type"],"x-fern-type-name":"PaddleFramework","properties":{"type":{"description":"Type of the framework","type":"string","enum":["paddle"],"default":"paddle","isRequired":true,"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.13.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.22.manifest.framework.oneOf.13","typeLabel":"PaddleFramework · object"}],"uniqueKey":"data.oneOf.22.manifest.framework","typeLabel":"TransformersFramework · object | TensorFlowFramework · object | SklearnFramework · object | PyTorchFramework · object | KerasFramework · object | XGBoostFramework · object | LightGBMFramework · object | FastAIFramework · object | H2OFramework · object | ONNXFramework · object | SpaCyFramework · object | StatsModelsFramework · object | GluonFramework · object | PaddleFramework · object"},"environment":{"description":"Runtime environment describing python version and dependencies for running the model","type":"object","properties":{"python_version":{"description":"Python version to use when running the model","type":"string","pattern":"^\\d+(\\.\\d+){1,2}([\\-\\.a-z0-9]+)?$","uniqueKey":"data.oneOf.22.manifest.environment.python_version","typeLabel":"string"},"pip_packages":{"description":"pip dependencies needed for running the model","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.22.manifest.environment.pip_packages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.22.manifest.environment.pip_packages","typeLabel":"string[]"}},"title":"ModelVersionEnvironment","x-fern-type-name":"ModelVersionEnvironment","uniqueKey":"data.oneOf.22.manifest.environment","typeLabel":"ModelVersionEnvironment · object"},"run_id":{"description":"ID of the MLRepo Run that generated the model version","type":"string","uniqueKey":"data.oneOf.22.manifest.run_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.22.manifest","typeLabel":"ModelManifest · object"},"id":{"type":"string","description":"Unique identifier of the model version.","isRequired":true,"uniqueKey":"data.oneOf.22.id","typeLabel":"string"},"fqn":{"type":"string","description":"Fully Qualified Name uniquely identifying the model version.","isRequired":true,"uniqueKey":"data.oneOf.22.fqn","typeLabel":"string"},"created_by_subject":{"type":"object","title":"Subject","description":"Subject (user, team, or service account) that created the model version.","required":["subjectId","subjectType"],"x-fern-type-name":"Subject","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.22.created_by_subject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.22.created_by_subject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.22.created_by_subject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.22.created_by_subject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.22.created_by_subject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.22.created_by_subject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.22.created_by_subject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.22.created_by_subject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.22.created_by_subject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.22.created_by_subject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.22.created_by_subject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.22.created_by_subject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.22.created_by_subject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.22.created_by_subject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.22.created_by_subject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.22.created_by_subject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.22.created_by_subject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.oneOf.22.created_by_subject","typeLabel":"Subject · object"},"ml_repo_id":{"type":"string","description":"Identifier of the ML Repo the model version belongs to.","isRequired":true,"uniqueKey":"data.oneOf.22.ml_repo_id","typeLabel":"string"},"model_id":{"type":"string","description":"Identifier of the model this version belongs to.","isRequired":true,"uniqueKey":"data.oneOf.22.model_id","typeLabel":"string"},"created_at":{"oneOf":[{"format":"date-time","type":"string","description":"Timestamp when the model version was created.","uniqueKey":"data.oneOf.22.created_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Timestamp when the model version was created.","uniqueKey":"data.oneOf.22.created_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.22.created_at","typeLabel":"string\u003cdate-time> | null"},"updated_at":{"oneOf":[{"format":"date-time","type":"string","description":"Timestamp when the model version was last updated.","uniqueKey":"data.oneOf.22.updated_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Timestamp when the model version was last updated.","uniqueKey":"data.oneOf.22.updated_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.22.updated_at","typeLabel":"string\u003cdate-time> | null"},"usage_code_snippet":{"oneOf":[{"type":"string","description":"Code snippet showing how to use the model version.","uniqueKey":"data.oneOf.22.usage_code_snippet.oneOf.0","typeLabel":"string"},{"type":"null","description":"Code snippet showing how to use the model version.","uniqueKey":"data.oneOf.22.usage_code_snippet.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.22.usage_code_snippet","typeLabel":"string | null"},"tags":{"description":"Tags associated with the model version.","default":[],"type":"array","items":{"type":"string","uniqueKey":"data.oneOf.22.tags.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.22.tags","typeLabel":"string[]"},"metrics":{"oneOf":[{"description":"Metrics logged for the model version.","type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Name of the metric.","isRequired":true,"uniqueKey":"data.oneOf.22.metrics.oneOf.0.items.[INDEX].key","typeLabel":"string"},"value":{"oneOf":[{"type":"number","description":"Numeric value of the metric.","uniqueKey":"data.oneOf.22.metrics.oneOf.0.items.[INDEX].value.oneOf.0","typeLabel":"number"},{"type":"null","description":"Numeric value of the metric.","uniqueKey":"data.oneOf.22.metrics.oneOf.0.items.[INDEX].value.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.22.metrics.oneOf.0.items.[INDEX].value","typeLabel":"number | null"},"timestamp":{"oneOf":[{"type":"number","description":"Unix timestamp in milliseconds when the metric was logged.","uniqueKey":"data.oneOf.22.metrics.oneOf.0.items.[INDEX].timestamp.oneOf.0","typeLabel":"number"},{"type":"null","description":"Unix timestamp in milliseconds when the metric was logged.","uniqueKey":"data.oneOf.22.metrics.oneOf.0.items.[INDEX].timestamp.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.22.metrics.oneOf.0.items.[INDEX].timestamp","typeLabel":"number | null"},"step":{"oneOf":[{"type":"number","description":"Training step at which the metric was logged.","uniqueKey":"data.oneOf.22.metrics.oneOf.0.items.[INDEX].step.oneOf.0","typeLabel":"number"},{"type":"null","description":"Training step at which the metric was logged.","uniqueKey":"data.oneOf.22.metrics.oneOf.0.items.[INDEX].step.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.22.metrics.oneOf.0.items.[INDEX].step","typeLabel":"number | null"}},"required":["key"],"title":"Metric","x-fern-type-name":"Metric","uniqueKey":"data.oneOf.22.metrics.oneOf.0.items.[INDEX]","typeLabel":"Metric · object"},"uniqueKey":"data.oneOf.22.metrics.oneOf.0","typeLabel":"Metric · object[]"},{"description":"Metrics logged for the model version.","type":"null","items":{"type":"object","properties":{"key":{"type":"string","description":"Name of the metric."},"value":{"oneOf":[{"type":"number","description":"Numeric value of the metric."},{"type":"null","description":"Numeric value of the metric."}]},"timestamp":{"oneOf":[{"type":"number","description":"Unix timestamp in milliseconds when the metric was logged."},{"type":"null","description":"Unix timestamp in milliseconds when the metric was logged."}]},"step":{"oneOf":[{"type":"number","description":"Training step at which the metric was logged."},{"type":"null","description":"Training step at which the metric was logged."}]}},"required":["key"],"title":"Metric","x-fern-type-name":"Metric"},"uniqueKey":"data.oneOf.22.metrics.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.22.metrics","typeLabel":"Metric · object[] | null"},"deployable":{"oneOf":[{"type":"boolean","description":"Whether the model version can be deployed.","default":false,"uniqueKey":"data.oneOf.22.deployable.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether the model version can be deployed.","default":false,"uniqueKey":"data.oneOf.22.deployable.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.22.deployable","typeLabel":"boolean | null"}},"uniqueKey":"data.oneOf.22","typeLabel":"ModelVersion · object"},{"type":"object","title":"PromptVersion","description":"The created or updated resource","required":["manifest","id","fqn","created_by_subject","ml_repo_id","prompt_id"],"x-fern-type-name":"PromptVersion","properties":{"manifest":{"type":"object","title":"ChatPromptManifest","description":"Manifest describing the prompt version.","required":["type","messages","metadata"],"x-fern-type-name":"ChatPromptManifest","properties":{"metadata":{"description":"Key value metadata. Should be valid JSON. For e.g. `{\"business-unit\": \"sales\", \"quality\": \"good\", \"rating\": 4.5}`","type":"object","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.metadata","typeLabel":"object"},"type":{"description":"Type of the prompt","type":"string","enum":["chat_prompt"],"default":"chat_prompt","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.type","typeLabel":"enum\u003cstring>"},"messages":{"description":"List of messages in the chat conversation, must be non-empty","type":"array","items":{"oneOf":[{"type":"object","title":"SystemMessage","description":"System message for the chat","required":["role","content"],"x-fern-type-name":"ChatMessageTurn","properties":{"role":{"description":"Role of the message","type":"string","enum":["system"],"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"oneOf":[{"type":"string","description":"Text content for the system message","pattern":"^.[\\s\\S]*$","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.0.content.oneOf.0","typeLabel":"string"},{"type":"object","title":"BlobStorageReference","description":"Text content for the system message","required":["type","path","mime_type"],"x-fern-type-name":"BlobStorageReference","properties":{"type":{"description":"+value=blob-storage","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.0.content.oneOf.1.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the content in blob storage","type":"string","pattern":"^.{1,}$","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.0.content.oneOf.1.path","typeLabel":"string"},"mime_type":{"description":"MIME type of the content","type":"string","enum":["text/plain","application/json","image/png","image/jpeg","application/x-directory"],"title":"MimeType","x-fern-type-name":"MimeType","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.0.content.oneOf.1.mime_type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.0.content.oneOf.1","typeLabel":"BlobStorageReference · object"}],"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.0.content","typeLabel":"string | BlobStorageReference · object"},"name":{"description":"Name of the system","type":"string","uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.0.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.0","typeLabel":"SystemMessage · object"},{"type":"object","title":"AssistantMessage","description":"Assistant message turn","required":["role"],"x-fern-type-name":"ChatMessageTurn","properties":{"role":{"description":"Role of the message","type":"string","enum":["assistant"],"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"content":{"oneOf":[{"type":"string","description":"Text content for the assistant message","uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content.oneOf.0","typeLabel":"string"},{"type":"array","items":{"oneOf":[{"type":"object","title":"TextContentPart","description":"Text content for the message","required":["type","text"],"x-fern-type-name":"TextContentPart","properties":{"type":{"description":"Type of the content part","type":"string","enum":["text"],"default":"text","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"oneOf":[{"type":"string","description":"Text content for the message","pattern":"^.[\\s\\S]*$","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.0.text.oneOf.0","typeLabel":"string"},{"type":"object","title":"BlobStorageReference","description":"Text content for the message","required":["type","path","mime_type"],"x-fern-type-name":"BlobStorageReference","properties":{"type":{"description":"+value=blob-storage","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.0.text.oneOf.1.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the content in blob storage","type":"string","pattern":"^.{1,}$","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.0.text.oneOf.1.path","typeLabel":"string"},"mime_type":{"description":"MIME type of the content","type":"string","enum":["text/plain","application/json","image/png","image/jpeg","application/x-directory"],"title":"MimeType","x-fern-type-name":"MimeType","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.0.text.oneOf.1.mime_type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.0.text.oneOf.1","typeLabel":"BlobStorageReference · object"}],"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.0.text","typeLabel":"string | BlobStorageReference · object"}},"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.0","typeLabel":"TextContentPart · object"},{"type":"object","title":"RefusalContentPart","required":["type","refusal"],"x-fern-type-name":"RefusalContentPart","properties":{"type":{"description":"Type of the content part","type":"string","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.1.type","typeLabel":"string"},"refusal":{"description":"Reason","type":"string","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.1.refusal","typeLabel":"string"}},"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX].oneOf.1","typeLabel":"RefusalContentPart · object"}],"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content.oneOf.1.items.[INDEX]","typeLabel":"TextContentPart · object | RefusalContentPart · object"},"description":"Text content for the assistant message","uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content.oneOf.1","typeLabel":"(TextContentPart · object | RefusalContentPart · object)[]"},{"type":"object","title":"BlobStorageReference","description":"Text content for the assistant message","required":["type","path","mime_type"],"x-fern-type-name":"BlobStorageReference","properties":{"type":{"description":"+value=blob-storage","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content.oneOf.2.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the content in blob storage","type":"string","pattern":"^.{1,}$","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content.oneOf.2.path","typeLabel":"string"},"mime_type":{"description":"MIME type of the content","type":"string","enum":["text/plain","application/json","image/png","image/jpeg","application/x-directory"],"title":"MimeType","x-fern-type-name":"MimeType","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content.oneOf.2.mime_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content.oneOf.2","typeLabel":"BlobStorageReference · object"}],"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.content","typeLabel":"string | (TextContentPart · object | RefusalContentPart · object)[] | BlobStorageReference · object"},"tool_calls":{"description":"List of tool calls made by the assistant","type":"array","items":{"type":"object","required":["type","id","function"],"properties":{"type":{"description":"Type of the tool call","type":"string","enum":["function"],"default":"function","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"id":{"description":"Unique identifier for the tool call","type":"string","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].id","typeLabel":"string"},"function":{"type":"object","required":["name","arguments"],"properties":{"name":{"description":"Name of the tool/function being called","type":"string","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].function.name","typeLabel":"string"},"arguments":{"description":"Arguments passed to the tool/function","type":"string","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].function.arguments","typeLabel":"string"}},"title":"Function","x-fern-type-name":"Function","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].function","typeLabel":"Function · object"}},"title":"ToolCall","x-fern-type-name":"ToolCall","uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.tool_calls.items.[INDEX]","typeLabel":"ToolCall · object"},"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.tool_calls","typeLabel":"ToolCall · object[]"},"name":{"description":"Name of the assistant this message is from","type":"string","uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.1","typeLabel":"AssistantMessage · object"},{"type":"object","title":"UserMessage","description":"User message turn","required":["role","content"],"x-fern-type-name":"ChatMessageTurn","properties":{"role":{"description":"Role of the message","type":"string","enum":["user"],"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"content":{"oneOf":[{"type":"string","description":"Content of the user message. can be a mix of text and images","pattern":"^.[\\s\\S]*$","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.0","typeLabel":"string"},{"type":"array","items":{"oneOf":[{"type":"object","title":"TextContentPart","description":"Text content for the message","required":["type","text"],"x-fern-type-name":"TextContentPart","properties":{"type":{"description":"Type of the content part","type":"string","enum":["text"],"default":"text","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"oneOf":[{"type":"string","description":"Text content for the message","pattern":"^.[\\s\\S]*$","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.0.text.oneOf.0","typeLabel":"string"},{"type":"object","title":"BlobStorageReference","description":"Text content for the message","required":["type","path","mime_type"],"x-fern-type-name":"BlobStorageReference","properties":{"type":{"description":"+value=blob-storage","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.0.text.oneOf.1.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the content in blob storage","type":"string","pattern":"^.{1,}$","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.0.text.oneOf.1.path","typeLabel":"string"},"mime_type":{"description":"MIME type of the content","type":"string","enum":["text/plain","application/json","image/png","image/jpeg","application/x-directory"],"title":"MimeType","x-fern-type-name":"MimeType","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.0.text.oneOf.1.mime_type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.0.text.oneOf.1","typeLabel":"BlobStorageReference · object"}],"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.0.text","typeLabel":"string | BlobStorageReference · object"}},"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.0","typeLabel":"TextContentPart · object"},{"type":"object","title":"ImageContentPart","description":"Image content for the message","required":["type","image_url"],"x-fern-type-name":"ImageContentPart","properties":{"type":{"description":"Type of the content part","type":"string","enum":["image_url"],"default":"image_url","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"image_url":{"description":"Image URL linking to the image","type":"object","required":["url"],"properties":{"url":{"oneOf":[{"type":"string","description":"Image URL linking to the image","pattern":"^\b((https?://)?(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\\+.~#?\u0026/=]*)|data:image/[a-zA-Z]+;base64,[a-zA-Z0-9+/=\\s]+)$","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1.image_url.url.oneOf.0","typeLabel":"string"},{"type":"object","title":"BlobStorageReference","description":"Image URL linking to the image","required":["type","path","mime_type"],"x-fern-type-name":"BlobStorageReference","properties":{"type":{"description":"+value=blob-storage","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1.image_url.url.oneOf.1.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the content in blob storage","type":"string","pattern":"^.{1,}$","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1.image_url.url.oneOf.1.path","typeLabel":"string"},"mime_type":{"description":"MIME type of the content","type":"string","enum":["text/plain","application/json","image/png","image/jpeg","application/x-directory"],"title":"MimeType","x-fern-type-name":"MimeType","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1.image_url.url.oneOf.1.mime_type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1.image_url.url.oneOf.1","typeLabel":"BlobStorageReference · object"}],"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1.image_url.url","typeLabel":"string | BlobStorageReference · object"},"detail":{"description":"Details","type":"string","uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1.image_url.detail","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1.image_url","typeLabel":"object"}},"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX].oneOf.1","typeLabel":"ImageContentPart · object"}],"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1.items.[INDEX]","typeLabel":"TextContentPart · object | ImageContentPart · object"},"description":"Content of the user message. can be a mix of text and images","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.1","typeLabel":"(TextContentPart · object | ImageContentPart · object)[]"},{"type":"object","title":"BlobStorageReference","description":"Content of the user message. can be a mix of text and images","required":["type","path","mime_type"],"x-fern-type-name":"BlobStorageReference","properties":{"type":{"description":"+value=blob-storage","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.2.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the content in blob storage","type":"string","pattern":"^.{1,}$","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.2.path","typeLabel":"string"},"mime_type":{"description":"MIME type of the content","type":"string","enum":["text/plain","application/json","image/png","image/jpeg","application/x-directory"],"title":"MimeType","x-fern-type-name":"MimeType","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.2.mime_type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content.oneOf.2","typeLabel":"BlobStorageReference · object"}],"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.content","typeLabel":"string | (TextContentPart · object | ImageContentPart · object)[] | BlobStorageReference · object"},"name":{"description":"Name of the user this message is from","type":"string","uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.2","typeLabel":"UserMessage · object"},{"type":"object","title":"ToolMessage","description":"Tool message for the chat","required":["role","content","tool_call_id"],"x-fern-type-name":"ChatMessageTurn","properties":{"role":{"description":"Role of the message","type":"string","enum":["tool"],"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.3.role","typeLabel":"enum\u003cstring>"},"content":{"oneOf":[{"type":"string","description":"Content of the tool call result","pattern":"^.[\\s\\S]*$","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.3.content.oneOf.0","typeLabel":"string"},{"type":"object","title":"BlobStorageReference","description":"Content of the tool call result","required":["type","path","mime_type"],"x-fern-type-name":"BlobStorageReference","properties":{"type":{"description":"+value=blob-storage","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.3.content.oneOf.1.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the content in blob storage","type":"string","pattern":"^.{1,}$","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.3.content.oneOf.1.path","typeLabel":"string"},"mime_type":{"description":"MIME type of the content","type":"string","enum":["text/plain","application/json","image/png","image/jpeg","application/x-directory"],"title":"MimeType","x-fern-type-name":"MimeType","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.3.content.oneOf.1.mime_type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.3.content.oneOf.1","typeLabel":"BlobStorageReference · object"}],"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.3.content","typeLabel":"string | BlobStorageReference · object"},"tool_call_id":{"description":"Unique identifier for the tool call","type":"string","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.3.tool_call_id","typeLabel":"string"}},"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.3","typeLabel":"ToolMessage · object"},{"type":"object","title":"DeveloperMessage","description":"Developer message for the chat","required":["role","content"],"x-fern-type-name":"ChatMessageTurn","properties":{"role":{"description":"The role of the messages author, in this case developer.","type":"string","enum":["developer"],"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.4.role","typeLabel":"enum\u003cstring>"},"content":{"oneOf":[{"type":"string","description":"The contents of the developer message.","pattern":"^.[\\s\\S]*$","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.4.content.oneOf.0","typeLabel":"string"},{"type":"object","title":"BlobStorageReference","description":"The contents of the developer message.","required":["type","path","mime_type"],"x-fern-type-name":"BlobStorageReference","properties":{"type":{"description":"+value=blob-storage","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.4.content.oneOf.1.type","typeLabel":"enum\u003cstring>"},"path":{"description":"Path to the content in blob storage","type":"string","pattern":"^.{1,}$","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.4.content.oneOf.1.path","typeLabel":"string"},"mime_type":{"description":"MIME type of the content","type":"string","enum":["text/plain","application/json","image/png","image/jpeg","application/x-directory"],"title":"MimeType","x-fern-type-name":"MimeType","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.4.content.oneOf.1.mime_type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.4.content.oneOf.1","typeLabel":"BlobStorageReference · object"}],"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.4.content","typeLabel":"string | BlobStorageReference · object"},"name":{"description":"An optional name for the participant.","type":"string","uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.4.name","typeLabel":"string"}},"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX].oneOf.4","typeLabel":"DeveloperMessage · object"}],"uniqueKey":"data.oneOf.23.manifest.messages.items.[INDEX]","typeLabel":"SystemMessage · object | AssistantMessage · object | UserMessage · object | ToolMessage · object | DeveloperMessage · object"},"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.messages","typeLabel":"(SystemMessage · object | AssistantMessage · object | UserMessage · object | ToolMessage · object | DeveloperMessage · object)[]"},"name":{"description":"Name of the entity","type":"string","maxLength":256,"pattern":"^[A-Za-z0-9_\\-]+$","uniqueKey":"data.oneOf.23.manifest.name","typeLabel":"string"},"ml_repo":{"description":"Name of the ML Repo","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,98}[a-zA-Z0-9]$","uniqueKey":"data.oneOf.23.manifest.ml_repo","typeLabel":"string"},"version":{"description":"Version of the entity","type":"integer","minimum":1,"uniqueKey":"data.oneOf.23.manifest.version","typeLabel":"integer"},"description":{"oneOf":[{"description":"Description","type":"string","maxLength":512,"uniqueKey":"data.oneOf.23.manifest.description.oneOf.0","typeLabel":"string"},{"description":"Description","type":"null","maxLength":512,"uniqueKey":"data.oneOf.23.manifest.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.23.manifest.description","typeLabel":"string | null"},"version_alias":{"description":"Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)","type":"string","maxLength":128,"pattern":"^v[a-zA-Z0-9.-]*([a-zA-Z0-9]+)$","uniqueKey":"data.oneOf.23.manifest.version_alias","typeLabel":"string"},"variables":{"description":"Variables referenced in messages and that can be replaced when running generation","type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.23.manifest.variables.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.23.manifest.variables.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.23.manifest.variables.additionalProperties","typeLabel":"string | null"},"uniqueKey":"data.oneOf.23.manifest.variables","typeLabel":"object"},"model_configuration":{"description":"Add a model from Gateway along with parameters to be used for chat completion","type":"object","required":["provider","model"],"properties":{"provider":{"description":"Name of the provider, must be one of the integration providers configured for the Gateway","type":"string","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.model_configuration.provider","typeLabel":"string"},"model":{"description":"Name of the model to be used for generations. This model should be available in the provider","type":"string","pattern":"^[a-zA-Z](?:[a-zA-Z0-9\\-.]{0,60}[a-zA-Z0-9])$","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.model_configuration.model","typeLabel":"string"},"parameters":{"description":"Parameters to pass to the model when generating","type":"object","properties":{"max_tokens":{"type":"integer","uniqueKey":"data.oneOf.23.manifest.model_configuration.parameters.max_tokens","typeLabel":"integer"},"temperature":{"type":"number","uniqueKey":"data.oneOf.23.manifest.model_configuration.parameters.temperature","typeLabel":"number"},"top_k":{"type":"number","uniqueKey":"data.oneOf.23.manifest.model_configuration.parameters.top_k","typeLabel":"number"},"top_p":{"type":"number","uniqueKey":"data.oneOf.23.manifest.model_configuration.parameters.top_p","typeLabel":"number"},"stop":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"data.oneOf.23.manifest.model_configuration.parameters.stop.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.23.manifest.model_configuration.parameters.stop.oneOf.0","typeLabel":"string[]"},{"type":"string","uniqueKey":"data.oneOf.23.manifest.model_configuration.parameters.stop.oneOf.1","typeLabel":"string"}],"uniqueKey":"data.oneOf.23.manifest.model_configuration.parameters.stop","typeLabel":"string[] | string"}},"title":"Parameters","x-fern-type-name":"Parameters","uniqueKey":"data.oneOf.23.manifest.model_configuration.parameters","typeLabel":"Parameters · object"},"extra_parameters":{"description":"Arbitrary extra parameters to pass to the model when generating","type":"object","uniqueKey":"data.oneOf.23.manifest.model_configuration.extra_parameters","typeLabel":"object"}},"title":"ModelConfiguration","x-fern-type-name":"ModelConfiguration","uniqueKey":"data.oneOf.23.manifest.model_configuration","typeLabel":"ModelConfiguration · object"},"tools":{"description":"List of tools to be used in the chat prompt","type":"array","items":{"description":"Schema defining a tool for the chat prompt","type":"object","required":["type","function"],"properties":{"type":{"description":"Type of the tool","type":"string","enum":["function"],"default":"function","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.tools.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"function":{"description":"Schema defining a function for tool calls","type":"object","required":["name"],"properties":{"name":{"description":"Name of the function","type":"string","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.tools.items.[INDEX].function.name","typeLabel":"string"},"description":{"description":"Description of the function","type":"string","uniqueKey":"data.oneOf.23.manifest.tools.items.[INDEX].function.description","typeLabel":"string"},"parameters":{"description":"Parameters schema for the function","type":"object","uniqueKey":"data.oneOf.23.manifest.tools.items.[INDEX].function.parameters","typeLabel":"object"},"strict":{"description":"Indicates if the function should be called strictly","type":"boolean","default":false,"uniqueKey":"data.oneOf.23.manifest.tools.items.[INDEX].function.strict","typeLabel":"boolean"}},"title":"FunctionSchema","x-fern-type-name":"FunctionSchema","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.tools.items.[INDEX].function","typeLabel":"FunctionSchema · object"}},"title":"ToolSchema","x-fern-type-name":"ToolSchema","uniqueKey":"data.oneOf.23.manifest.tools.items.[INDEX]","typeLabel":"ToolSchema · object"},"uniqueKey":"data.oneOf.23.manifest.tools","typeLabel":"ToolSchema · object[]"},"guardrails":{"description":"Guardrails","type":"object","properties":{"input_guardrails":{"description":"List of guardrail names to apply to user input messages before processing.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.23.manifest.guardrails.input_guardrails.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.23.manifest.guardrails.input_guardrails","typeLabel":"string[]"},"output_guardrails":{"description":"List of guardrail names to apply to AI response messages before returning to user.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.23.manifest.guardrails.output_guardrails.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.23.manifest.guardrails.output_guardrails","typeLabel":"string[]"}},"title":"Guardrails","x-fern-type-name":"Guardrails","uniqueKey":"data.oneOf.23.manifest.guardrails","typeLabel":"Guardrails · object"},"response_format":{"oneOf":[{"type":"object","title":"JsonObjectResponseFormat","description":"Simple JSON mode response format","required":["type"],"x-fern-type-name":"JsonObjectResponseFormat","properties":{"type":{"description":"Type of response format","type":"string","enum":["json_object"],"default":"json_object","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.response_format.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.oneOf.23.manifest.response_format.oneOf.0","typeLabel":"JsonObjectResponseFormat · object"},{"type":"object","title":"JsonSchemaResponseFormat","description":"Structured JSON response format with schema validation","required":["type","json_schema"],"x-fern-type-name":"JsonSchemaResponseFormat","properties":{"type":{"description":"Type of response format","type":"string","enum":["json_schema"],"default":"json_schema","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.response_format.oneOf.1.type","typeLabel":"enum\u003cstring>"},"json_schema":{"description":"JSON schema for structured output","type":"object","required":["name","schema"],"properties":{"name":{"description":"Name of the schema","type":"string","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.response_format.oneOf.1.json_schema.name","typeLabel":"string"},"schema":{"description":"JSON schema object defining the expected structure","type":"object","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.response_format.oneOf.1.json_schema.schema","typeLabel":"object"}},"title":"JsonSchema","x-fern-type-name":"JsonSchema","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.response_format.oneOf.1.json_schema","typeLabel":"JsonSchema · object"}},"uniqueKey":"data.oneOf.23.manifest.response_format.oneOf.1","typeLabel":"JsonSchemaResponseFormat · object"}],"uniqueKey":"data.oneOf.23.manifest.response_format","typeLabel":"JsonObjectResponseFormat · object | JsonSchemaResponseFormat · object"},"routing_config":{"oneOf":[{"type":"object","title":"WeightBasedLoadBalancing","description":"Weight-based Load Balancing","required":["type","load_balance_targets"],"x-fern-type-name":"WeightBasedLoadBalancing","properties":{"type":{"description":"Routing Type","type":"string","enum":["weight-based-routing"],"default":"weight-based-routing","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"load_balance_targets":{"description":"List of targets for load balancing with weights","type":"array","items":{"description":"Weight-based Target","type":"object","required":["target","weight"],"properties":{"target":{"description":"Target model or provider FQN","type":"string","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX].target","typeLabel":"string"},"weight":{"description":"Relative weight for routing decisions (higher values mean more traffic)","type":"integer","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX].weight","typeLabel":"integer"},"retry_config":{"type":"object","required":["attempts"],"properties":{"attempts":{"description":"Number of attempts to retry the request","type":"integer","minimum":0,"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX].retry_config.attempts","typeLabel":"integer"},"delay":{"description":"Delay between retries in milliseconds","type":"integer","minimum":0,"exclusiveMinimum":true,"default":100,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX].retry_config.delay","typeLabel":"integer"},"on_status_codes":{"description":"Status codes to retry on","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX].retry_config.on_status_codes.items.[INDEX]","typeLabel":"string"},"default":["429","500","502","503"],"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX].retry_config.on_status_codes","typeLabel":"string[]"}},"title":"RetryConfig","x-fern-type-name":"RetryConfig","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX].retry_config","typeLabel":"RetryConfig · object"},"fallback_status_codes":{"description":"Status Codes for which the request will fallback to other targets. If the status code is not present in fallback_status_codes, it fails immediately.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX].fallback_status_codes.items.[INDEX]","typeLabel":"string"},"default":["401","403","404","408","429","500","502","503"],"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX].fallback_status_codes","typeLabel":"string[]"},"fallback_candidate":{"description":"Whether this target is a fallback candidate. If set to false, this model will not be considered as a fallback option for targets of this load-balance-rule","type":"boolean","default":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX].fallback_candidate","typeLabel":"boolean"},"override_params":{"description":"Optional parameters to override in the request","type":"object","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX].override_params","typeLabel":"object"},"headers_override":{"description":"Headers Override","type":"object","properties":{"remove":{"description":"List of headers to remove from upstream request","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX].headers_override.remove.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX].headers_override.remove","typeLabel":"string[]"},"set":{"description":"Headers to add or overwrite in upstream request","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX].headers_override.set.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX].headers_override.set","typeLabel":"object"}},"title":"HeadersOverride","x-fern-type-name":"HeadersOverride","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX].headers_override","typeLabel":"HeadersOverride · object"},"metadata_match":{"description":"Optional metadata key-value pairs that must match incoming request metadata headers for this target to be considered for routing.","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX].metadata_match.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX].metadata_match","typeLabel":"object"}},"title":"LoadBalanceTarget","x-fern-type-name":"LoadBalanceTarget","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets.items.[INDEX]","typeLabel":"LoadBalanceTarget · object"},"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.load_balance_targets","typeLabel":"LoadBalanceTarget · object[]"},"sticky_routing":{"description":"Sticky Routing","type":"object","required":["ttl_seconds","session_identifiers"],"properties":{"ttl_seconds":{"description":"Sticky mapping TTL in seconds","type":"integer","minimum":1800,"maximum":86400,"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.sticky_routing.ttl_seconds","typeLabel":"integer"},"session_identifiers":{"description":"List of identifier selectors used to build sticky key","type":"array","items":{"description":"Sticky Session Identifier","type":"object","required":["source","key"],"properties":{"source":{"description":"Source from which session identifier value will be extracted","type":"string","enum":["headers","metadata"],"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.sticky_routing.session_identifiers.items.[INDEX].source","typeLabel":"enum\u003cstring>"},"key":{"description":"Key to read from selected source","type":"string","pattern":"^[!#$%\u0026'*+.^_`|~0-9A-Za-z-]{1,128}$","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.sticky_routing.session_identifiers.items.[INDEX].key","typeLabel":"string"}},"title":"StickySessionIdentifier","x-fern-type-name":"StickySessionIdentifier","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.sticky_routing.session_identifiers.items.[INDEX]","typeLabel":"StickySessionIdentifier · object"},"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.sticky_routing.session_identifiers","typeLabel":"StickySessionIdentifier · object[]"}},"title":"StickyRouting","x-fern-type-name":"StickyRouting","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0.sticky_routing","typeLabel":"StickyRouting · object"}},"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.0","typeLabel":"WeightBasedLoadBalancing · object"},{"type":"object","title":"LatencyBasedLoadBalancing","description":"Latency-based Load Balancing","required":["type","load_balance_targets"],"x-fern-type-name":"LatencyBasedLoadBalancing","properties":{"type":{"description":"Routing Type","type":"string","enum":["latency-based-routing"],"default":"latency-based-routing","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"load_balance_targets":{"description":"List of targets for latency-based load balancing","type":"array","items":{"description":"Latency-based Target","type":"object","required":["target"],"properties":{"target":{"description":"Target model or provider FQN","type":"string","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets.items.[INDEX].target","typeLabel":"string"},"retry_config":{"type":"object","required":["attempts"],"properties":{"attempts":{"description":"Number of attempts to retry the request","type":"integer","minimum":0,"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets.items.[INDEX].retry_config.attempts","typeLabel":"integer"},"delay":{"description":"Delay between retries in milliseconds","type":"integer","minimum":0,"exclusiveMinimum":true,"default":100,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets.items.[INDEX].retry_config.delay","typeLabel":"integer"},"on_status_codes":{"description":"Status codes to retry on","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets.items.[INDEX].retry_config.on_status_codes.items.[INDEX]","typeLabel":"string"},"default":["429","500","502","503"],"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets.items.[INDEX].retry_config.on_status_codes","typeLabel":"string[]"}},"title":"RetryConfig","x-fern-type-name":"RetryConfig","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets.items.[INDEX].retry_config","typeLabel":"RetryConfig · object"},"fallback_status_codes":{"description":"Status Codes for which the request will fallback to other targets. If the status code is not present in fallback_status_codes, it fails immediately.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets.items.[INDEX].fallback_status_codes.items.[INDEX]","typeLabel":"string"},"default":["401","403","404","408","429","500","502","503"],"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets.items.[INDEX].fallback_status_codes","typeLabel":"string[]"},"fallback_candidate":{"description":"Whether this target is a fallback candidate. If set to false, this model will not be considered as a fallback option for targets of this load-balance-rule","type":"boolean","default":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets.items.[INDEX].fallback_candidate","typeLabel":"boolean"},"override_params":{"description":"Optional parameters to override in the request","type":"object","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets.items.[INDEX].override_params","typeLabel":"object"},"headers_override":{"description":"Headers Override","type":"object","properties":{"remove":{"description":"List of headers to remove from upstream request","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets.items.[INDEX].headers_override.remove.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets.items.[INDEX].headers_override.remove","typeLabel":"string[]"},"set":{"description":"Headers to add or overwrite in upstream request","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets.items.[INDEX].headers_override.set.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets.items.[INDEX].headers_override.set","typeLabel":"object"}},"title":"HeadersOverride","x-fern-type-name":"HeadersOverride","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets.items.[INDEX].headers_override","typeLabel":"HeadersOverride · object"},"metadata_match":{"description":"Optional metadata key-value pairs that must match incoming request metadata headers for this target to be considered for routing.","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets.items.[INDEX].metadata_match.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets.items.[INDEX].metadata_match","typeLabel":"object"}},"title":"LatencyBasedLoadBalanceTarget","x-fern-type-name":"LatencyBasedLoadBalanceTarget","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets.items.[INDEX]","typeLabel":"LatencyBasedLoadBalanceTarget · object"},"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1.load_balance_targets","typeLabel":"LatencyBasedLoadBalanceTarget · object[]"}},"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.1","typeLabel":"LatencyBasedLoadBalancing · object"},{"type":"object","title":"PriorityBasedLoadBalancing","description":"Priority-based Load Balancing","required":["type","load_balance_targets"],"x-fern-type-name":"PriorityBasedLoadBalancing","properties":{"type":{"description":"Routing Type","type":"string","enum":["priority-based-routing"],"default":"priority-based-routing","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.type","typeLabel":"enum\u003cstring>"},"load_balance_targets":{"description":"List of targets for priority-based load balancing","type":"array","items":{"type":"object","required":["target","priority"],"properties":{"target":{"description":"Target model or provider FQN","type":"string","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].target","typeLabel":"string"},"priority":{"description":"Priority for the target, Lower the number, higher the priority (0 is the highest priority)","type":"integer","minimum":0,"default":0,"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].priority","typeLabel":"integer"},"sla_cutoff":{"type":"object","properties":{"time_per_output_token_ms":{"description":"Time per output token threshold in milliseconds. If time per output token exceeds this value, the target will be marked as unhealthy","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].sla_cutoff.time_per_output_token_ms","typeLabel":"integer"},"time_to_first_token_ms":{"description":"Time to first token threshold in milliseconds. If time to first token exceeds this value, the target will be marked as unhealthy","type":"integer","minimum":0,"exclusiveMinimum":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].sla_cutoff.time_to_first_token_ms","typeLabel":"integer"}},"title":"SLACutoff","x-fern-type-name":"SLACutoff","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].sla_cutoff","typeLabel":"SLACutoff · object"},"retry_config":{"type":"object","required":["attempts"],"properties":{"attempts":{"description":"Number of attempts to retry the request","type":"integer","minimum":0,"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].retry_config.attempts","typeLabel":"integer"},"delay":{"description":"Delay between retries in milliseconds","type":"integer","minimum":0,"exclusiveMinimum":true,"default":100,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].retry_config.delay","typeLabel":"integer"},"on_status_codes":{"description":"Status codes to retry on","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].retry_config.on_status_codes.items.[INDEX]","typeLabel":"string"},"default":["429","500","502","503"],"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].retry_config.on_status_codes","typeLabel":"string[]"}},"title":"RetryConfig","x-fern-type-name":"RetryConfig","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].retry_config","typeLabel":"RetryConfig · object"},"fallback_status_codes":{"description":"Status Codes for which the request will fallback to other targets. If the status code is not present in fallback_status_codes, it fails immediately.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].fallback_status_codes.items.[INDEX]","typeLabel":"string"},"default":["401","403","404","408","429","500","502","503"],"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].fallback_status_codes","typeLabel":"string[]"},"fallback_candidate":{"description":"Whether this target is a fallback candidate. If set to false, this model will not be considered as a fallback option for targets of this load-balance-rule","type":"boolean","default":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].fallback_candidate","typeLabel":"boolean"},"override_params":{"description":"Optional parameters to override in the request","type":"object","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].override_params","typeLabel":"object"},"headers_override":{"description":"Headers Override","type":"object","properties":{"remove":{"description":"List of headers to remove from upstream request","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].headers_override.remove.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].headers_override.remove","typeLabel":"string[]"},"set":{"description":"Headers to add or overwrite in upstream request","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].headers_override.set.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].headers_override.set","typeLabel":"object"}},"title":"HeadersOverride","x-fern-type-name":"HeadersOverride","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].headers_override","typeLabel":"HeadersOverride · object"},"metadata_match":{"description":"Optional metadata key-value pairs that must match incoming request metadata headers for this target to be considered for routing.","type":"object","additionalProperties":{"type":"string","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].metadata_match.additionalProperties","typeLabel":"string"},"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX].metadata_match","typeLabel":"object"}},"title":"PriorityBasedLoadBalanceTarget","x-fern-type-name":"PriorityBasedLoadBalanceTarget","uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets.items.[INDEX]","typeLabel":"PriorityBasedLoadBalanceTarget · object"},"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2.load_balance_targets","typeLabel":"PriorityBasedLoadBalanceTarget · object[]"}},"uniqueKey":"data.oneOf.23.manifest.routing_config.oneOf.2","typeLabel":"PriorityBasedLoadBalancing · object"}],"uniqueKey":"data.oneOf.23.manifest.routing_config","typeLabel":"WeightBasedLoadBalancing · object | LatencyBasedLoadBalancing · object | PriorityBasedLoadBalancing · object"},"cache_config":{"oneOf":[{"type":"object","title":"SemanticCacheConfig","description":"Semantic Cache Configuration","required":["type","similarity_threshold","ttl"],"x-fern-type-name":"SemanticCacheConfig","properties":{"type":{"description":"Cache type","type":"string","enum":["semantic"],"default":"semantic","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.cache_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"similarity_threshold":{"description":"Similarity threshold for semantic matching (between 0 and 1)","type":"number","minimum":0,"exclusiveMinimum":true,"maximum":1,"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.cache_config.oneOf.0.similarity_threshold","typeLabel":"number"},"ttl":{"description":"Time-to-live for cached entries in seconds (max 3 days)","type":"number","minimum":0,"exclusiveMinimum":true,"maximum":259200,"default":3600,"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.cache_config.oneOf.0.ttl","typeLabel":"number"},"namespace":{"description":"Cache namespace (defaults to 'default' if not provided)","type":"string","uniqueKey":"data.oneOf.23.manifest.cache_config.oneOf.0.namespace","typeLabel":"string"}},"uniqueKey":"data.oneOf.23.manifest.cache_config.oneOf.0","typeLabel":"SemanticCacheConfig · object"},{"type":"object","title":"ExactMatchCacheConfig","description":"Exact Match Cache Configuration","required":["type","ttl"],"x-fern-type-name":"ExactMatchCacheConfig","properties":{"type":{"description":"Cache type","type":"string","enum":["exact-match"],"default":"exact-match","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.cache_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"ttl":{"description":"Time-to-live for cached entries in seconds (max 3 days)","type":"number","minimum":0,"exclusiveMinimum":true,"maximum":259200,"default":3600,"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.cache_config.oneOf.1.ttl","typeLabel":"number"},"namespace":{"description":"Cache namespace (defaults to 'default' if not provided)","type":"string","uniqueKey":"data.oneOf.23.manifest.cache_config.oneOf.1.namespace","typeLabel":"string"}},"uniqueKey":"data.oneOf.23.manifest.cache_config.oneOf.1","typeLabel":"ExactMatchCacheConfig · object"}],"uniqueKey":"data.oneOf.23.manifest.cache_config","typeLabel":"SemanticCacheConfig · object | ExactMatchCacheConfig · object"},"logging_config":{"description":"Logging configuration for the chat prompt","type":"object","required":["enabled"],"properties":{"enabled":{"description":"Whether logging is enabled for the chat prompt","type":"boolean","default":true,"isRequired":true,"uniqueKey":"data.oneOf.23.manifest.logging_config.enabled","typeLabel":"boolean"},"tracing_project_fqn":{"description":"The FQN of the tracing project where the logs will be stored","type":"string","uniqueKey":"data.oneOf.23.manifest.logging_config.tracing_project_fqn","typeLabel":"string"}},"title":"LoggingConfig","x-fern-type-name":"LoggingConfig","uniqueKey":"data.oneOf.23.manifest.logging_config","typeLabel":"LoggingConfig · object"},"sub_agents":{"description":"Sub agents to be used in the chat prompt","type":"array","items":{"description":"Sub agent configuration for the chat prompt","type":"object","required":["name"],"properties":{"name":{"description":"Name of the sub agent","type":"string","isRequired":true,"uniqueKey":"data.oneOf.23.manifest.sub_agents.items.[INDEX].name","typeLabel":"string"}},"title":"SubAgent","x-fern-type-name":"SubAgent","uniqueKey":"data.oneOf.23.manifest.sub_agents.items.[INDEX]","typeLabel":"SubAgent · object"},"uniqueKey":"data.oneOf.23.manifest.sub_agents","typeLabel":"SubAgent · object[]"}},"isRequired":true,"uniqueKey":"data.oneOf.23.manifest","typeLabel":"ChatPromptManifest · object"},"id":{"type":"string","description":"Unique identifier of the prompt version.","isRequired":true,"uniqueKey":"data.oneOf.23.id","typeLabel":"string"},"fqn":{"type":"string","description":"Fully Qualified Name uniquely identifying the prompt version.","isRequired":true,"uniqueKey":"data.oneOf.23.fqn","typeLabel":"string"},"created_by_subject":{"type":"object","title":"Subject","description":"Subject (user, team, or service account) that created the prompt version.","required":["subjectId","subjectType"],"x-fern-type-name":"Subject","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.23.created_by_subject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.23.created_by_subject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.23.created_by_subject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.23.created_by_subject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.23.created_by_subject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.23.created_by_subject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.23.created_by_subject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.23.created_by_subject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.23.created_by_subject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.23.created_by_subject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.23.created_by_subject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.23.created_by_subject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.23.created_by_subject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.23.created_by_subject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.23.created_by_subject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.23.created_by_subject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.23.created_by_subject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.oneOf.23.created_by_subject","typeLabel":"Subject · object"},"ml_repo_id":{"type":"string","description":"Identifier of the ML Repo the prompt version belongs to.","isRequired":true,"uniqueKey":"data.oneOf.23.ml_repo_id","typeLabel":"string"},"prompt_id":{"type":"string","description":"Identifier of the prompt this version belongs to.","isRequired":true,"uniqueKey":"data.oneOf.23.prompt_id","typeLabel":"string"},"created_at":{"oneOf":[{"format":"date-time","type":"string","description":"Timestamp when the prompt version was created.","uniqueKey":"data.oneOf.23.created_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Timestamp when the prompt version was created.","uniqueKey":"data.oneOf.23.created_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.23.created_at","typeLabel":"string\u003cdate-time> | null"},"updated_at":{"oneOf":[{"format":"date-time","type":"string","description":"Timestamp when the prompt version was last updated.","uniqueKey":"data.oneOf.23.updated_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Timestamp when the prompt version was last updated.","uniqueKey":"data.oneOf.23.updated_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.23.updated_at","typeLabel":"string\u003cdate-time> | null"},"usage_code_snippet":{"oneOf":[{"type":"string","description":"Code snippet showing how to use the prompt version.","uniqueKey":"data.oneOf.23.usage_code_snippet.oneOf.0","typeLabel":"string"},{"type":"null","description":"Code snippet showing how to use the prompt version.","uniqueKey":"data.oneOf.23.usage_code_snippet.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.23.usage_code_snippet","typeLabel":"string | null"},"usage_code_snippets":{"description":"Code snippets showing how to use the prompt version.","default":[],"type":"array","items":{"type":"object","properties":{"display_name":{"type":"string","description":"Display name of the usage code snippet.","isRequired":true,"uniqueKey":"data.oneOf.23.usage_code_snippets.items.[INDEX].display_name","typeLabel":"string"},"language":{"type":"string","description":"Programming language of the usage code snippet.","isRequired":true,"uniqueKey":"data.oneOf.23.usage_code_snippets.items.[INDEX].language","typeLabel":"string"},"code":{"type":"string","description":"Source code of the usage code snippet.","isRequired":true,"uniqueKey":"data.oneOf.23.usage_code_snippets.items.[INDEX].code","typeLabel":"string"},"libraries":{"oneOf":[{"description":"Libraries required to run the usage code snippet.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.23.usage_code_snippets.items.[INDEX].libraries.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.23.usage_code_snippets.items.[INDEX].libraries.oneOf.0","typeLabel":"string[]"},{"description":"Libraries required to run the usage code snippet.","type":"null","items":{"type":"string"},"uniqueKey":"data.oneOf.23.usage_code_snippets.items.[INDEX].libraries.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.23.usage_code_snippets.items.[INDEX].libraries","typeLabel":"string[] | null"},"icon":{"oneOf":[{"type":"string","description":"Icon representing the usage code snippet.","uniqueKey":"data.oneOf.23.usage_code_snippets.items.[INDEX].icon.oneOf.0","typeLabel":"string"},{"type":"null","description":"Icon representing the usage code snippet.","uniqueKey":"data.oneOf.23.usage_code_snippets.items.[INDEX].icon.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.23.usage_code_snippets.items.[INDEX].icon","typeLabel":"string | null"}},"required":["display_name","language","code"],"title":"UsageCodeSnippet","x-fern-type-name":"UsageCodeSnippet","uniqueKey":"data.oneOf.23.usage_code_snippets.items.[INDEX]","typeLabel":"UsageCodeSnippet · object"},"uniqueKey":"data.oneOf.23.usage_code_snippets","typeLabel":"UsageCodeSnippet · object[]"},"tags":{"description":"Tags associated with the prompt version.","default":[],"type":"array","items":{"type":"string","uniqueKey":"data.oneOf.23.tags.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.23.tags","typeLabel":"string[]"}},"uniqueKey":"data.oneOf.23","typeLabel":"PromptVersion · object"},{"type":"object","title":"AgentSkillVersion","description":"The created or updated resource","required":["manifest","id","fqn","created_by_subject","ml_repo_id","agent_skill_id"],"x-fern-type-name":"AgentSkillVersion","properties":{"manifest":{"type":"object","title":"AgentSkillManifest","description":"Manifest describing the agent skill version.","required":["type","name","source","ml_repo","metadata"],"x-fern-type-name":"AgentSkillManifest","properties":{"name":{"type":"string","description":"Name of the skill.","maxLength":64,"minLength":1,"pattern":"^(?!.*anthropic)(?!.*claude)[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$","isRequired":true,"uniqueKey":"data.oneOf.24.manifest.name","typeLabel":"string"},"metadata":{"description":"Key value metadata. Should be valid JSON. For e.g. `{\"business-unit\": \"sales\", \"quality\": \"good\", \"rating\": 4.5}`","type":"object","isRequired":true,"uniqueKey":"data.oneOf.24.manifest.metadata","typeLabel":"object"},"ml_repo":{"type":"string","description":"Name of the repository.","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,98}[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.24.manifest.ml_repo","typeLabel":"string"},"type":{"description":"Type","type":"string","enum":["agent-skill"],"default":"agent-skill","isRequired":true,"uniqueKey":"data.oneOf.24.manifest.type","typeLabel":"enum\u003cstring>"},"source":{"oneOf":[{"type":"object","title":"AgentSkillSourceInline","description":"SKILL.md for this version when using inline source.","required":["type","skill_md"],"x-fern-type-name":"AgentSkillSourceInline","properties":{"type":{"description":"Type","type":"string","enum":["inline"],"default":"inline","isRequired":true,"uniqueKey":"data.oneOf.24.manifest.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"skill_md":{"description":"Main body of SKILL.md file.","type":"string","minLength":1,"maxLength":30000,"isRequired":true,"uniqueKey":"data.oneOf.24.manifest.source.oneOf.0.skill_md","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.24.manifest.source.oneOf.0","typeLabel":"AgentSkillSourceInline · object"},{"type":"object","title":"AgentSkillSourceBlobStorage","description":"SKILL.md content stored on blob","required":["type","description","uri"],"x-fern-type-name":"AgentSkillSourceBlobStorage","properties":{"type":{"description":"Type","type":"string","enum":["blob-storage"],"default":"blob-storage","isRequired":true,"uniqueKey":"data.oneOf.24.manifest.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"description":{"description":"1–1024 chars.","type":"string","minLength":1,"maxLength":1024,"isRequired":true,"uniqueKey":"data.oneOf.24.manifest.source.oneOf.1.description","typeLabel":"string"},"uri":{"description":"Storage URI of the blob storage object where the skill is stored.","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.24.manifest.source.oneOf.1.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.24.manifest.source.oneOf.1","typeLabel":"AgentSkillSourceBlobStorage · object"},{"type":"object","title":"AgentSkillSourceLocal","description":"Load the skill from a local directory. The directory must include SKILL.md with valid YAML front matter.","required":["type","skill_dir"],"x-fern-type-name":"AgentSkillSourceLocal","properties":{"type":{"description":"Type","type":"string","enum":["local"],"default":"local","isRequired":true,"uniqueKey":"data.oneOf.24.manifest.source.oneOf.2.type","typeLabel":"enum\u003cstring>"},"skill_dir":{"description":"Path to the skill root directory, including SKILL.md and related assets.","type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.oneOf.24.manifest.source.oneOf.2.skill_dir","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.24.manifest.source.oneOf.2","typeLabel":"AgentSkillSourceLocal · object"}],"isRequired":true,"uniqueKey":"data.oneOf.24.manifest.source","typeLabel":"AgentSkillSourceInline · object | AgentSkillSourceBlobStorage · object | AgentSkillSourceLocal · object"},"version":{"description":"Version of the entity","type":"integer","minimum":1,"uniqueKey":"data.oneOf.24.manifest.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.oneOf.24.manifest","typeLabel":"AgentSkillManifest · object"},"id":{"type":"string","description":"Unique identifier of the agent skill version.","isRequired":true,"uniqueKey":"data.oneOf.24.id","typeLabel":"string"},"fqn":{"type":"string","description":"Fully Qualified Name uniquely identifying the agent skill version.","isRequired":true,"uniqueKey":"data.oneOf.24.fqn","typeLabel":"string"},"created_by_subject":{"type":"object","title":"Subject","description":"Subject (user, team, or service account) that created the agent skill version.","required":["subjectId","subjectType"],"x-fern-type-name":"Subject","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.24.created_by_subject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.24.created_by_subject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.24.created_by_subject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.24.created_by_subject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.24.created_by_subject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.24.created_by_subject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.24.created_by_subject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.24.created_by_subject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.24.created_by_subject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.24.created_by_subject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.24.created_by_subject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.24.created_by_subject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.24.created_by_subject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.24.created_by_subject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.24.created_by_subject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.24.created_by_subject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.24.created_by_subject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.oneOf.24.created_by_subject","typeLabel":"Subject · object"},"ml_repo_id":{"type":"string","description":"Identifier of the ML Repo the agent skill version belongs to.","isRequired":true,"uniqueKey":"data.oneOf.24.ml_repo_id","typeLabel":"string"},"agent_skill_id":{"type":"string","description":"Identifier of the agent skill this version belongs to.","isRequired":true,"uniqueKey":"data.oneOf.24.agent_skill_id","typeLabel":"string"},"created_at":{"oneOf":[{"format":"date-time","type":"string","description":"Timestamp when the agent skill version was created.","uniqueKey":"data.oneOf.24.created_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Timestamp when the agent skill version was created.","uniqueKey":"data.oneOf.24.created_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.24.created_at","typeLabel":"string\u003cdate-time> | null"},"updated_at":{"oneOf":[{"format":"date-time","type":"string","description":"Timestamp when the agent skill version was last updated.","uniqueKey":"data.oneOf.24.updated_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","description":"Timestamp when the agent skill version was last updated.","uniqueKey":"data.oneOf.24.updated_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.24.updated_at","typeLabel":"string\u003cdate-time> | null"},"usage_code_snippets":{"description":"Code snippets showing how to use the agent skill version.","default":[],"type":"array","items":{"type":"object","properties":{"display_name":{"type":"string","description":"Display name of the usage code snippet.","isRequired":true,"uniqueKey":"data.oneOf.24.usage_code_snippets.items.[INDEX].display_name","typeLabel":"string"},"language":{"type":"string","description":"Programming language of the usage code snippet.","isRequired":true,"uniqueKey":"data.oneOf.24.usage_code_snippets.items.[INDEX].language","typeLabel":"string"},"code":{"type":"string","description":"Source code of the usage code snippet.","isRequired":true,"uniqueKey":"data.oneOf.24.usage_code_snippets.items.[INDEX].code","typeLabel":"string"},"libraries":{"oneOf":[{"description":"Libraries required to run the usage code snippet.","type":"array","items":{"type":"string","uniqueKey":"data.oneOf.24.usage_code_snippets.items.[INDEX].libraries.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.oneOf.24.usage_code_snippets.items.[INDEX].libraries.oneOf.0","typeLabel":"string[]"},{"description":"Libraries required to run the usage code snippet.","type":"null","items":{"type":"string"},"uniqueKey":"data.oneOf.24.usage_code_snippets.items.[INDEX].libraries.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.24.usage_code_snippets.items.[INDEX].libraries","typeLabel":"string[] | null"},"icon":{"oneOf":[{"type":"string","description":"Icon representing the usage code snippet.","uniqueKey":"data.oneOf.24.usage_code_snippets.items.[INDEX].icon.oneOf.0","typeLabel":"string"},{"type":"null","description":"Icon representing the usage code snippet.","uniqueKey":"data.oneOf.24.usage_code_snippets.items.[INDEX].icon.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.24.usage_code_snippets.items.[INDEX].icon","typeLabel":"string | null"}},"required":["display_name","language","code"],"title":"UsageCodeSnippet","x-fern-type-name":"UsageCodeSnippet","uniqueKey":"data.oneOf.24.usage_code_snippets.items.[INDEX]","typeLabel":"UsageCodeSnippet · object"},"uniqueKey":"data.oneOf.24.usage_code_snippets","typeLabel":"UsageCodeSnippet · object[]"}},"uniqueKey":"data.oneOf.24","typeLabel":"AgentSkillVersion · object"},{"type":"object","title":"DataDirectory","description":"The created or updated resource","required":["id","ml_repo_id","name","fqn","created_by_subject","created_at","updated_at","manifest"],"x-fern-type-name":"DataDirectory","properties":{"id":{"type":"string","description":"Unique identifier for the data directory","isRequired":true,"uniqueKey":"data.oneOf.25.id","typeLabel":"string"},"ml_repo_id":{"type":"string","description":"ID of the ML Repo that this data directory belongs to","isRequired":true,"uniqueKey":"data.oneOf.25.ml_repo_id","typeLabel":"string"},"name":{"type":"string","description":"Name of the data directory","isRequired":true,"uniqueKey":"data.oneOf.25.name","typeLabel":"string"},"fqn":{"type":"string","description":"Fully qualified name of the data directory","isRequired":true,"uniqueKey":"data.oneOf.25.fqn","typeLabel":"string"},"created_by_subject":{"type":"object","title":"Subject","description":"Subject that created this data directory","required":["subjectId","subjectType"],"x-fern-type-name":"Subject","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.25.created_by_subject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.25.created_by_subject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.25.created_by_subject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.25.created_by_subject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.25.created_by_subject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.25.created_by_subject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.25.created_by_subject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.25.created_by_subject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.25.created_by_subject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.25.created_by_subject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.25.created_by_subject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.25.created_by_subject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.25.created_by_subject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.25.created_by_subject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.25.created_by_subject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.25.created_by_subject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.25.created_by_subject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.oneOf.25.created_by_subject","typeLabel":"Subject · object"},"created_at":{"format":"date-time","type":"string","description":"Timestamp when the data directory was created","isRequired":true,"uniqueKey":"data.oneOf.25.created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"format":"date-time","type":"string","description":"Timestamp when the data directory was last updated","isRequired":true,"uniqueKey":"data.oneOf.25.updated_at","typeLabel":"string\u003cdate-time>"},"manifest":{"type":"object","title":"DataDirectoryManifest","description":"Manifest describing the data directory.","required":["type","name","ml_repo","metadata","source"],"x-fern-type-name":"DataDirectoryManifest","properties":{"type":{"description":"Type","type":"string","enum":["data-dir"],"default":"data-dir","isRequired":true,"uniqueKey":"data.oneOf.25.manifest.type","typeLabel":"enum\u003cstring>"},"name":{"description":"Name of the data directory","type":"string","maxLength":256,"pattern":"^[A-Za-z0-9_\\-]+$","isRequired":true,"uniqueKey":"data.oneOf.25.manifest.name","typeLabel":"string"},"ml_repo":{"description":"Name of the ML Repo to create the data directory under","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9\\-]{1,98}[a-zA-Z0-9]$","isRequired":true,"uniqueKey":"data.oneOf.25.manifest.ml_repo","typeLabel":"string"},"metadata":{"description":"Key Value metadata. Should be valid JSON. For e.g. `{\"business-unit\": \"sales\", \"quality\": \"good\", \"rating\": 4.5}`","type":"object","isRequired":true,"uniqueKey":"data.oneOf.25.manifest.metadata","typeLabel":"object"},"source":{"oneOf":[{"type":"object","title":"TrueFoundryManagedSource","description":"TrueFoundry Managed Source","required":["type"],"x-fern-type-name":"TrueFoundryManagedSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["truefoundry"],"default":"truefoundry","isRequired":true,"uniqueKey":"data.oneOf.25.manifest.source.oneOf.0.type","typeLabel":"enum\u003cstring>"},"uri":{"description":"URI","type":"string","pattern":"^(s3|gs|wasbs)://.*","uniqueKey":"data.oneOf.25.manifest.source.oneOf.0.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.25.manifest.source.oneOf.0","typeLabel":"TrueFoundryManagedSource · object"},{"type":"object","title":"ExternalBlobStorageSource","description":"External Blob Storage Source","required":["type","uri"],"x-fern-type-name":"ExternalBlobStorageSource","properties":{"type":{"description":"Type of the source","type":"string","enum":["external"],"default":"external","isRequired":true,"uniqueKey":"data.oneOf.25.manifest.source.oneOf.1.type","typeLabel":"enum\u003cstring>"},"uri":{"description":"URI referencing a path in the blob storage bucket linked to the MLRepo","type":"string","pattern":"^(s3|gs|wasbs)://.*","isRequired":true,"uniqueKey":"data.oneOf.25.manifest.source.oneOf.1.uri","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.oneOf.25.manifest.source.oneOf.1","typeLabel":"ExternalBlobStorageSource · object"}],"isRequired":true,"uniqueKey":"data.oneOf.25.manifest.source","typeLabel":"TrueFoundryManagedSource · object | ExternalBlobStorageSource · object"},"description":{"oneOf":[{"description":"Description for the data directory","type":"string","maxLength":512,"uniqueKey":"data.oneOf.25.manifest.description.oneOf.0","typeLabel":"string"},{"description":"Description for the data directory","type":"null","maxLength":512,"uniqueKey":"data.oneOf.25.manifest.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.25.manifest.description","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.oneOf.25.manifest","typeLabel":"DataDirectoryManifest · object"},"usage_code_snippet":{"oneOf":[{"type":"string","description":"Code snippet demonstrating how to use this data directory","uniqueKey":"data.oneOf.25.usage_code_snippet.oneOf.0","typeLabel":"string"},{"type":"null","description":"Code snippet demonstrating how to use this data directory","uniqueKey":"data.oneOf.25.usage_code_snippet.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.25.usage_code_snippet","typeLabel":"string | null"}},"uniqueKey":"data.oneOf.25","typeLabel":"DataDirectory · object"},{"type":"object","title":"AgentChannel","description":"The created or updated resource","required":["id","manifest","createdBySubject"],"x-fern-type-name":"AgentChannel","properties":{"id":{"type":"string","description":"System-generated agent channel id.","isRequired":true,"uniqueKey":"data.oneOf.26.id","typeLabel":"string"},"manifest":{"type":"object","additionalProperties":true,"isRequired":true,"uniqueKey":"data.oneOf.26.manifest","typeLabel":"object"},"createdBySubject":{"type":"object","properties":{"subjectId":{"type":"string","description":"Subject ID","isRequired":true,"uniqueKey":"data.oneOf.26.createdBySubject.subjectId","typeLabel":"string"},"subjectType":{"type":"string","description":"Subject type","enum":["user","team","serviceaccount","virtualaccount","agent-identity","agent","agent-channel-identity","role"],"isRequired":true,"uniqueKey":"data.oneOf.26.createdBySubject.subjectType","typeLabel":"enum\u003cstring>"},"subjectSlug":{"oneOf":[{"type":"string","description":"Subject slug","uniqueKey":"data.oneOf.26.createdBySubject.subjectSlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject slug","uniqueKey":"data.oneOf.26.createdBySubject.subjectSlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.26.createdBySubject.subjectSlug","typeLabel":"string | null"},"subjectDisplayName":{"oneOf":[{"type":"string","description":"Subject display name","uniqueKey":"data.oneOf.26.createdBySubject.subjectDisplayName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject display name","uniqueKey":"data.oneOf.26.createdBySubject.subjectDisplayName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.26.createdBySubject.subjectDisplayName","typeLabel":"string | null"},"subjectPatName":{"oneOf":[{"type":"string","description":"Subject PAT name","uniqueKey":"data.oneOf.26.createdBySubject.subjectPatName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Subject PAT name","uniqueKey":"data.oneOf.26.createdBySubject.subjectPatName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.26.createdBySubject.subjectPatName","typeLabel":"string | null"},"subjectControllerName":{"oneOf":[{"type":"string","uniqueKey":"data.oneOf.26.createdBySubject.subjectControllerName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.oneOf.26.createdBySubject.subjectControllerName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.26.createdBySubject.subjectControllerName","typeLabel":"string | null"},"subjectExternalIdentitySlug":{"oneOf":[{"type":"string","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.26.createdBySubject.subjectExternalIdentitySlug.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identity slug (external_identity_id:sub:email)","uniqueKey":"data.oneOf.26.createdBySubject.subjectExternalIdentitySlug.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.26.createdBySubject.subjectExternalIdentitySlug","typeLabel":"string | null"}},"required":["subjectId","subjectType"],"title":"Subject","x-fern-type-name":"Subject","isRequired":true,"uniqueKey":"data.oneOf.26.createdBySubject","typeLabel":"Subject · object"},"createdAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.26.createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.26.createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.26.createdAt","typeLabel":"string\u003cdate-time> | null"},"updatedAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"data.oneOf.26.updatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"data.oneOf.26.updatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.oneOf.26.updatedAt","typeLabel":"string\u003cdate-time> | null"}},"uniqueKey":"data.oneOf.26","typeLabel":"AgentChannel · object"},{"type":"null","uniqueKey":"data.oneOf.27","typeLabel":"null"}],"uniqueKey":"data","typeLabel":"ProviderAccount · object | Cluster · object | Workspace · object | MLRepo · object | Deployment · object | GatewayConfiguration · object | Team · object | Policy · object | Role · object | Settings · object | AlertConfigEntity · object | VirtualAccount · object | Agent · object | Environment · object | TracingProject · object | MCPServerV2 · object | RoleBinding · object | SecretGroup · object | ExternalIdentityProvider · object | GatewayInstallation · object | GatewayBudget · object | ArtifactVersion · object | ModelVersion · object | PromptVersion · object | AgentSkillVersion · object | DataDirectory · object | AgentChannel · object | null"}},"title":"TrueFoundryApplyResponse","x-fern-type-name":"TrueFoundryApplyResponse","uniqueKey":"","typeLabel":"TrueFoundryApplyResponse · object"},"examples":{"Example":{"title":"Example","value":{"existingManifest":{"type":"ml-repo","name":"\u003cstring>","storage_integration_fqn":"\u003cstring>","description":"\u003cstring>","collaborators":[{"subject":"\u003cstring>","role_id":"\u003cstring>"}],"ownedBy":{"account":"\u003cstring>"}},"action":"CREATE","data":{"fqn":"\u003cstring>","provider":"aws","manifest":{},"accountId":"\u003cstring>","id":"jqfwg345gi25n5ju2yz5iz6m","category":"model-provider-accounts","integrations":[{"id":"jqfwg345gi25n5ju2yz5iz6m","name":"\u003cstring>","fqn":"\u003cstring>","type":"blob-storage","providerAccountFqn":"\u003cstring>","tenantName":"\u003cstring>","createdBySubject":{"subjectId":"\u003cstring>","subjectType":"user","subjectSlug":"\u003cstring>","subjectDisplayName":"\u003cstring>","subjectPatName":"\u003cstring>","subjectControllerName":"\u003cstring>","subjectExternalIdentitySlug":"\u003cstring>"},"manifest":{},"metadata":{},"providerAccount":{},"createdAt":"2023-11-07T05:31:56Z","updatedAt":"2023-11-07T05:31:56Z","createdBy":"\u003cstring>"}],"createdBySubject":{"subjectId":"\u003cstring>","subjectType":"user","subjectSlug":"\u003cstring>","subjectDisplayName":"\u003cstring>","subjectPatName":"\u003cstring>","subjectControllerName":"\u003cstring>","subjectExternalIdentitySlug":"\u003cstring>"},"createdAt":"2023-11-07T05:31:56Z","updatedAt":"2023-11-07T05:31:56Z","createdBy":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"0eb0f533-96a8-4761-b4bf-8e81a38aba0f":{"jwt":{"type":"http","scheme":"bearer","bearerFormat":"JWT","scopes":[],"schemeName":"jwt"}}},"servers":{"420b2084-a24a-46fb-8cda-d10944e1e5a2":{"url":"https://{controlPlaneURL}","variables":{"controlPlaneURL":{"default":"app.truefoundry.com","description":"Control Plane URL"}}}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"JWT","scopes":[],"schemeName":"jwt"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"jwt","name":"Authorization"}],"title":"jwt"}]},"originalFileLocation":"openapi.json"},"subdomain":"truefoundry","siteName":"TrueFoundry Docs","title":"Create or update a resource from a manifest - TrueFoundry Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-02T11:57:44.868Z","originalFileLocation":"docs/api-reference/apply/create-or-update-a-resource-from-a-manifest.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Apply a manifest to create or update a resource.\">\u003cmeta data-mint-head name=\"application-name\" content=\"TrueFoundry Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/truefoundry/DMuq4kzeTciVEGUc/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/truefoundry/DMuq4kzeTciVEGUc/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/truefoundry/DMuq4kzeTciVEGUc/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/truefoundry/DMuq4kzeTciVEGUc/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/truefoundry/DMuq4kzeTciVEGUc/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/truefoundry/DMuq4kzeTciVEGUc/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/truefoundry/DMuq4kzeTciVEGUc/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/truefoundry/DMuq4kzeTciVEGUc/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/truefoundry/DMuq4kzeTciVEGUc/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create or update a resource from a manifest - TrueFoundry Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"TrueFoundry offers an enterprise-grade AI Gateway combining LLM, MCP, and Agent Gateways—empowering businesses to connect, monitor, and govern agentic AI applications across providers from a unified control plane.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"TrueFoundry Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.truefoundry.com/docs/api-reference/apply/create-or-update-a-resource-from-a-manifest\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://assets.production.truefoundry.com/logo.svg\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create or update a resource from a manifest - TrueFoundry Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"TrueFoundry offers an enterprise-grade AI Gateway combining LLM, MCP, and Agent Gateways—empowering businesses to connect, monitor, and govern agentic AI applications across providers from a unified control plane.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://assets.production.truefoundry.com/logo.svg\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/truefoundry/DMuq4kzeTciVEGUc/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"TrueFoundry Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4f46e5\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.truefoundry.com/docs/api-reference/apply/create-or-update-a-resource-from-a-manifest\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api-reference/apply/create-or-update-a-resource-from-a-manifest.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.truefoundry.com/#organization\",\"name\":\"TrueFoundry Docs\",\"url\":\"https://www.truefoundry.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/truefoundry/e2uUimEwX30qkWxc/logo/light.svg?fit=max\u0026auto=format\u0026n=e2uUimEwX30qkWxc\u0026q=85\u0026s=6068d83664aeda0239bec2422657dd20\"}},{\"@type\":\"WebSite\",\"@id\":\"https://www.truefoundry.com#website\",\"name\":\"TrueFoundry Docs\",\"url\":\"https://www.truefoundry.com\",\"publisher\":{\"@id\":\"https://www.truefoundry.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.truefoundry.com/docs/api-reference/apply/create-or-update-a-resource-from-a-manifest#webpage\",\"url\":\"https://www.truefoundry.com/docs/api-reference/apply/create-or-update-a-resource-from-a-manifest\",\"name\":\"Create or update a resource from a manifest\",\"description\":\"Apply a manifest to create or update a resource.\",\"dateModified\":\"2026-11-02T11:57:44.868Z\",\"isPartOf\":{\"@id\":\"https://www.truefoundry.com#website\"},\"breadcrumb\":{\"@id\":\"https://www.truefoundry.com/docs/api-reference/apply/create-or-update-a-resource-from-a-manifest#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.truefoundry.com/docs/api-reference/apply/create-or-update-a-resource-from-a-manifest#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"TrueFoundry Docs\",\"item\":\"https://www.truefoundry.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create or update a resource from a manifest\",\"item\":\"https://www.truefoundry.com/docs/api-reference/apply/create-or-update-a-resource-from-a-manifest\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://www.truefoundry.com/docs/api-reference/apply/create-or-update-a-resource-from-a-manifest#apireference\",\"headline\":\"Create or update a resource from a manifest\",\"name\":\"Create or update a resource from a manifest\",\"description\":\"Apply a manifest to create or update a resource.\",\"url\":\"https://www.truefoundry.com/docs/api-reference/apply/create-or-update-a-resource-from-a-manifest\",\"mainEntityOfPage\":{\"@id\":\"https://www.truefoundry.com/docs/api-reference/apply/create-or-update-a-resource-from-a-manifest#webpage\"},\"image\":\"https://assets.production.truefoundry.com/logo.svg\",\"dateModified\":\"2026-11-02T11:57:44.868Z\",\"publisher\":{\"@id\":\"https://www.truefoundry.com/#organization\"},\"isPartOf\":{\"@id\":\"https://www.truefoundry.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"TrueFoundry Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"TrueFoundry Docs","nav":{"global":null,"tabs":[{"tab":"AI Gateway","pages":[{"title":"AI Gateway","href":"/docs/ai-gateway/intro-to-llm-gateway"}]},{"tab":"Agent Platform","pages":[{"title":"Agent Platform","href":"/docs/agent-platform/agent-harness/overview"}]},{"tab":"Platform","pages":[{"title":"Platform","href":"/docs/platform/overview"}]},{"tab":"AI Deployment","pages":[{"title":"AI Deployment","href":"/docs/ai-deployment-overview"}]},{"tab":"API Reference","groups":[{"group":"TrueFoundry SDK","pages":[{"title":"TrueFoundry Python SDK","href":"/docs/truefoundry_sdk"},{"title":"TrueFoundry ML Client","href":"/docs/truefoundry-ml-reference/index"}]},{"group":"TrueFoundry CLI","pages":[{"title":"Using tfy apply","href":"/docs/using-tfy-apply"},{"title":"Using tfy delete","href":"/docs/using-tfy-delete"}]},{"group":"Extras","pages":[{"title":"Add and List Models","href":"/docs/apply-api-create-models"},{"title":"Secret Management API","href":"/docs/apply-api-secret-management"}]},{"group":"Agent","pages":[{"title":"List Agents","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/agents","href":"/docs/api-reference/agent/list-agents"},{"title":"Create or Update Agent","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/agents","href":"/docs/api-reference/agent/create-or-update-agent"},{"title":"Get Agent","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/agents/{id}","href":"/docs/api-reference/agent/get-agent"},{"title":"Delete Agent","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/agents/{id}","href":"/docs/api-reference/agent/delete-agent"},{"title":"Get Agent Token","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/agents/{id}/token","href":"/docs/api-reference/agent/get-agent-token"},{"title":"Create Agent Token","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/agents/{id}/token","href":"/docs/api-reference/agent/create-agent-token"},{"title":"Update Agent State","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/agents/{id}/state","href":"/docs/api-reference/agent/update-agent-state"},{"title":"List Agent Versions","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/agent-versions","href":"/docs/api-reference/agent/list-agent-versions"}]},{"group":"Agent Skills","pages":[{"title":"Get agent skill","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/agent-skills/{agent_skill_id}","href":"/docs/api-reference/agent-skills/get-agent-skill"},{"title":"Delete agent skill","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/agent-skills/{agent_skill_id}","href":"/docs/api-reference/agent-skills/delete-agent-skill"},{"title":"List agent skills","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/agent-skills","href":"/docs/api-reference/agent-skills/list-agent-skills"},{"title":"List agent skill versions","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/agent-skill-versions","href":"/docs/api-reference/agent-skills/list-agent-skill-versions"},{"title":"Create or update agent skill version","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/agent-skill-versions","href":"/docs/api-reference/agent-skills/create-or-update-agent-skill-version"},{"title":"Get agent skill version","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/agent-skill-versions/{agent_skill_version_id}","href":"/docs/api-reference/agent-skills/get-agent-skill-version"},{"title":"Delete agent skill version","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/agent-skill-versions/{agent_skill_version_id}","href":"/docs/api-reference/agent-skills/delete-agent-skill-version"}]},{"group":"Applications","pages":[{"title":"List Applications","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/apps","href":"/docs/api-reference/applications/list-applications"},{"title":"Create or Update Application Deployment","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/apps","href":"/docs/api-reference/applications/create-or-update-application-deployment"},{"title":"Get Application","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/apps/{id}","href":"/docs/api-reference/applications/get-application"},{"title":"Delete Application","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/apps/{id}","href":"/docs/api-reference/applications/delete-application"},{"title":"List Application Deployments","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/apps/{id}/deployments","href":"/docs/api-reference/applications/list-application-deployments"},{"title":"Redeploy Application","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/apps/{id}/deployments/{deploymentId}/redeploy","href":"/docs/api-reference/applications/redeploy-application"},{"title":"Get Deployment","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/apps/{id}/deployments/{deploymentId}","href":"/docs/api-reference/applications/get-deployment"},{"title":"Pause Application","deprecated":null,"version":null,"openapi":"/openapi.json patch /api/svc/v1/apps/{id}/scale-to-zero","href":"/docs/api-reference/applications/pause-application"},{"title":"Resume Application","deprecated":null,"version":null,"openapi":"/openapi.json patch /api/svc/v1/apps/{id}/scale-to-original","href":"/docs/api-reference/applications/resume-application"},{"title":"Cancel Deployment","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/apps/{id}/deployments/{deploymentId}/cancel","href":"/docs/api-reference/applications/cancel-deployment"},{"title":"Get Application Resources","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/x/apps/{id}/resources","href":"/docs/api-reference/applications/get-application-resources"},{"title":"Get Application State","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/x/apps/{id}/state","href":"/docs/api-reference/applications/get-application-state"}]},{"group":"Metrics","pages":[{"title":"Create Grafana dashboard for an application","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/metrics/grafana/{workspaceId}","href":"/docs/api-reference/metrics/create-grafana-dashboard-for-an-application"},{"title":"Get Grafana dashboard JSON for an application","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/metrics/grafana/dashboard-json/{workspaceId}","href":"/docs/api-reference/metrics/get-grafana-dashboard-json-for-an-application"},{"title":"List metric charts for an application","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/metrics/{workspaceId}/charts","href":"/docs/api-reference/metrics/list-metric-charts-for-an-application"},{"title":"Get metric data for an application chart","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/metrics/{workspaceId}/charts/{chart}","href":"/docs/api-reference/metrics/get-metric-data-for-an-application-chart"},{"title":"List metric charts for a cluster","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/metrics/cluster/{id}/charts","href":"/docs/api-reference/metrics/list-metric-charts-for-a-cluster"},{"title":"Get metric data for a cluster chart","description":"Get the metric data for a single cluster chart. Call `GET /metrics/cluster/{id}/charts` (tool: `list_cluster_metric_charts`) first to get the chart and its input `params`.","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/metrics/cluster/{id}/charts/{chart}","href":"/docs/api-reference/metrics/get-metric-data-for-a-cluster-chart"}]},{"group":"Apply","pages":[{"title":"Create or update a resource from a manifest","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/apply","href":"/docs/api-reference/apply/create-or-update-a-resource-from-a-manifest"},{"title":"Delete a resource identified by a manifest","description":"Delete a resource identified by the provided manifest.","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/delete","href":"/docs/api-reference/apply/delete-a-resource-identified-by-a-manifest"},{"title":"Resolve the dependency tree for a set of manifests","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/dependency-tree","href":"/docs/api-reference/apply/resolve-the-dependency-tree-for-a-set-of-manifests"}]},{"group":"Artifacts","pages":[{"title":"Get artifact","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/artifacts/{id}","href":"/docs/api-reference/artifacts/get-artifact"},{"title":"Delete artifact","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/artifacts/{id}","href":"/docs/api-reference/artifacts/delete-artifact"},{"title":"List artifacts","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/artifacts","href":"/docs/api-reference/artifacts/list-artifacts"},{"title":"List artifact versions","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/artifact-versions","href":"/docs/api-reference/artifacts/list-artifact-versions"},{"title":"Create or update artifact version","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/artifact-versions","href":"/docs/api-reference/artifacts/create-or-update-artifact-version"},{"title":"Delete artifact version","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/artifact-versions","href":"/docs/api-reference/artifacts/delete-artifact-version"},{"title":"Apply tags to artifact version","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/artifact-versions/tags","href":"/docs/api-reference/artifacts/apply-tags-to-artifact-version"},{"title":"Get signed URLs for artifact version","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/artifact-versions/signed-urls","href":"/docs/api-reference/artifacts/get-signed-urls-for-artifact-version"},{"title":"Create multipart upload","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/artifact-versions/signed-urls/multipart","href":"/docs/api-reference/artifacts/create-multipart-upload"},{"title":"List files in artifact version","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/artifact-versions/files","href":"/docs/api-reference/artifacts/list-files-in-artifact-version"},{"title":"Stage artifact version","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/artifact-versions/stage","href":"/docs/api-reference/artifacts/stage-artifact-version"},{"title":"Mark stage failure","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/artifact-versions/mark-stage-failure","href":"/docs/api-reference/artifacts/mark-stage-failure"},{"title":"Get artifact version","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/artifact-versions/{id}","href":"/docs/api-reference/artifacts/get-artifact-version"},{"title":"Delete artifact version","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/artifact-versions/{id}","href":"/docs/api-reference/artifacts/delete-artifact-version-1"}]},{"group":"Audit Logs","pages":[{"title":"Get Audit Logs","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/audit-logs","href":"/docs/api-reference/audit-logs/get-audit-logs"},{"title":"Get Audit Log Actions","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/audit-logs/actions","href":"/docs/api-reference/audit-logs/get-audit-log-actions"},{"title":"Get Resource Audit Logs","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/audit-logs/resources","href":"/docs/api-reference/audit-logs/get-resource-audit-logs"}]},{"group":"Clusters","pages":[{"title":"List clusters","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/clusters","href":"/docs/api-reference/clusters/list-clusters"},{"title":"Create or update a cluster","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/clusters","href":"/docs/api-reference/clusters/create-or-update-a-cluster"},{"title":"Get a cluster","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/clusters/{id}","href":"/docs/api-reference/clusters/get-a-cluster"},{"title":"Delete a cluster","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/clusters/{id}","href":"/docs/api-reference/clusters/delete-a-cluster"},{"title":"List cluster addons","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/clusters/{id}/get-addons","href":"/docs/api-reference/clusters/list-cluster-addons"},{"title":"Get cluster connection status","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/clusters/{id}/is-connected","href":"/docs/api-reference/clusters/get-cluster-connection-status"}]},{"group":"Jobs","pages":[{"title":"List Job Runs","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/jobs/{jobId}/runs","href":"/docs/api-reference/jobs/list-job-runs"},{"title":"Get Job Run","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/jobs/{jobId}/runs/{jobRunName}","href":"/docs/api-reference/jobs/get-job-run"},{"title":"Delete Job Run","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/jobs/{jobId}/runs/{jobRunName}","href":"/docs/api-reference/jobs/delete-job-run"},{"title":"Trigger Job","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/jobs/trigger","href":"/docs/api-reference/jobs/trigger-job"},{"title":"Terminate Job","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/jobs/terminate","href":"/docs/api-reference/jobs/terminate-job"}]},{"group":"LLM Gateway Budgets","pages":[{"title":"List gateway budgets","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/llm-gateway/budgets","href":"/docs/api-reference/llm-gateway-budgets/list-gateway-budgets"},{"title":"Create or update a gateway budget","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/llm-gateway/budgets","href":"/docs/api-reference/llm-gateway-budgets/create-or-update-a-gateway-budget"},{"title":"Get my budget usage","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/llm-gateway/budgets/my-usage","href":"/docs/api-reference/llm-gateway-budgets/get-my-budget-usage"},{"title":"Simulate gateway budgets","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/llm-gateway/budgets/simulate","href":"/docs/api-reference/llm-gateway-budgets/simulate-gateway-budgets"},{"title":"Get a gateway budget by id","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/llm-gateway/budgets/{id}","href":"/docs/api-reference/llm-gateway-budgets/get-a-gateway-budget-by-id"},{"title":"Delete a gateway budget by id","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/llm-gateway/budgets/{id}","href":"/docs/api-reference/llm-gateway-budgets/delete-a-gateway-budget-by-id"},{"title":"Get a gateway budget leaderboard","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/llm-gateway/budgets/{id}/leaderboard","href":"/docs/api-reference/llm-gateway-budgets/get-a-gateway-budget-leaderboard"}]},{"group":"Logs","pages":[{"title":"Get application logs","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/logs","href":"/docs/api-reference/logs/get-application-logs"},{"title":"Download workspace logs","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/logs/{workspaceId}/download","href":"/docs/api-reference/logs/download-workspace-logs"}]},{"group":"MCP Registry","pages":[{"title":"List MCP registry servers","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/mcp-registry/v0.1/servers","href":"/docs/api-reference/mcp-registry/list-mcp-registry-servers"},{"title":"List MCP registry server versions","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/mcp-registry/v0.1/servers/{mcpRegistryServerName}/versions","href":"/docs/api-reference/mcp-registry/list-mcp-registry-server-versions"},{"title":"Get an MCP registry server version","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/mcp-registry/v0.1/servers/{mcpRegistryServerName}/versions/{version}","href":"/docs/api-reference/mcp-registry/get-an-mcp-registry-server-version"}]},{"group":"MCP Servers V2","pages":[{"title":"List MCP servers","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/mcp","href":"/docs/api-reference/mcp-servers-v2/list-mcp-servers"},{"title":"Create or update an MCP server","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/mcp","href":"/docs/api-reference/mcp-servers-v2/create-or-update-an-mcp-server"},{"title":"Bulk create TrueFoundry-managed MCP servers","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/mcp/bulk","href":"/docs/api-reference/mcp-servers-v2/bulk-create-truefoundry-managed-mcp-servers"},{"title":"Get an MCP server by ID","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/mcp/{mcpServerId}","href":"/docs/api-reference/mcp-servers-v2/get-an-mcp-server-by-id"},{"title":"Delete an MCP server","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/mcp/{mcpServerId}","href":"/docs/api-reference/mcp-servers-v2/delete-an-mcp-server"},{"title":"Get MCP server code snippets","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/mcp/{mcpServerId}/code-snippets","href":"/docs/api-reference/mcp-servers-v2/get-mcp-server-code-snippets"},{"title":"List MCP user auth overrides","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/mcp/{mcpServerId}/auth","href":"/docs/api-reference/mcp-servers-v2/list-mcp-user-auth-overrides"},{"title":"Set a per-subject auth override","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/mcp/{mcpServerId}/auth","href":"/docs/api-reference/mcp-servers-v2/set-a-per-subject-auth-override"},{"title":"Disconnect a subject from an MCP server","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/mcp/{mcpServerId}/auth","href":"/docs/api-reference/mcp-servers-v2/disconnect-a-subject-from-an-mcp-server"},{"title":"Get the consent URL for per-user MCP server authorization","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/mcp/{mcpServerId}/authorize","href":"/docs/api-reference/mcp-servers-v2/get-the-consent-url-for-per-user-mcp-server-authorization"},{"title":"Get MCP server auth status for a subject","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/mcp/{mcpServerId}/auth/status","href":"/docs/api-reference/mcp-servers-v2/get-mcp-server-auth-status-for-a-subject"},{"title":"Get auth override parameters for an MCP server","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/mcp/{mcpServerId}/auth-override/uischema","href":"/docs/api-reference/mcp-servers-v2/get-auth-override-parameters-for-an-mcp-server"},{"title":"Revoke all auth tokens on an MCP server","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/mcp/{mcpServerId}/auth/tokens","href":"/docs/api-reference/mcp-servers-v2/revoke-all-auth-tokens-on-an-mcp-server"}]},{"group":"MLRepos","pages":[{"title":"Get ML Repo","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/ml-repos/{id}","href":"/docs/api-reference/mlrepos/get-ml-repo"},{"title":"Delete ML Repo","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/ml-repos/{id}","href":"/docs/api-reference/mlrepos/delete-ml-repo"},{"title":"List ML Repos","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/ml-repos","href":"/docs/api-reference/mlrepos/list-ml-repos"},{"title":"Create or Update MLRepo","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/ml-repos","href":"/docs/api-reference/mlrepos/create-or-update-mlrepo"}]},{"group":"Models","pages":[{"title":"Get model","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/models/{id}","href":"/docs/api-reference/models/get-model"},{"title":"Delete model","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/models/{id}","href":"/docs/api-reference/models/delete-model"},{"title":"List models","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/models","href":"/docs/api-reference/models/list-models"},{"title":"List model versions","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/model-versions","href":"/docs/api-reference/models/list-model-versions"},{"title":"Create or update model version","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/model-versions","href":"/docs/api-reference/models/create-or-update-model-version"},{"title":"Delete model version","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/model-versions","href":"/docs/api-reference/models/delete-model-version"},{"title":"Apply tags to model version","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/model-versions/tags","href":"/docs/api-reference/models/apply-tags-to-model-version"},{"title":"Get model version","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/model-versions/{id}","href":"/docs/api-reference/models/get-model-version"},{"title":"Delete model version","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/model-versions/{id}","href":"/docs/api-reference/models/delete-model-version-1"}]},{"group":"Personal Access Tokens","pages":[{"title":"List personal access tokens","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/personal-access-tokens","href":"/docs/api-reference/personal-access-tokens/list-personal-access-tokens"},{"title":"Create a personal access token","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/personal-access-tokens","href":"/docs/api-reference/personal-access-tokens/create-a-personal-access-token"},{"title":"Check personal access token exists","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/personal-access-tokens/exists","href":"/docs/api-reference/personal-access-tokens/check-personal-access-token-exists"},{"title":"Create a personal access token for another user","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/personal-access-tokens/for-user","href":"/docs/api-reference/personal-access-tokens/create-a-personal-access-token-for-another-user"},{"title":"Revoke all personal access tokens for a user","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/personal-access-tokens/revoke/all","href":"/docs/api-reference/personal-access-tokens/revoke-all-personal-access-tokens-for-a-user"},{"title":"Delete a personal access token","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/personal-access-tokens/{id}","href":"/docs/api-reference/personal-access-tokens/delete-a-personal-access-token"},{"title":"Get token for a personal access token","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/personal-access-tokens/{name}/token","href":"/docs/api-reference/personal-access-tokens/get-token-for-a-personal-access-token"}]},{"group":"Prompts","pages":[{"title":"Get prompt","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/prompts/{id}","href":"/docs/api-reference/prompts/get-prompt"},{"title":"Delete prompt","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/prompts/{id}","href":"/docs/api-reference/prompts/delete-prompt"},{"title":"List prompts","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/prompts","href":"/docs/api-reference/prompts/list-prompts"},{"title":"List prompt versions","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/prompt-versions","href":"/docs/api-reference/prompts/list-prompt-versions"},{"title":"Create or update prompt version","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/prompt-versions","href":"/docs/api-reference/prompts/create-or-update-prompt-version"},{"title":"Delete prompt version","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/prompt-versions","href":"/docs/api-reference/prompts/delete-prompt-version"},{"title":"Apply tags to prompt version","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/prompt-versions/tags","href":"/docs/api-reference/prompts/apply-tags-to-prompt-version"},{"title":"Get prompt version","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/prompt-versions/{id}","href":"/docs/api-reference/prompts/get-prompt-version"},{"title":"Delete prompt version","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/prompt-versions/{id}","href":"/docs/api-reference/prompts/delete-prompt-version-1"}]},{"group":"Provider Integrations","pages":[{"title":"Summarize model integrations","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/provider-integrations/summary","href":"/docs/api-reference/provider-integrations/summarize-model-integrations"},{"title":"List provider integrations","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/provider-integrations","href":"/docs/api-reference/provider-integrations/list-provider-integrations"}]},{"group":"SCIM v2","pages":[{"title":"List Resource Types","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/scim/v2/{tenantName}/{ssoId}/ResourceTypes","href":"/docs/api-reference/scim-v2/list-resource-types"},{"title":"List Schemas","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/scim/v2/{tenantName}/{ssoId}/Schemas","href":"/docs/api-reference/scim-v2/list-schemas"},{"title":"Get Schema","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/scim/v2/{tenantName}/{ssoId}/Schemas/{id}","href":"/docs/api-reference/scim-v2/get-schema"},{"title":"Get Service Provider Configuration","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/scim/v2/{tenantName}/{ssoId}/ServiceProviderConfig","href":"/docs/api-reference/scim-v2/get-service-provider-configuration"},{"title":"List Users","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/scim/v2/{tenantName}/{ssoId}/Users","href":"/docs/api-reference/scim-v2/list-users"},{"title":"Create User","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/scim/v2/{tenantName}/{ssoId}/Users","href":"/docs/api-reference/scim-v2/create-user"},{"title":"Get User","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/scim/v2/{tenantName}/{ssoId}/Users/{id}","href":"/docs/api-reference/scim-v2/get-user"},{"title":"Update User","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/scim/v2/{tenantName}/{ssoId}/Users/{id}","href":"/docs/api-reference/scim-v2/update-user"},{"title":"Delete User","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/scim/v2/{tenantName}/{ssoId}/Users/{id}","href":"/docs/api-reference/scim-v2/delete-user"},{"title":"Update User","deprecated":null,"version":null,"openapi":"/openapi.json patch /api/svc/v1/scim/v2/{tenantName}/{ssoId}/Users/{id}","href":"/docs/api-reference/scim-v2/update-user-1"},{"title":"List Groups","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/scim/v2/{tenantName}/{ssoId}/Groups","href":"/docs/api-reference/scim-v2/list-groups"},{"title":"Create Group","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/scim/v2/{tenantName}/{ssoId}/Groups","href":"/docs/api-reference/scim-v2/create-group"},{"title":"Get Group","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/scim/v2/{tenantName}/{ssoId}/Groups/{id}","href":"/docs/api-reference/scim-v2/get-group"},{"title":"Update Group","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/scim/v2/{tenantName}/{ssoId}/Groups/{id}","href":"/docs/api-reference/scim-v2/update-group"},{"title":"Delete Group","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/scim/v2/{tenantName}/{ssoId}/Groups/{id}","href":"/docs/api-reference/scim-v2/delete-group"},{"title":"Patch Group","deprecated":null,"version":null,"openapi":"/openapi.json patch /api/svc/v1/scim/v2/{tenantName}/{ssoId}/Groups/{id}","href":"/docs/api-reference/scim-v2/patch-group"}]},{"group":"Secret Groups","pages":[{"title":"List secret groups","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/secret-groups","href":"/docs/api-reference/secret-groups/list-secret-groups"},{"title":"Create or update a secret group","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/secret-groups","href":"/docs/api-reference/secret-groups/create-or-update-a-secret-group"},{"title":"Create a secret group","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/secret-groups","href":"/docs/api-reference/secret-groups/create-a-secret-group"},{"title":"Get a secret group","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/secret-groups/{id}","href":"/docs/api-reference/secret-groups/get-a-secret-group"},{"title":"Update secrets in a secret group","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/secret-groups/{id}","href":"/docs/api-reference/secret-groups/update-secrets-in-a-secret-group"},{"title":"Delete a secret group","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/secret-groups/{id}","href":"/docs/api-reference/secret-groups/delete-a-secret-group"}]},{"group":"Secrets","pages":[{"title":"List secrets","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/secrets","href":"/docs/api-reference/secrets/list-secrets"},{"title":"List associated active deployments for multiple secrets","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/secrets/deployments","href":"/docs/api-reference/secrets/list-associated-active-deployments-for-multiple-secrets"},{"title":"Get a secret","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/secrets/{id}","href":"/docs/api-reference/secrets/get-a-secret"},{"title":"Delete a secret","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/secrets/{id}","href":"/docs/api-reference/secrets/delete-a-secret"},{"title":"List active deployments for a secret","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/secrets/{id}/deployments","href":"/docs/api-reference/secrets/list-active-deployments-for-a-secret"}]},{"group":"Teams","pages":[{"title":"List teams","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/teams/user","href":"/docs/api-reference/teams/list-teams"},{"title":"Create or update a team","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/teams","href":"/docs/api-reference/teams/create-or-update-a-team"},{"title":"List team members","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/teams/{id}/members","href":"/docs/api-reference/teams/list-team-members"},{"title":"Add team members","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/teams/{id}/members","href":"/docs/api-reference/teams/add-team-members"},{"title":"Remove team members","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/teams/{id}/members","href":"/docs/api-reference/teams/remove-team-members"},{"title":"List team managers","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/teams/{id}/managers","href":"/docs/api-reference/teams/list-team-managers"},{"title":"Add team managers","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/teams/{id}/managers","href":"/docs/api-reference/teams/add-team-managers"},{"title":"Remove team managers","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/teams/{id}/managers","href":"/docs/api-reference/teams/remove-team-managers"},{"title":"Generate team manifest for YAML","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/teams/{id}/generate-manifest","href":"/docs/api-reference/teams/generate-team-manifest-for-yaml"},{"title":"Get a team","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/teams/{id}","href":"/docs/api-reference/teams/get-a-team"},{"title":"Delete a team","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/teams/{id}","href":"/docs/api-reference/teams/delete-a-team"},{"title":"Get team permissions","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/teams/{id}/permissions","href":"/docs/api-reference/teams/get-team-permissions"}]},{"group":"Traces","pages":[{"title":"Get filtered spans data with detailed attributes","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/spans/query","href":"/docs/api-reference/traces/get-filtered-spans-data-with-detailed-attributes"}]},{"group":"Users","pages":[{"title":"List users","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/users","href":"/docs/api-reference/users/list-users"},{"title":"Register a user","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/users/register","href":"/docs/api-reference/users/register-a-user"},{"title":"Get a user","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/users/{id}","href":"/docs/api-reference/users/get-a-user"},{"title":"Delete a user","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/users/{id}","href":"/docs/api-reference/users/delete-a-user"},{"title":"Invite a user","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/users/invite","href":"/docs/api-reference/users/invite-a-user"},{"title":"Resend a user invite","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/x/users/invite/resend","href":"/docs/api-reference/users/resend-a-user-invite"},{"title":"Deactivate a user","deprecated":null,"version":null,"openapi":"/openapi.json patch /api/svc/v1/users/deactivate","href":"/docs/api-reference/users/deactivate-a-user"},{"title":"Revoke all sessions of a user","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/users/revoke-sessions","href":"/docs/api-reference/users/revoke-all-sessions-of-a-user"},{"title":"Activate a user","deprecated":null,"version":null,"openapi":"/openapi.json patch /api/svc/v1/users/activate","href":"/docs/api-reference/users/activate-a-user"},{"title":"Send a password reset email","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/x/users/forgot-password","href":"/docs/api-reference/users/send-a-password-reset-email"},{"title":"Change password","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/users/change-password","href":"/docs/api-reference/users/change-password"},{"title":"Check user registration","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/users/is-registered","href":"/docs/api-reference/users/check-user-registration"}]},{"group":"Virtual Accounts","pages":[{"title":"List virtual accounts","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/virtual-accounts","href":"/docs/api-reference/virtual-accounts/list-virtual-accounts"},{"title":"Create or update a virtual account","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/virtual-accounts","href":"/docs/api-reference/virtual-accounts/create-or-update-a-virtual-account"},{"title":"Check virtual account exists","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/virtual-accounts/exists","href":"/docs/api-reference/virtual-accounts/check-virtual-account-exists"},{"title":"Get a virtual account","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/virtual-accounts/{id}","href":"/docs/api-reference/virtual-accounts/get-a-virtual-account"},{"title":"Delete a virtual account","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/virtual-accounts/{id}","href":"/docs/api-reference/virtual-accounts/delete-a-virtual-account"},{"title":"Get token for a virtual account","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/virtual-accounts/{id}/token","href":"/docs/api-reference/virtual-accounts/get-token-for-a-virtual-account"},{"title":"Sync token to secret store","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/virtual-accounts/{id}/sync-to-secret-store","href":"/docs/api-reference/virtual-accounts/sync-token-to-secret-store"},{"title":"Regenerate token for a virtual account","deprecated":null,"version":null,"openapi":"/openapi.json post /api/svc/v1/virtual-accounts/{id}/regenerate-token","href":"/docs/api-reference/virtual-accounts/regenerate-token-for-a-virtual-account"},{"title":"Delete a JWT for a virtual account","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/virtual-accounts/{id}/jwt/{jwtId}","href":"/docs/api-reference/virtual-accounts/delete-a-jwt-for-a-virtual-account"}]},{"group":"Role Bindings","pages":[{"title":"List role bindings","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/role-bindings","href":"/docs/api-reference/role-bindings/list-role-bindings"},{"title":"Create or update a role binding","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/role-bindings","href":"/docs/api-reference/role-bindings/create-or-update-a-role-binding"},{"title":"Generate role-binding manifests for a resource or subject","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/role-bindings/generate-manifest","href":"/docs/api-reference/role-bindings/generate-role-binding-manifests-for-a-resource-or-subject"},{"title":"Check role binding exists","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/role-bindings/exists","href":"/docs/api-reference/role-bindings/check-role-binding-exists"},{"title":"Get a role binding by ID","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/role-bindings/{id}","href":"/docs/api-reference/role-bindings/get-a-role-binding-by-id"},{"title":"Delete a role binding by ID","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/role-bindings/{id}","href":"/docs/api-reference/role-bindings/delete-a-role-binding-by-id"}]},{"group":"Workspaces","pages":[{"title":"List workspaces","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/workspaces","href":"/docs/api-reference/workspaces/list-workspaces"},{"title":"Create or update a workspace","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/workspaces","href":"/docs/api-reference/workspaces/create-or-update-a-workspace"},{"title":"Search workspaces","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/workspaces/search","href":"/docs/api-reference/workspaces/search-workspaces"},{"title":"Get a workspace","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/workspaces/{id}","href":"/docs/api-reference/workspaces/get-a-workspace"},{"title":"Delete a workspace","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/workspaces/{id}","href":"/docs/api-reference/workspaces/delete-a-workspace"}]},{"group":"Provider Accounts","pages":[{"title":"List provider accounts","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/provider-accounts","href":"/docs/api-reference/provider-accounts/list-provider-accounts"},{"title":"Create or update a provider account","deprecated":null,"version":null,"openapi":"/openapi.json put /api/svc/v1/provider-accounts","href":"/docs/api-reference/provider-accounts/create-or-update-a-provider-account"},{"title":"Get a provider account","deprecated":null,"version":null,"openapi":"/openapi.json get /api/svc/v1/provider-accounts/{id}","href":"/docs/api-reference/provider-accounts/get-a-provider-account"},{"title":"Delete a provider account","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/svc/v1/provider-accounts/{id}","href":"/docs/api-reference/provider-accounts/delete-a-provider-account"}]}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/docs/ai-gateway/ecosystem"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/docs/changelog"}]}]},"basePath":"","title":"Create or update a resource from a manifest - TrueFoundry Docs","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","Page-BUDYNlhG.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","clsx-eKJ4rcii.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CwjSCXIK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-9EK5IAXV.js"]}