Fleet Control API: schemas

The request and response bodies of the operations in this API.

AddCustomerDeploymentDto

PropertyTypeRequiredDescription
distributionIdstringyes
namestringyes
operatorCustomerDeploymentOperatoryes
targetCustomerDeploymentTargetyes

AddCustomerDistributionDto

PropertyTypeRequiredDescription
distributionIdstringyes
refstring or nullno
repostring or nullno

AddCustomerRepoDto

PropertyTypeRequiredDescription
kindCustomerRepoKindyes
refstring or nullno
urlstringyes

AddModelDto

PropertyTypeRequiredDescription
configobject or nullnoEngine-specific extra config (vLLM args, Ollama params).
engineModelEngineyes
gpuMemFractionnumber or nullnovLLM gpu_memory_utilization (0–1). REQUIRED for vLLM and capped at 0.9 — an unbounded value would OOM the platform on unified memory.
isDefaultbooleanno
maxContextnumber or nullno
modelRefstringyesHF repo id for vLLM, Ollama tag for Ollama.
profileIdstringyes
quantizationstring or nullno
sourceModelSourceyes

ApplianceConfigDto

PropertyTypeRequiredDescription
applianceIdstringyes
configobjectyes

ApplianceConfigDtoDataEnvelope

PropertyTypeRequiredDescription
dataApplianceConfigDtoyes

ApplianceDto

PropertyTypeRequiredDescription
clientIdstringyes
createdAtstring (date-time)yes
dgxOsVersionstring or nullno
hardwareSerialstring or nullno
idstringyes
namestringyes
profileIdstring or nullno
statusApplianceStatusyes
updatedAtstring (date-time)yes

ApplianceDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of ApplianceDtoyes

ApplianceDtoDataEnvelope

PropertyTypeRequiredDescription
dataApplianceDtoyes

ApplianceProfileKind

Type: one of "lean-dgx", "standard-dgx", "airgap-dgx", "full-cloud"

ApplianceStatus

Type: one of "registered", "provisioning", "active", "retired"

ClientBrandingDto

PropertyTypeRequiredDescription
clientIdstringyes
configuredbooleanyesWhether this customer states ANY product identity. false is the resting state and NOT an error: the installation renders as Xema, which is the correct default. A 200 rather than a 404 so a console can say "nobody has branded this customer" instead of treating the resting state as an exception.
descriptionstringnoThe search-result and link-preview description (~165 chars).
faviconUrlstringnoA favicon URL. Same shape rule as logoUrl.
legalNamestringnoThe legal entity named in the copyright line.
logoUrlstringnoA logo image URL. An http(s) URL, or a root-relative path — which is the only shape an air-gapped box can serve.
productNamestringnoThe product name, as it is written everywhere.
supportUrlstringnoA support destination. Absent means NO support link is rendered anywhere — the host does not invent one.
taglinestringnoThe positioning line. Short enough for a footer column.
updatedAtstring (date-time) or nullno

ClientBrandingDtoDataEnvelope

PropertyTypeRequiredDescription
dataClientBrandingDtoyes

ClientDto

PropertyTypeRequiredDescription
createdAtstring (date-time)yes
idstringyes
namestringyes
slugstringyes
subscriberOrgIdstring or nullyesSUBJECT reference, never an authorization scope: the Xema org this customer OPERATES AS, when the customer is also a tenant of this platform. The deterministic join key from a self-serve subscription to this customer record. null for a customer onboarded purely by an operator (an appliance buyer who is not a tenant here). Written only when the client is created (POST /clients, POST /clients/ensure) and never updated.
updatedAtstring (date-time)yes

ClientDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of ClientDtoyes

ClientDtoDataEnvelope

PropertyTypeRequiredDescription
dataClientDtoyes

CreateClientDto

PropertyTypeRequiredDescription
namestringyes
slugstringyesURL-safe slug, unique across the fleet (lowercase a-z0-9-).
subscriberOrgIdstringnoSUBJECT reference (never an authorization scope): the Xema org this customer OPERATES AS, when the customer is also a tenant of this platform. Optional here: an operator onboarding an appliance buyer who is not a tenant leaves it unset. The self-serve path does not use this route — it uses POST /clients/ensure, which is idempotent on this value.

CreateCustomerDto

PropertyTypeRequiredDescription
namestringyes
slugstringyesURL-safe slug, unique across the fleet (lowercase a-z0-9-).
statusCustomerStatusno

CreateProvisioningProfileDto

PropertyTypeRequiredDescription
clientIdstringyes
configobjectyesPer-service Helm values overlay authored centrally.
distributionIdstringnoOptional id of the distribution this profile derives its biome-set core from.
distributionLockobjectnoOptional sealed distribution.lock.json (kernel DistributionLock, schemaVersion 5) produced by xema edition seal. Optional on a draft; REQUIRED to publish (a profile without one is refused with 409), and the enabled server-biome set is derived only from its biomes[] at materialize time. It is read at create with the reader materialize uses: an unsealed resolve preview, an unsupported schemaVersion or a malformed field is refused with 422 and nothing is stored.
enabledBiomesarray of stringyesSlugs of biomes selected for this setup. A recorded selection only: the deployable set comes from distributionLock, which publish requires.
inferenceEngineInferenceEngineyes
namestringyes
profileKindApplianceProfileKindyes
slugstringyesURL-safe slug, unique within the client.
targetClassDeploymentTargetClassyes

CustomerDeploymentDto

PropertyTypeRequiredDescription
createdAtstring (date-time)yes
customerIdstringyes
distributionIdstringyes
idstringyes
namestringyes
operatorCustomerDeploymentOperatoryes
targetCustomerDeploymentTargetyes
updatedAtstring (date-time)yes

CustomerDeploymentDtoDataEnvelope

PropertyTypeRequiredDescription
dataCustomerDeploymentDtoyes

CustomerDeploymentOperator

Type: one of "xema", "customer"

CustomerDeploymentTarget

Type: one of "cloud", "customer-cloud", "marketplace-aws", "marketplace-azure", "appliance-dgx"

CustomerDetailDto

PropertyTypeRequiredDescription
appliancesarray of ApplianceDtoyesAppliances registered for this customer (existing relation).
createdAtstring (date-time)yes
deploymentsarray of CustomerDeploymentDtoyes
distributionsarray of CustomerDistributionDtoyes
entitlementsarray of CustomerImageEntitlementDtoyes
idstringyes
namestringyes
reposarray of CustomerRepoDtoyes
slugstringyes
statusCustomerStatusyes
updatedAtstring (date-time)yes

CustomerDetailDtoDataEnvelope

PropertyTypeRequiredDescription
dataCustomerDetailDtoyes

CustomerDistributionDto

PropertyTypeRequiredDescription
createdAtstring (date-time)yes
customerIdstringyes
distributionIdstringyes
idstringyes
refstring or nullno
repostring or nullno

CustomerDistributionDtoDataEnvelope

PropertyTypeRequiredDescription
dataCustomerDistributionDtoyes

CustomerDto

PropertyTypeRequiredDescription
createdAtstring (date-time)yes
idstringyes
namestringyes
slugstringyes
statusCustomerStatusyes
updatedAtstring (date-time)yes

CustomerDtoDataEnvelope

PropertyTypeRequiredDescription
dataCustomerDtoyes

CustomerImageDeliveryMode

Type: one of "shared", "mirror", "airgap"

CustomerImageEntitlementDto

PropertyTypeRequiredDescription
createdAtstring (date-time)yes
customerIdstringyes
distributionIdstringyes
idstringyes
modeCustomerImageDeliveryModeyes
registryTargetstringyes

CustomerImageEntitlementDtoDataEnvelope

PropertyTypeRequiredDescription
dataCustomerImageEntitlementDtoyes

CustomerRepoDto

PropertyTypeRequiredDescription
createdAtstring (date-time)yes
customerIdstringyes
idstringyes
kindCustomerRepoKindyes
refstring or nullno
urlstringyes

CustomerRepoDtoDataEnvelope

PropertyTypeRequiredDescription
dataCustomerRepoDtoyes

CustomerRepoKind

Type: one of "distribution", "biomes", "deploy"

CustomerStatus

Type: one of "prospect", "active", "suspended", "churned"

CustomerSummaryDto

PropertyTypeRequiredDescription
applianceCountnumbernoNumber of appliances registered for this customer.
createdAtstring (date-time)yes
deploymentCountnumbernoNumber of deployments this customer runs.
idstringyes
namestringyes
slugstringyes
statusCustomerStatusyes
updatedAtstring (date-time)yes

CustomerSummaryDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of CustomerSummaryDtoyes

DeploymentTargetClass

Type: one of "appliance-dgx", "customer-cloud", "marketplace-aws", "marketplace-azure"

EngineModelRenderDto

PropertyTypeRequiredDescription
gpuMemFractionnumber or nullyes
maxContextnumber or nullyes
modelRefstringyesHF repo id (vLLM) or Ollama tag (Ollama) the engine pulls.
quantizationstring or nullyes
servedModelNamestringyesDeterministic slug served by the engine (--served-model-name / the gateway modelSlug).
sourceModelSourceyes

EngineRendersDto

PropertyTypeRequiredDescription
ollamaEngineModelRenderDto or nullyes
vllmEngineModelRenderDto or nullyes

GatewayProviderDescriptorDto

PropertyTypeRequiredDescription
profileIdstringyes
providersarray of GatewayProviderEntryDtoyes

GatewayProviderDescriptorDtoDataEnvelope

PropertyTypeRequiredDescription
dataGatewayProviderDescriptorDtoyes

GatewayProviderEntryDto

PropertyTypeRequiredDescription
engineModelEngineyes
isDefaultbooleanyes
modelRefstringyes
recommendedBaseUrlstringyesIn-cluster OpenAI-compatible base URL hint for this engine on the appliance.

InferenceEngine

Type: one of "vllm", "ollama", "both", "none"

InferenceRenderDto

PropertyTypeRequiredDescription
contentHashstringyessha256 hex of the gateway+engines content — change detection for fetch-and-apply.
enginesEngineRendersDtoyes
gatewayGatewayProviderDescriptorDtoyes
profileIdstringyes
renderedAtstring (date-time)yes

InferenceRenderDtoDataEnvelope

PropertyTypeRequiredDescription
dataInferenceRenderDtoyes

ModelActivationState

Type: one of "inactive", "active"

ModelConfigDto

PropertyTypeRequiredDescription
activationModelActivationStateyes
configobject or nullno
createdAtstring (date-time)yes
engineModelEngineyes
gpuMemFractionnumber or nullno
idstringyes
isDefaultbooleanyes
maxContextnumber or nullno
modelRefstringyes
profileIdstringyes
quantizationstring or nullno
sourceModelSourceyes
updatedAtstring (date-time)yes

ModelConfigDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of ModelConfigDtoyes

ModelConfigDtoDataEnvelope

PropertyTypeRequiredDescription
dataModelConfigDtoyes

ModelEngine

Type: one of "vllm", "ollama"

ModelSource

Type: one of "huggingface", "ollama_registry"

ProblemActionableBy

Who can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.

Type: one of "user", "org-admin", "platform", "none"

ProblemDetailsDto

RFC 9457 problem document. The declared members are the reserved core; extension members are TOP-LEVEL and OPEN, owned by the refusing plane.

PropertyTypeRequiredDescription
actionableByProblemActionableBynoWho can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.
codestringyesSCREAMING_SNAKE_CASE. The machine-branchable refusal, and the value a policy rule, a retry predicate and a UI branch all name.
detailstringnoHuman-readable and specific to THIS occurrence.
errorsarray of ProblemFieldIssueDtonoField-level issues, when the refusal is about the request body.
instancestringnoURI reference identifying the occurrence — a request path, a run, a row.
paramsmap of string or number or booleannoSafe i18n interpolation values for the message keyed by code — typed and allowlisted per code by its declaration. Never server-authored copy, never internal diagnostics.
retryProblemRetrynoWhat a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.
statusnumberyesThe HTTP status code, repeated in the body so a logged document is self-contained.
titlestringyesShort, human-readable, and STABLE for a given type. Never per-occurrence — that is detail.
traceIdstringnoW3C trace-context trace-id, present when the caller sent a traceparent. Omitted rather than invented when it did not.
typestringyesAbsolute URI identifying the refusal TYPE. Derived one-to-one from code, so a caller may branch on either and can never be told two different things. Never about:blank.

ProblemFieldIssueDto

PropertyTypeRequiredDescription
codestringnoSCREAMING_SNAKE_CASE code of THIS issue, for a frontend i18n key. Present when the issue was minted by a declared problem.
detailstringyesProse for logs and developers. A frontend localises from code + params instead.
paramsmap of string or number or booleannoSafe i18n interpolation values for this issue's code.
pointerstringyesRFC 6901 JSON Pointer into the request body. Root is "/".

ProblemRetry

What a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.

Type: one of "transient", "after-change", "never"

ProductIdentityFieldsDto

PropertyTypeRequiredDescription
descriptionstringnoThe search-result and link-preview description (~165 chars).
faviconUrlstringnoA favicon URL. Same shape rule as logoUrl.
legalNamestringnoThe legal entity named in the copyright line.
logoUrlstringnoA logo image URL. An http(s) URL, or a root-relative path — which is the only shape an air-gapped box can serve.
productNamestringnoThe product name, as it is written everywhere.
supportUrlstringnoA support destination. Absent means NO support link is rendered anywhere — the host does not invent one.
taglinestringnoThe positioning line. Short enough for a footer column.

ProvisioningArtifactDto

PropertyTypeRequiredDescription
brandingProductIdentityFieldsDtonoThe customer's PRODUCT IDENTITY, when they have registered one. OMITTED ENTIRELY when they have not — not {}, not seven empty strings. The appliance keys on the block's PRESENCE, so an unbranded customer's artifact is byte-identical to one produced before this field existed and xema-appliance provision does nothing rather than writing seven keys whose values are the host's own fallbacks spelled out. The seven fields become the XEMA_PRODUCT_* keys of the box's xema-host-web-runtime-config Secret, which the host-web chart already consumes with one envFrom.secretRef — so delivering a brand needs no chart change and no new channel.
clientIdstringyes
clientSlugstringyes
deploymentNamestringyesDeployment/release name on the box.
enabledBiomesarray of stringyes
inferenceEngineInferenceEngineyes
modelsarray of ProvisioningArtifactModelDtoyes
profileIdstringyes
profileKindApplianceProfileKindyes
profileVersionnumberyes
targetClassDeploymentTargetClassyes
valuesobjectyes

ProvisioningArtifactDtoDataEnvelope

PropertyTypeRequiredDescription
dataProvisioningArtifactDtoyes

ProvisioningArtifactModelDto

PropertyTypeRequiredDescription
engineModelEngineyes
gpuMemFractionnumber or nullno
isDefaultbooleanyes
maxContextnumber or nullno
modelRefstringyes
quantizationstring or nullno
sourceModelSourceyes

ProvisioningProfileDto

PropertyTypeRequiredDescription
clientIdstringyes
configobjectyes
createdAtstring (date-time)yes
distributionIdstring or nullno
distributionLockobject or nullno
enabledBiomesarray of stringyes
idstringyes
inferenceEngineInferenceEngineyes
namestringyes
profileKindApplianceProfileKindyes
slugstringyes
statusProvisioningProfileStatusyes
targetClassDeploymentTargetClassyes
updatedAtstring (date-time)yes
versionnumberyes

ProvisioningProfileDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of ProvisioningProfileDtoyes

ProvisioningProfileDtoDataEnvelope

PropertyTypeRequiredDescription
dataProvisioningProfileDtoyes

ProvisioningProfileStatus

Type: one of "draft", "published", "archived"

RegisterApplianceDto

PropertyTypeRequiredDescription
clientIdstringyes
dgxOsVersionstring or nullno
hardwareSerialstring or nullno
namestringyes
profileIdstring or nullnoProvisioning profile this appliance is built from.

SetApplianceConfigDto

PropertyTypeRequiredDescription
configobjectyesPer-appliance config overrides, layered over the profile.

SetClientBrandingDto

PropertyTypeRequiredDescription
descriptionstringnoThe search-result and link-preview description (~165 chars).
faviconUrlstringnoA favicon URL. Same shape rule as logoUrl.
legalNamestringnoThe legal entity named in the copyright line.
logoUrlstringnoA logo image URL. An http(s) URL, or a root-relative path — which is the only shape an air-gapped box can serve.
productNamestringnoThe product name, as it is written everywhere.
supportUrlstringnoA support destination. Absent means NO support link is rendered anywhere — the host does not invent one.
taglinestringnoThe positioning line. Short enough for a footer column.

SetCustomerImageEntitlementDto

PropertyTypeRequiredDescription
distributionIdstringyes
modeCustomerImageDeliveryModeyes
registryTargetstringyes

UpdateApplianceStatusDto

PropertyTypeRequiredDescription
statusApplianceStatusyes

UpdateCustomerDto

PropertyTypeRequiredDescription
namestringno
statusCustomerStatusno

UpdateModelActivationDto

PropertyTypeRequiredDescription
activationModelActivationStateyes