{
  "version": "source-0-1-0",
  "packageVersion": "0.1.0",
  "status": "Source preview, not a published supported release",
  "sourceRevision": "45e84479f864c1e5809f3aee3dae8cbffd30e7a8",
  "features": [
    {
      "name": "auth",
      "slug": "connection-details",
      "title": "API and sign-in configuration",
      "methods": [
        {
          "name": "getConfig",
          "signature": "auth.getConfig(requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckAuthConfig>",
          "description": "Loads hosted identity-provider settings for the frontend login flow.",
          "returns": "Promise<RailDeckAuthConfig>",
          "parameters": [
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/authentication.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls auth.getConfig with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAuthGetConfig(client: RailDeckDirectIntegrationClient) {\n  return client.auth.getConfig(\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAuthGetConfig",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/authentication.ts",
          "sha256": "3ef2262f5f21bb92b2e3f293e218cf1f3a28ec440f47f2098295f6ebcb74abf5"
        }
      ]
    },
    {
      "name": "session",
      "slug": "operator-and-preferences",
      "title": "Operator and preferences",
      "methods": [
        {
          "name": "getMe",
          "signature": "session.getMe(requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckMeResponse>",
          "description": "Loads the current Rail Deck user, account memberships, and active account.",
          "returns": "Promise<RailDeckMeResponse>",
          "parameters": [
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/session.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls session.getMe with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSessionGetMe(client: RailDeckDirectIntegrationClient) {\n  return client.session.getMe(\n    {}\n  );\n}\n",
          "exampleFunction": "exampleSessionGetMe",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getAppearance",
          "signature": "session.getAppearance(requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckProductAppearanceResponseV1>",
          "description": "Loads the signed-in person's application-wide appearance preference.",
          "returns": "Promise<RailDeckProductAppearanceResponseV1>",
          "parameters": [
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/session.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls session.getAppearance with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSessionGetAppearance(client: RailDeckDirectIntegrationClient) {\n  return client.session.getAppearance(\n    {}\n  );\n}\n",
          "exampleFunction": "exampleSessionGetAppearance",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "updateAppearance",
          "signature": "session.updateAppearance(input: UpdateRailDeckProductAppearanceRequestV1, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckProductAppearanceResponseV1>",
          "description": "Replaces the signed-in person's application-wide appearance preference.",
          "returns": "Promise<RailDeckProductAppearanceResponseV1>",
          "parameters": [
            {
              "name": "input",
              "type": "UpdateRailDeckProductAppearanceRequestV1",
              "optional": false,
              "description": "The operation input. Use the complete typed shape shown in the example and retain reviewed versions for writes."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/session.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls session.updateAppearance with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSessionUpdateAppearance(client: RailDeckDirectIntegrationClient) {\n  return client.session.updateAppearance(\n    {\n      \"style\": \"signal\",\n      \"colourMode\": \"dark\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleSessionUpdateAppearance",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "signOutAllDevices",
          "signature": "session.signOutAllDevices(requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckSignOutAllDevicesResponse>",
          "description": "Invalidates every Rail Deck token issued from the user's existing provider\nsessions and asks Keycloak to remove those sessions.",
          "returns": "Promise<RailDeckSignOutAllDevicesResponse>",
          "parameters": [
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/session.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls session.signOutAllDevices with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSessionSignOutAllDevices(client: RailDeckDirectIntegrationClient) {\n  return client.session.signOutAllDevices(\n    {}\n  );\n}\n",
          "exampleFunction": "exampleSessionSignOutAllDevices",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/session.ts",
          "sha256": "976d72b3576f76db9ba0b88c21fb4f410e47986fec5824cc5be1c77ed855262f"
        }
      ]
    },
    {
      "name": "accounts",
      "slug": "account-access",
      "title": "Account access",
      "methods": [
        {
          "name": "access.getProductAccess",
          "signature": "accounts.access.getProductAccess(accountId: RailDeckIdentifier, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckAccountProductAccessResponse>",
          "description": "Evaluates the account's current Product feature gates.",
          "returns": "Promise<RailDeckAccountProductAccessResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Authorised account containing the selected railway records."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/account-access.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accounts.access.getProductAccess with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccountsAccessGetProductAccess(client: RailDeckDirectIntegrationClient) {\n  return client.accounts.access.getProductAccess(\n    \"account-1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccountsAccessGetProductAccess",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/account-access.ts",
          "sha256": "dce3f2884aa1b37fdf81adaaeef485d00116a2beb7babad057f6afaccf7184cc"
        }
      ]
    },
    {
      "name": "layouts",
      "slug": "layouts",
      "title": "Layouts",
      "methods": [
        {
          "name": "saveLibraryOrder",
          "signature": "layouts.saveLibraryOrder(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, input: SaveLayoutLibraryOrderCommand, options: RailDeckRequestControlOptions = {}): Promise<LayoutLibraryOrderReceipt>",
          "description": "Saves one complete shared library order without changing layout membership.",
          "returns": "Promise<LayoutLibraryOrderReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Reviewed layout."
            },
            {
              "name": "input",
              "type": "SaveLayoutLibraryOrderCommand",
              "optional": false,
              "description": "Original intent, library, complete review and permutation."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Cancellation and timeout; no automatic mutation replay."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/layouts.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls layouts.saveLibraryOrder with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLayoutsSaveLibraryOrder(client: RailDeckDirectIntegrationClient) {\n  return client.layouts.saveLibraryOrder(\n    \"23\",\n    \"31\",\n    {\n      \"library\": \"locomotives\",\n      \"requestId\": \"aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa\",\n      \"reviewedIds\": [\n        \"7\",\n        \"8\"\n      ],\n      \"orderedIds\": [\n        \"8\",\n        \"7\"\n      ]\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLayoutsSaveLibraryOrder",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "list",
          "signature": "layouts.list(accountId: RailDeckIdentifier, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckLayoutListResponse>",
          "description": "Lists layouts in an account.",
          "returns": "Promise<RailDeckLayoutListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layouts."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/layouts.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls layouts.list with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLayoutsList(client: RailDeckDirectIntegrationClient) {\n  return client.layouts.list(\n    \"account 1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLayoutsList",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "create",
          "signature": "layouts.create(accountId: RailDeckIdentifier, input: CreateRailDeckLayoutInput, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckLayout>",
          "description": "Creates a layout inside an account.",
          "returns": "Promise<RailDeckLayout>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that will own the layout."
            },
            {
              "name": "input",
              "type": "CreateRailDeckLayoutInput",
              "optional": false,
              "description": "Layout name and optional description."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/layouts.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls layouts.create with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLayoutsCreate(client: RailDeckDirectIntegrationClient) {\n  return client.layouts.create(\n    \"account 1\",\n    {\n      \"name\": \"Demo\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLayoutsCreate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "get",
          "signature": "layouts.get(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckLayout>",
          "description": "Loads one layout.",
          "returns": "Promise<RailDeckLayout>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout to load."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/layouts.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls layouts.get with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLayoutsGet(client: RailDeckDirectIntegrationClient) {\n  return client.layouts.get(\n    \"account-1\",\n    \"layout-1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLayoutsGet",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getLifecycle",
          "signature": "layouts.getLifecycle(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckLayoutLifecycle>",
          "description": "Loads non-mutating lifecycle readiness for one layout.",
          "returns": "Promise<RailDeckLayoutLifecycle>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout to inspect."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/layouts.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls layouts.getLifecycle with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLayoutsGetLifecycle(client: RailDeckDirectIntegrationClient) {\n  return client.layouts.getLifecycle(\n    \"account 1\",\n    \"layout 1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLayoutsGetLifecycle",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getDeletionPreview",
          "signature": "layouts.getDeletionPreview(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckLayoutDeletionPreview>",
          "description": "Loads the current consequences which must be reviewed before deletion.",
          "returns": "Promise<RailDeckLayoutDeletionPreview>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Authorised account containing the selected railway records."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Explicitly selected layout within that account."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/layouts.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls layouts.getDeletionPreview with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLayoutsGetDeletionPreview(client: RailDeckDirectIntegrationClient) {\n  return client.layouts.getDeletionPreview(\n    \"account 1\",\n    \"layout 1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLayoutsGetDeletionPreview",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "update",
          "signature": "layouts.update(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, input: UpdateRailDeckLayoutInput, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckLayout>",
          "description": "Updates one layout.",
          "returns": "Promise<RailDeckLayout>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout to update."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckLayoutInput",
              "optional": false,
              "description": "Partial layout update."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/layouts.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls layouts.update with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLayoutsUpdate(client: RailDeckDirectIntegrationClient) {\n  return client.layouts.update(\n    \"account-1\",\n    \"layout-1\",\n    {\n      \"name\": \"Renamed Junction\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLayoutsUpdate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "delete",
          "signature": "layouts.delete(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, input: DeleteRailDeckLayoutInput, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckSuccessResponse>",
          "description": "Deletes one layout after confirming an unchanged consequence preview.",
          "returns": "Promise<RailDeckSuccessResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout to delete."
            },
            {
              "name": "input",
              "type": "DeleteRailDeckLayoutInput",
              "optional": false,
              "description": "Confirmed fingerprint returned by `getDeletionPreview`."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/layouts.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls layouts.delete with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLayoutsDelete(client: RailDeckDirectIntegrationClient) {\n  return client.layouts.delete(\n    \"account-1\",\n    \"layout-1\",\n    {\n      \"previewFingerprint\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n      \"confirmed\": true\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLayoutsDelete",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/layouts.ts",
          "sha256": "cc9880e57ead3b0d5b652336a633ea84a8e81d3daedc8d69e47a9a13a8038ec7"
        }
      ]
    },
    {
      "name": "catalogue",
      "slug": "catalogue",
      "title": "Product and decoder catalogue",
      "methods": [
        {
          "name": "listProductProfiles",
          "signature": "catalogue.listProductProfiles(input: RailDeckCatalogueProductProfileSearchInput = {}): Promise<RailDeckCatalogueProductProfileListResponse>",
          "description": "Searches active product profiles by text, type, barcode, or bounded result limit.",
          "returns": "Promise<RailDeckCatalogueProductProfileListResponse>",
          "parameters": [
            {
              "name": "input",
              "type": "RailDeckCatalogueProductProfileSearchInput",
              "optional": true,
              "description": "Optional search filters for customer-facing product profiles."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/catalogue.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls catalogue.listProductProfiles with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleCatalogueListProductProfiles(client: RailDeckDirectIntegrationClient) {\n  return client.catalogue.listProductProfiles(\n    {\n      \"query\": \"{{fixtureSearchQuery}}\",\n      \"productType\": \"locomotive\",\n      \"barcode\": \"5012345678901\",\n      \"limit\": 10\n    }\n  );\n}\n",
          "exampleFunction": "exampleCatalogueListProductProfiles",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getProductProfile",
          "signature": "catalogue.getProductProfile(productProfileId: RailDeckIdentifier): Promise<RailDeckCatalogueProductProfile>",
          "description": "Loads one active product profile.",
          "returns": "Promise<RailDeckCatalogueProductProfile>",
          "parameters": [
            {
              "name": "productProfileId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Product profile to load."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/catalogue.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls catalogue.getProductProfile with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleCatalogueGetProductProfile(client: RailDeckDirectIntegrationClient) {\n  return client.catalogue.getProductProfile(\n    \"product-1\"\n  );\n}\n",
          "exampleFunction": "exampleCatalogueGetProductProfile",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listDecoderProfiles",
          "signature": "catalogue.listDecoderProfiles(input: RailDeckCatalogueDecoderProfileSearchInput = {}): Promise<RailDeckCatalogueDecoderProfileListResponse>",
          "description": "Searches active decoder profiles by text, type, manufacturer, or bounded result limit.",
          "returns": "Promise<RailDeckCatalogueDecoderProfileListResponse>",
          "parameters": [
            {
              "name": "input",
              "type": "RailDeckCatalogueDecoderProfileSearchInput",
              "optional": true,
              "description": "Optional search filters for customer-facing decoder profiles."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/catalogue.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls catalogue.listDecoderProfiles with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleCatalogueListDecoderProfiles(client: RailDeckDirectIntegrationClient) {\n  return client.catalogue.listDecoderProfiles(\n    {\n      \"query\": \"{{fixtureSearchQuery}}\",\n      \"decoderType\": \"locomotive\",\n      \"manufacturer\": \"DCC Concepts\",\n      \"limit\": 5\n    }\n  );\n}\n",
          "exampleFunction": "exampleCatalogueListDecoderProfiles",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getDecoderProfile",
          "signature": "catalogue.getDecoderProfile(decoderProfileId: RailDeckIdentifier): Promise<RailDeckCatalogueDecoderProfile>",
          "description": "Loads one active decoder profile.",
          "returns": "Promise<RailDeckCatalogueDecoderProfile>",
          "parameters": [
            {
              "name": "decoderProfileId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Decoder profile to load."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/catalogue.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls catalogue.getDecoderProfile with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleCatalogueGetDecoderProfile(client: RailDeckDirectIntegrationClient) {\n  return client.catalogue.getDecoderProfile(\n    \"decoder-1\"\n  );\n}\n",
          "exampleFunction": "exampleCatalogueGetDecoderProfile",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/catalogue.ts",
          "sha256": "c9f87a9acf069008e7013ff94548d0506173486f04befcee94007d75780c2ab6"
        }
      ]
    },
    {
      "name": "locomotives",
      "slug": "locomotives",
      "title": "Locomotives",
      "methods": [
        {
          "name": "previewDuplication",
          "signature": "locomotives.previewDuplication(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<RailDeckLocomotiveDuplicationPreview>",
          "description": "Reviews the same-account configuration before choosing a new locomotive identity.",
          "returns": "Promise<RailDeckLocomotiveDuplicationPreview>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Authorised account containing the selected railway records."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Identifier of the explicitly selected record in your authorised development environment."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional filters or request controls shown in the type. The example demonstrates the supplied fields."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.previewDuplication with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesPreviewDuplication(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.previewDuplication(\n    \"23\",\n    \"4\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesPreviewDuplication",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "duplicate",
          "signature": "locomotives.duplicate(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, input: DuplicateRailDeckLocomotiveInput): Promise<RailDeckLocomotive>",
          "description": "Creates an independent unassigned locomotive from an exact reviewed source; do not retry automatically.",
          "returns": "Promise<RailDeckLocomotive>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Authorised account containing the selected railway records."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Identifier of the explicitly selected record in your authorised development environment."
            },
            {
              "name": "input",
              "type": "DuplicateRailDeckLocomotiveInput",
              "optional": false,
              "description": "The operation input. Use the complete typed shape shown in the example and retain reviewed versions for writes."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.duplicate with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesDuplicate(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.duplicate(\n    \"23\",\n    \"4\",\n    {\n      \"expectedSourceRevision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n      \"displayName\": \"{{fixtureDisplayName}}\",\n      \"runningNumber\": null,\n      \"dccAddress\": null,\n      \"includeNotes\": false,\n      \"includePhotographs\": true\n    }\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesDuplicate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getRelated",
          "signature": "locomotives.getRelated(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<RailDeckLocomotiveRelated>",
          "description": "Loads compact, genuine relationships for one account-owned locomotive.",
          "returns": "Promise<RailDeckLocomotiveRelated>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Authorised account containing the selected railway records."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Identifier of the explicitly selected record in your authorised development environment."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional filters or request controls shown in the type. The example demonstrates the supplied fields."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.getRelated with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesGetRelated(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.getRelated(\n    \"23\",\n    \"4\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesGetRelated",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "previewDrivingSettings",
          "signature": "locomotives.previewDrivingSettings(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, input: RailDeckDrivingPreviewInput, options: RailDeckRequestControlOptions = {}): Promise<RailDeckDrivingPreview>",
          "description": "Calculates draft behaviour from current authoritative inventory, without saving or moving anything.",
          "returns": "Promise<RailDeckDrivingPreview>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive to preview, including when explicitly part of a train."
            },
            {
              "name": "input",
              "type": "RailDeckDrivingPreviewInput",
              "optional": false,
              "description": "Draft choices and preview throttle; null style uses the saved default."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation for superseded previews."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.previewDrivingSettings with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesPreviewDrivingSettings(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.previewDrivingSettings(\n    \"account 1\",\n    \"loco 1\",\n    {\n      \"style\": {\n        \"mode\": \"direct\"\n      },\n      \"requestedSpeedPercent\": 50,\n      \"train\": null\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesPreviewDrivingSettings",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getDrivingSettings",
          "signature": "locomotives.getDrivingSettings(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<RailDeckLocomotiveDrivingSettings>",
          "description": "Loads saved driving choices without enabling motion profiles.",
          "returns": "Promise<RailDeckLocomotiveDrivingSettings>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose settings were opened."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.getDrivingSettings with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesGetDrivingSettings(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.getDrivingSettings(\n    \"account 1\",\n    \"loco 1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesGetDrivingSettings",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "saveDrivingSettings",
          "signature": "locomotives.saveDrivingSettings(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, input: SaveRailDeckLocomotiveDrivingSettingsInput): Promise<RailDeckLocomotiveDrivingSettings>",
          "description": "Saves complete choices against the revision opened, without retrying a conflict.",
          "returns": "Promise<RailDeckLocomotiveDrivingSettings>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive being configured."
            },
            {
              "name": "input",
              "type": "SaveRailDeckLocomotiveDrivingSettingsInput",
              "optional": false,
              "description": "Complete style and reviewed settings revision."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.saveDrivingSettings with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesSaveDrivingSettings(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.saveDrivingSettings(\n    \"account 1\",\n    \"loco 1\",\n    {\n      \"expectedRevision\": 0,\n      \"style\": {\n        \"mode\": \"direct\"\n      },\n      \"brake\": {\n        \"mode\": \"preset\",\n        \"preset\": \"balanced\",\n        \"version\": 1\n      },\n      \"running\": {\n        \"reverseRunning\": true,\n        \"expectedUpdatedAt\": \"2026-09-12T00:00:00.000Z\"\n      }\n    }\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesSaveDrivingSettings",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "list",
          "signature": "locomotives.list(accountId: RailDeckIdentifier, requestOptions: RailDeckRequestControlOptions & { withFunctionsOnly?: boolean } = {}): Promise<RailDeckLocomotiveListResponse>",
          "description": "Lists account-owned locomotives.",
          "returns": "Promise<RailDeckLocomotiveListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotives."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions & { withFunctionsOnly?: boolean }",
              "optional": true,
              "description": "Optional cancellation, timeout and functions-only collection filter."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.list with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesList(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.list(\n    \"account 1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesList",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "create",
          "signature": "locomotives.create(accountId: RailDeckIdentifier, input: CreateRailDeckLocomotiveInput, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckLocomotive>",
          "description": "Creates one account-owned locomotive.",
          "returns": "Promise<RailDeckLocomotive>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that will own the locomotive."
            },
            {
              "name": "input",
              "type": "CreateRailDeckLocomotiveInput",
              "optional": false,
              "description": "Locomotive details, DCC address, and reverse-running setting."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation and timeout controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.create with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesCreate(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.create(\n    \"account 1\",\n    {\n      \"displayName\": \"{{fixtureDisplayName}}\",\n      \"dccAddress\": 4468,\n      \"reverseRunning\": true,\n      \"softwareMaxSpeedPercent\": 45,\n      \"softwareSpeedLimitReason\": \"{{reviewedReason}}\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesCreate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "get",
          "signature": "locomotives.get(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckLocomotive>",
          "description": "Loads one account-owned locomotive.",
          "returns": "Promise<RailDeckLocomotive>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive to load."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation and timeout controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.get with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesGet(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.get(\n    \"account 1\",\n    \"loco 1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesGet",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "update",
          "signature": "locomotives.update(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, input: UpdateRailDeckLocomotiveInput, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckLocomotive>",
          "description": "Updates one account-owned locomotive.",
          "returns": "Promise<RailDeckLocomotive>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive to update."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckLocomotiveInput",
              "optional": false,
              "description": "Partial locomotive update."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation and timeout controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.update with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesUpdate(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.update(\n    \"account 1\",\n    \"loco 1\",\n    {\n      \"displayName\": \"{{fixtureDisplayName}}\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesUpdate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "delete",
          "signature": "locomotives.delete(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier): Promise<RailDeckSuccessResponse>",
          "description": "Deletes one account-owned locomotive.",
          "returns": "Promise<RailDeckSuccessResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive to delete."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.delete with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesDelete(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.delete(\n    \"account 1\",\n    \"loco 1\"\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesDelete",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listLayoutRoster",
          "signature": "locomotives.listLayoutRoster(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckLayoutLocomotiveListResponse>",
          "description": "Lists locomotives assigned to one layout roster.",
          "returns": "Promise<RailDeckLayoutLocomotiveListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout whose roster should be listed."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation and timeout controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.listLayoutRoster with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesListLayoutRoster(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.listLayoutRoster(\n    \"account 1\",\n    \"layout 1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesListLayoutRoster",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "assignToLayout",
          "signature": "locomotives.assignToLayout(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, input: AssignRailDeckLayoutLocomotiveInput, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckLayoutLocomotive>",
          "description": "Assigns a locomotive to one layout roster.",
          "returns": "Promise<RailDeckLayoutLocomotive>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout receiving the locomotive."
            },
            {
              "name": "input",
              "type": "AssignRailDeckLayoutLocomotiveInput",
              "optional": false,
              "description": "Locomotive id and optional display order."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation and timeout controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.assignToLayout with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesAssignToLayout(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.assignToLayout(\n    \"account 1\",\n    \"layout-1\",\n    {\n      \"locomotiveId\": \"loco-2\",\n      \"displayOrder\": 2\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesAssignToLayout",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "removeFromLayout",
          "signature": "locomotives.removeFromLayout(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckSuccessResponse>",
          "description": "Removes a locomotive from one layout roster.",
          "returns": "Promise<RailDeckSuccessResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the roster entry."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive to remove from the layout."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation and timeout controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.removeFromLayout with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesRemoveFromLayout(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.removeFromLayout(\n    \"account 1\",\n    \"layout 1\",\n    \"loco 1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesRemoveFromLayout",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listGroups",
          "signature": "locomotives.listGroups(accountId: RailDeckIdentifier): Promise<RailDeckLocomotiveGroupListResponse>",
          "description": "Lists locomotive groups for an account.",
          "returns": "Promise<RailDeckLocomotiveGroupListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the groups."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.listGroups with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesListGroups(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.listGroups(\n    \"account 1\"\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesListGroups",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "createGroup",
          "signature": "locomotives.createGroup(accountId: RailDeckIdentifier, input: CreateRailDeckLocomotiveGroupInput): Promise<RailDeckLocomotiveGroupDetail>",
          "description": "Creates a locomotive group.",
          "returns": "Promise<RailDeckLocomotiveGroupDetail>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that will own the group."
            },
            {
              "name": "input",
              "type": "CreateRailDeckLocomotiveGroupInput",
              "optional": false,
              "description": "Group name, display settings, and enabled state."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.createGroup with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesCreateGroup(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.createGroup(\n    \"account 1\",\n    {\n      \"displayName\": \"{{fixtureDisplayName}}\",\n      \"colour\": \"#2f6f5e\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesCreateGroup",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getGroup",
          "signature": "locomotives.getGroup(accountId: RailDeckIdentifier, locomotiveGroupId: RailDeckIdentifier): Promise<RailDeckLocomotiveGroupDetail>",
          "description": "Loads one locomotive group.",
          "returns": "Promise<RailDeckLocomotiveGroupDetail>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the group."
            },
            {
              "name": "locomotiveGroupId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive group to load."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.getGroup with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesGetGroup(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.getGroup(\n    \"account 1\",\n    \"group 1\"\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesGetGroup",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "updateGroup",
          "signature": "locomotives.updateGroup(accountId: RailDeckIdentifier, locomotiveGroupId: RailDeckIdentifier, input: UpdateRailDeckLocomotiveGroupInput): Promise<RailDeckLocomotiveGroupDetail>",
          "description": "Updates one locomotive group.",
          "returns": "Promise<RailDeckLocomotiveGroupDetail>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the group."
            },
            {
              "name": "locomotiveGroupId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive group to update."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckLocomotiveGroupInput",
              "optional": false,
              "description": "Partial group update."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.updateGroup with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesUpdateGroup(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.updateGroup(\n    \"account 1\",\n    \"group 1\",\n    {\n      \"displayName\": \"{{fixtureDisplayName}}\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesUpdateGroup",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "deleteGroup",
          "signature": "locomotives.deleteGroup(accountId: RailDeckIdentifier, locomotiveGroupId: RailDeckIdentifier): Promise<RailDeckSuccessResponse>",
          "description": "Deletes one locomotive group.",
          "returns": "Promise<RailDeckSuccessResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the group."
            },
            {
              "name": "locomotiveGroupId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive group to delete."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.deleteGroup with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesDeleteGroup(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.deleteGroup(\n    \"account 1\",\n    \"group 1\"\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesDeleteGroup",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listGroupMembers",
          "signature": "locomotives.listGroupMembers(accountId: RailDeckIdentifier, locomotiveGroupId: RailDeckIdentifier): Promise<RailDeckLocomotiveGroupMemberListResponse>",
          "description": "Lists members for one locomotive group.",
          "returns": "Promise<RailDeckLocomotiveGroupMemberListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the group."
            },
            {
              "name": "locomotiveGroupId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive group whose members should be listed."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.listGroupMembers with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesListGroupMembers(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.listGroupMembers(\n    \"account 1\",\n    \"group 1\"\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesListGroupMembers",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "replaceGroupMembers",
          "signature": "locomotives.replaceGroupMembers(accountId: RailDeckIdentifier, locomotiveGroupId: RailDeckIdentifier, input: ReplaceRailDeckLocomotiveGroupMembersInput): Promise<RailDeckLocomotiveGroupDetail>",
          "description": "Replaces all members for one locomotive group.",
          "returns": "Promise<RailDeckLocomotiveGroupDetail>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the group."
            },
            {
              "name": "locomotiveGroupId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive group to update."
            },
            {
              "name": "input",
              "type": "ReplaceRailDeckLocomotiveGroupMembersInput",
              "optional": false,
              "description": "Complete replacement member list."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.replaceGroupMembers with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesReplaceGroupMembers(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.replaceGroupMembers(\n    \"account 1\",\n    \"group-1\",\n    {\n      \"members\": [\n        {\n          \"locomotiveId\": \"loco-2\",\n          \"displayOrder\": 1\n        }\n      ]\n    }\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesReplaceGroupMembers",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "applyCatalogueProfile",
          "signature": "locomotives.applyCatalogueProfile(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, input: ApplyRailDeckCatalogueProfileInput): Promise<RailDeckLocomotiveCatalogueProfileApplication>",
          "description": "Applies or previews catalogue profile data for one locomotive.",
          "returns": "Promise<RailDeckLocomotiveCatalogueProfileApplication>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive receiving profile data."
            },
            {
              "name": "input",
              "type": "ApplyRailDeckCatalogueProfileInput",
              "optional": false,
              "description": "Application mode, profile ids, and section options."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotives.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotives.applyCatalogueProfile with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotivesApplyCatalogueProfile(client: RailDeckDirectIntegrationClient) {\n  return client.locomotives.applyCatalogueProfile(\n    \"account 1\",\n    \"loco-2\",\n    {\n      \"mode\": \"dry_run\",\n      \"productProfileId\": \"product-1\",\n      \"decoderProfileId\": \"decoder-1\",\n      \"options\": {\n        \"functions\": \"replace\",\n        \"cvDefaults\": \"merge\"\n      }\n    }\n  );\n}\n",
          "exampleFunction": "exampleLocomotivesApplyCatalogueProfile",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/locomotives.ts",
          "sha256": "e21d611661d6fae2e6d3c327164debfbc9cf9f6cd940967259308aea21f521b3"
        }
      ]
    },
    {
      "name": "rollingStock",
      "slug": "rolling-stock",
      "title": "Rolling stock",
      "methods": [
        {
          "name": "related",
          "signature": "rollingStock.related(accountId: string, id: string, options: RailDeckRequestControlOptions = {}): Promise<RailDeckRollingStockRelated>",
          "description": "Reads actual layout, train and catalogue relationships.",
          "returns": "Promise<RailDeckRollingStockRelated>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Authorised account containing the selected railway records."
            },
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "description": "Identifier of the explicitly selected record in your authorised development environment."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional filters or request controls shown in the type. The example demonstrates the supplied fields."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/rolling-stock.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls rollingStock.related with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRollingStockRelated(client: RailDeckDirectIntegrationClient) {\n  return client.rollingStock.related(\n    \"23\",\n    \"7\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRollingStockRelated",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "previewDuplication",
          "signature": "rollingStock.previewDuplication(accountId: string, id: string, options: RailDeckRequestControlOptions = {}): Promise<RailDeckRollingStockDuplicationPreview>",
          "description": "Reviews a source and its gallery.",
          "returns": "Promise<RailDeckRollingStockDuplicationPreview>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Authorised account containing the selected railway records."
            },
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "description": "Identifier of the explicitly selected record in your authorised development environment."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional filters or request controls shown in the type. The example demonstrates the supplied fields."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/rolling-stock.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls rollingStock.previewDuplication with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRollingStockPreviewDuplication(client: RailDeckDirectIntegrationClient) {\n  return client.rollingStock.previewDuplication(\n    \"23\",\n    \"7\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRollingStockPreviewDuplication",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "duplicate",
          "signature": "rollingStock.duplicate(accountId: string, id: string, input: DuplicateRailDeckRollingStockInput): Promise<RailDeckRollingStock>",
          "description": "Copies reviewed configuration into an independent vehicle.",
          "returns": "Promise<RailDeckRollingStock>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Authorised account containing the selected railway records."
            },
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "description": "Identifier of the explicitly selected record in your authorised development environment."
            },
            {
              "name": "input",
              "type": "DuplicateRailDeckRollingStockInput",
              "optional": false,
              "description": "The operation input. Use the complete typed shape shown in the example and retain reviewed versions for writes."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/rolling-stock.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls rollingStock.duplicate with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRollingStockDuplicate(client: RailDeckDirectIntegrationClient) {\n  return client.rollingStock.duplicate(\n    \"23\",\n    \"7\",\n    {\n      \"displayName\": \"{{fixtureDisplayName}}\",\n      \"expectedSourceRevision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n      \"runningNumber\": null,\n      \"includeNotes\": false,\n      \"includePhotographs\": true\n    }\n  );\n}\n",
          "exampleFunction": "exampleRollingStockDuplicate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listForLayout",
          "signature": "rollingStock.listForLayout(accountId: string, layoutId: string, options: RailDeckRequestControlOptions = {}): Promise<{ accountId: string; layoutId: string; rollingStockIds: string[] }>",
          "description": "Reads a layout's stock roster.",
          "returns": "Promise<{ accountId: string; layoutId: string; rollingStockIds: string[] }>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Authorised account containing the selected railway records."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Explicitly selected layout within that account."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional filters or request controls shown in the type. The example demonstrates the supplied fields."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/rolling-stock.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls rollingStock.listForLayout with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRollingStockListForLayout(client: RailDeckDirectIntegrationClient) {\n  return client.rollingStock.listForLayout(\n    \"account 1\",\n    \"layout/2\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRollingStockListForLayout",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "assignToLayout",
          "signature": "rollingStock.assignToLayout(accountId: string, layoutId: string, rollingStockId: string): Promise<RailDeckSuccessResponse>",
          "description": "Adds a compatible vehicle to a layout.",
          "returns": "Promise<RailDeckSuccessResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Authorised account containing the selected railway records."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Explicitly selected layout within that account."
            },
            {
              "name": "rollingStockId",
              "type": "string",
              "optional": false,
              "description": "Identifier of the explicitly selected record in your authorised development environment."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/rolling-stock.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls rollingStock.assignToLayout with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRollingStockAssignToLayout(client: RailDeckDirectIntegrationClient) {\n  return client.rollingStock.assignToLayout(\n    \"account 1\",\n    \"layout/2\",\n    \"stock/3\"\n  );\n}\n",
          "exampleFunction": "exampleRollingStockAssignToLayout",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "removeFromLayout",
          "signature": "rollingStock.removeFromLayout(accountId: string, layoutId: string, rollingStockId: string): Promise<RailDeckSuccessResponse>",
          "description": "Removes a vehicle's layout assignment.",
          "returns": "Promise<RailDeckSuccessResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Authorised account containing the selected railway records."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Explicitly selected layout within that account."
            },
            {
              "name": "rollingStockId",
              "type": "string",
              "optional": false,
              "description": "Identifier of the explicitly selected record in your authorised development environment."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/rolling-stock.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls rollingStock.removeFromLayout with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRollingStockRemoveFromLayout(client: RailDeckDirectIntegrationClient) {\n  return client.rollingStock.removeFromLayout(\n    \"account 1\",\n    \"layout/2\",\n    \"stock/3\"\n  );\n}\n",
          "exampleFunction": "exampleRollingStockRemoveFromLayout",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "list",
          "signature": "rollingStock.list(accountId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<RailDeckRollingStockListResponse>",
          "description": "Lists account-owned rolling stock.",
          "returns": "Promise<RailDeckRollingStockListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the rolling stock."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation and request controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/rolling-stock.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls rollingStock.list with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRollingStockList(client: RailDeckDirectIntegrationClient) {\n  return client.rollingStock.list(\n    \"account 1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRollingStockList",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "create",
          "signature": "rollingStock.create(accountId: RailDeckIdentifier, input: CreateRailDeckRollingStockInput): Promise<RailDeckRollingStock>",
          "description": "Creates one account-owned rolling-stock record.",
          "returns": "Promise<RailDeckRollingStock>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that will own the rolling-stock record."
            },
            {
              "name": "input",
              "type": "CreateRailDeckRollingStockInput",
              "optional": false,
              "description": "Rolling-stock details, weights, and optional safety limits."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/rolling-stock.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls rollingStock.create with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRollingStockCreate(client: RailDeckDirectIntegrationClient) {\n  return client.rollingStock.create(\n    \"account 1\",\n    {\n      \"displayName\": \"{{fixtureDisplayName}}\",\n      \"category\": \"coach\",\n      \"manufacturer\": \"Bachmann\",\n      \"className\": \"Mk1 SK\",\n      \"runningNumber\": \"E25624\",\n      \"emptyWeightGrams\": 145,\n      \"ladenWeightGrams\": 180,\n      \"maxSafeSpeedPercent\": 85\n    }\n  );\n}\n",
          "exampleFunction": "exampleRollingStockCreate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "get",
          "signature": "rollingStock.get(accountId: RailDeckIdentifier, rollingStockId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<RailDeckRollingStock>",
          "description": "Loads one account-owned rolling-stock record.",
          "returns": "Promise<RailDeckRollingStock>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the rolling-stock record."
            },
            {
              "name": "rollingStockId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Rolling-stock record to load."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation and request controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/rolling-stock.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls rollingStock.get with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRollingStockGet(client: RailDeckDirectIntegrationClient) {\n  return client.rollingStock.get(\n    \"account 1\",\n    \"stock-2\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRollingStockGet",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "update",
          "signature": "rollingStock.update(accountId: RailDeckIdentifier, rollingStockId: RailDeckIdentifier, input: UpdateRailDeckRollingStockInput): Promise<RailDeckRollingStock>",
          "description": "Updates the reviewed version of one account-owned rolling-stock record.",
          "returns": "Promise<RailDeckRollingStock>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the rolling-stock record."
            },
            {
              "name": "rollingStockId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Rolling-stock record to update."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckRollingStockInput",
              "optional": false,
              "description": "Reviewed expectedUpdatedAt version and partial rolling-stock update."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/rolling-stock.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls rollingStock.update with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRollingStockUpdate(client: RailDeckDirectIntegrationClient) {\n  return client.rollingStock.update(\n    \"account 1\",\n    \"stock-2\",\n    {\n      \"expectedUpdatedAt\": \"2026-07-02T09:00:00.000Z\",\n      \"displayName\": \"{{fixtureDisplayName}}\",\n      \"notes\": \"Runs in the demonstration rake.\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleRollingStockUpdate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "delete",
          "signature": "rollingStock.delete(accountId: RailDeckIdentifier, rollingStockId: RailDeckIdentifier): Promise<RailDeckSuccessResponse>",
          "description": "Deletes one account-owned rolling-stock record.",
          "returns": "Promise<RailDeckSuccessResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the rolling-stock record."
            },
            {
              "name": "rollingStockId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Rolling-stock record to delete."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/rolling-stock.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls rollingStock.delete with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRollingStockDelete(client: RailDeckDirectIntegrationClient) {\n  return client.rollingStock.delete(\n    \"account 1\",\n    \"stock-2\"\n  );\n}\n",
          "exampleFunction": "exampleRollingStockDelete",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "applyCatalogueProfile",
          "signature": "rollingStock.applyCatalogueProfile(accountId: RailDeckIdentifier, rollingStockId: RailDeckIdentifier, input: ApplyRailDeckCatalogueProfileInput): Promise<RailDeckRollingStockCatalogueProfileApplication>",
          "description": "Applies or previews a catalogue product profile for rolling stock.",
          "returns": "Promise<RailDeckRollingStockCatalogueProfileApplication>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the rolling-stock record."
            },
            {
              "name": "rollingStockId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Rolling-stock record receiving catalogue product data."
            },
            {
              "name": "input",
              "type": "ApplyRailDeckCatalogueProfileInput",
              "optional": false,
              "description": "Catalogue product profile, mode, and section options."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/rolling-stock.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls rollingStock.applyCatalogueProfile with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRollingStockApplyCatalogueProfile(client: RailDeckDirectIntegrationClient) {\n  return client.rollingStock.applyCatalogueProfile(\n    \"account 1\",\n    \"stock-2\",\n    {\n      \"mode\": \"dry_run\",\n      \"productProfileId\": \"product-rolling-stock-1\",\n      \"options\": {\n        \"productDetails\": \"merge\"\n      }\n    }\n  );\n}\n",
          "exampleFunction": "exampleRollingStockApplyCatalogueProfile",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/rolling-stock.ts",
          "sha256": "65ff1a2167f284687781c748866150d84b266ef9025f1a62c3be047d5cf3d119"
        }
      ]
    },
    {
      "name": "trainFormations",
      "slug": "saved-trains",
      "title": "Saved trains",
      "methods": [
        {
          "name": "getFunctionGrouping",
          "signature": "trainFormations.getFunctionGrouping(accountId: string, trainFormationId: string, options: RailDeckRequestControlOptions = {}): Promise<TrainFunctionGrouping>",
          "description": "Loads the train's complete function grouping for viewing or review.",
          "returns": "Promise<TrainFunctionGrouping>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "trainFormationId",
              "type": "string",
              "optional": false,
              "description": "Selected train."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation for retired readers."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/train-formations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls trainFormations.getFunctionGrouping with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleTrainFormationsGetFunctionGrouping(client: RailDeckDirectIntegrationClient) {\n  return client.trainFormations.getFunctionGrouping(\n    \"23\",\n    \"12\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleTrainFormationsGetFunctionGrouping",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "saveFunctionGrouping",
          "signature": "trainFormations.saveFunctionGrouping(accountId: string, trainFormationId: string, input: SaveTrainFunctionGrouping): Promise<TrainFunctionGrouping>",
          "description": "Saves one complete, reviewed train grouping without replaying uncertain writes.",
          "returns": "Promise<TrainFunctionGrouping>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "trainFormationId",
              "type": "string",
              "optional": false,
              "description": "Selected train."
            },
            {
              "name": "input",
              "type": "SaveTrainFunctionGrouping",
              "optional": false,
              "description": "Source revision and desired groups."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/train-formations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls trainFormations.saveFunctionGrouping with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleTrainFormationsSaveFunctionGrouping(client: RailDeckDirectIntegrationClient) {\n  return client.trainFormations.saveFunctionGrouping(\n    \"23\",\n    \"12\",\n    {\n      \"expectedRevision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n      \"groups\": [\n        {\n          \"key\": \"function:8\",\n          \"label\": \"Short horn\",\n          \"functionIds\": [\n            \"8\"\n          ]\n        }\n      ]\n    }\n  );\n}\n",
          "exampleFunction": "exampleTrainFormationsSaveFunctionGrouping",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "previewDuplication",
          "signature": "trainFormations.previewDuplication(accountId: string, id: string, options: RailDeckRequestControlOptions = {}): Promise<RailDeckTrainDuplicationPreview>",
          "description": "Reviews every vehicle in a train.",
          "returns": "Promise<RailDeckTrainDuplicationPreview>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Authorised account containing the selected railway records."
            },
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "description": "Identifier of the explicitly selected record in your authorised development environment."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional filters or request controls shown in the type. The example demonstrates the supplied fields."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/train-formations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls trainFormations.previewDuplication with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleTrainFormationsPreviewDuplication(client: RailDeckDirectIntegrationClient) {\n  return client.trainFormations.previewDuplication(\n    \"23\",\n    \"9\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleTrainFormationsPreviewDuplication",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "duplicate",
          "signature": "trainFormations.duplicate(accountId: string, id: string, input: DuplicateRailDeckTrainInput): Promise<RailDeckTrainFormation>",
          "description": "Atomically copies the complete train and its vehicles.",
          "returns": "Promise<RailDeckTrainFormation>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Authorised account containing the selected railway records."
            },
            {
              "name": "id",
              "type": "string",
              "optional": false,
              "description": "Identifier of the explicitly selected record in your authorised development environment."
            },
            {
              "name": "input",
              "type": "DuplicateRailDeckTrainInput",
              "optional": false,
              "description": "The operation input. Use the complete typed shape shown in the example and retain reviewed versions for writes."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/train-formations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls trainFormations.duplicate with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleTrainFormationsDuplicate(client: RailDeckDirectIntegrationClient) {\n  return client.trainFormations.duplicate(\n    \"23\",\n    \"9\",\n    {\n      \"displayName\": \"{{fixtureDisplayName}}\",\n      \"expectedSourceRevision\": \"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\n      \"includeNotes\": true,\n      \"includePhotographs\": true\n    }\n  );\n}\n",
          "exampleFunction": "exampleTrainFormationsDuplicate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getDrivingSettings",
          "signature": "trainFormations.getDrivingSettings(accountId: RailDeckIdentifier, trainFormationId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<RailDeckTrainDrivingSettings>",
          "description": "Loads train-owned choices, retaining inheritance instead of copying locomotive settings.",
          "returns": "Promise<RailDeckTrainDrivingSettings>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "trainFormationId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Saved train whose settings were opened."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/train-formations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls trainFormations.getDrivingSettings with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleTrainFormationsGetDrivingSettings(client: RailDeckDirectIntegrationClient) {\n  return client.trainFormations.getDrivingSettings(\n    \"account 1\",\n    \"train 1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleTrainFormationsGetDrivingSettings",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "saveDrivingSettings",
          "signature": "trainFormations.saveDrivingSettings(accountId: RailDeckIdentifier, trainFormationId: RailDeckIdentifier, input: SaveRailDeckTrainDrivingSettingsInput): Promise<RailDeckTrainDrivingSettings>",
          "description": "Saves complete style/handling choices without changing formation members.",
          "returns": "Promise<RailDeckTrainDrivingSettings>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "trainFormationId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Saved train being configured."
            },
            {
              "name": "input",
              "type": "SaveRailDeckTrainDrivingSettingsInput",
              "optional": false,
              "description": "Choices and revision retained when opened."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/train-formations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls trainFormations.saveDrivingSettings with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleTrainFormationsSaveDrivingSettings(client: RailDeckDirectIntegrationClient) {\n  return client.trainFormations.saveDrivingSettings(\n    \"account 1\",\n    \"train 1\",\n    {\n      \"expectedRevision\": 0,\n      \"style\": {\n        \"mode\": \"inherit\"\n      },\n      \"handling\": {\n        \"mode\": \"none\"\n      }\n    }\n  );\n}\n",
          "exampleFunction": "exampleTrainFormationsSaveDrivingSettings",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "list",
          "signature": "trainFormations.list(accountId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<RailDeckTrainFormationListResponse>",
          "description": "Lists account-owned train formations.",
          "returns": "Promise<RailDeckTrainFormationListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the train formations."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional filters or request controls shown in the type. The example demonstrates the supplied fields."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/train-formations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls trainFormations.list with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleTrainFormationsList(client: RailDeckDirectIntegrationClient) {\n  return client.trainFormations.list(\n    \"account 1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleTrainFormationsList",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listLayoutAssignments",
          "signature": "trainFormations.listLayoutAssignments(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<RailDeckLayoutTrainFormationListResponse>",
          "description": "Lists train formations assigned to one layout.",
          "returns": "Promise<RailDeckLayoutTrainFormationListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout whose train formations should be listed."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional filters or request controls shown in the type. The example demonstrates the supplied fields."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/train-formations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls trainFormations.listLayoutAssignments with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleTrainFormationsListLayoutAssignments(client: RailDeckDirectIntegrationClient) {\n  return client.trainFormations.listLayoutAssignments(\n    \"account 1\",\n    \"layout 1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleTrainFormationsListLayoutAssignments",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "create",
          "signature": "trainFormations.create(accountId: RailDeckIdentifier, input: CreateRailDeckTrainFormationInput): Promise<RailDeckTrainFormation>",
          "description": "Creates one account-owned train formation.",
          "returns": "Promise<RailDeckTrainFormation>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that will own the train formation."
            },
            {
              "name": "input",
              "type": "CreateRailDeckTrainFormationInput",
              "optional": false,
              "description": "Train formation details and optional initial members."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/train-formations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls trainFormations.create with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleTrainFormationsCreate(client: RailDeckDirectIntegrationClient) {\n  return client.trainFormations.create(\n    \"account 1\",\n    {\n      \"displayName\": \"{{fixtureDisplayName}}\",\n      \"members\": [\n        {\n          \"memberType\": \"locomotive\",\n          \"memberId\": \"loco-1\"\n        },\n        {\n          \"memberType\": \"rolling_stock\",\n          \"memberId\": \"stock-1\",\n          \"loadState\": \"laden\"\n        }\n      ]\n    }\n  );\n}\n",
          "exampleFunction": "exampleTrainFormationsCreate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "assignToLayout",
          "signature": "trainFormations.assignToLayout(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, input: AssignRailDeckTrainFormationToLayoutInput): Promise<RailDeckLayoutTrainFormation>",
          "description": "Assigns an account train formation to a layout.",
          "returns": "Promise<RailDeckLayoutTrainFormation>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout and train formation."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout receiving the train formation assignment."
            },
            {
              "name": "input",
              "type": "AssignRailDeckTrainFormationToLayoutInput",
              "optional": false,
              "description": "Train formation id and optional display settings."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/train-formations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls trainFormations.assignToLayout with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleTrainFormationsAssignToLayout(client: RailDeckDirectIntegrationClient) {\n  return client.trainFormations.assignToLayout(\n    \"account 1\",\n    \"layout 1\",\n    {\n      \"trainFormationId\": \"formation-2\",\n      \"displayOrder\": 2,\n      \"isActive\": true\n    }\n  );\n}\n",
          "exampleFunction": "exampleTrainFormationsAssignToLayout",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "get",
          "signature": "trainFormations.get(accountId: RailDeckIdentifier, trainFormationId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<RailDeckTrainFormation>",
          "description": "Loads one account-owned train formation.",
          "returns": "Promise<RailDeckTrainFormation>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the train formation."
            },
            {
              "name": "trainFormationId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Train formation to load."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional filters or request controls shown in the type. The example demonstrates the supplied fields."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/train-formations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls trainFormations.get with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleTrainFormationsGet(client: RailDeckDirectIntegrationClient) {\n  return client.trainFormations.get(\n    \"account 1\",\n    \"formation-2\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleTrainFormationsGet",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getHandlingProfile",
          "signature": "trainFormations.getHandlingProfile(accountId: RailDeckIdentifier, trainFormationId: RailDeckIdentifier): Promise<RailDeckTrainFormationHandlingProfile>",
          "description": "Loads the advisory handling profile for one train formation.",
          "returns": "Promise<RailDeckTrainFormationHandlingProfile>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the train formation."
            },
            {
              "name": "trainFormationId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Train formation whose handling profile should be loaded."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/train-formations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls trainFormations.getHandlingProfile with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleTrainFormationsGetHandlingProfile(client: RailDeckDirectIntegrationClient) {\n  return client.trainFormations.getHandlingProfile(\n    \"account 1\",\n    \"formation-2\"\n  );\n}\n",
          "exampleFunction": "exampleTrainFormationsGetHandlingProfile",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "update",
          "signature": "trainFormations.update(accountId: RailDeckIdentifier, trainFormationId: RailDeckIdentifier, input: UpdateRailDeckTrainFormationInput): Promise<RailDeckTrainFormation>",
          "description": "Updates one account-owned train formation.",
          "returns": "Promise<RailDeckTrainFormation>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the train formation."
            },
            {
              "name": "trainFormationId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Train formation to update."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckTrainFormationInput",
              "optional": false,
              "description": "Changed fields and the updatedAt version retained when opened."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/train-formations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls trainFormations.update with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleTrainFormationsUpdate(client: RailDeckDirectIntegrationClient) {\n  return client.trainFormations.update(\n    \"account 1\",\n    \"formation-2\",\n    {\n      \"displayName\": \"{{fixtureDisplayName}}\",\n      \"expectedUpdatedAt\": \"2026-07-02T09:00:00.000Z\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleTrainFormationsUpdate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "updateLayoutAssignment",
          "signature": "trainFormations.updateLayoutAssignment(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, trainFormationId: RailDeckIdentifier, input: UpdateRailDeckLayoutTrainFormationInput): Promise<RailDeckLayoutTrainFormation>",
          "description": "Updates display state for a train formation assigned to a layout.",
          "returns": "Promise<RailDeckLayoutTrainFormation>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout and train formation."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the assignment."
            },
            {
              "name": "trainFormationId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Train formation assignment to update."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckLayoutTrainFormationInput",
              "optional": false,
              "description": "Partial layout assignment update."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/train-formations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls trainFormations.updateLayoutAssignment with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleTrainFormationsUpdateLayoutAssignment(client: RailDeckDirectIntegrationClient) {\n  return client.trainFormations.updateLayoutAssignment(\n    \"account 1\",\n    \"layout 1\",\n    \"formation-2\",\n    {\n      \"isActive\": false\n    }\n  );\n}\n",
          "exampleFunction": "exampleTrainFormationsUpdateLayoutAssignment",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "replaceMembers",
          "signature": "trainFormations.replaceMembers(accountId: RailDeckIdentifier, trainFormationId: RailDeckIdentifier, input: ReplaceRailDeckTrainFormationMembersInput): Promise<RailDeckTrainFormation>",
          "description": "Replaces all ordered members for one train formation.",
          "returns": "Promise<RailDeckTrainFormation>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the train formation."
            },
            {
              "name": "trainFormationId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Train formation receiving replacement members."
            },
            {
              "name": "input",
              "type": "ReplaceRailDeckTrainFormationMembersInput",
              "optional": false,
              "description": "Complete replacement members and the updatedAt version retained when opened."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/train-formations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls trainFormations.replaceMembers with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleTrainFormationsReplaceMembers(client: RailDeckDirectIntegrationClient) {\n  return client.trainFormations.replaceMembers(\n    \"account 1\",\n    \"formation-2\",\n    {\n      \"expectedUpdatedAt\": \"2026-07-02T09:00:00.000Z\",\n      \"members\": [\n        {\n          \"memberType\": \"locomotive\",\n          \"memberId\": \"loco-1\",\n          \"displayOrder\": 0\n        }\n      ]\n    }\n  );\n}\n",
          "exampleFunction": "exampleTrainFormationsReplaceMembers",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "delete",
          "signature": "trainFormations.delete(accountId: RailDeckIdentifier, trainFormationId: RailDeckIdentifier, input: DeleteRailDeckTrainFormationInput): Promise<RailDeckSuccessResponse>",
          "description": "Deletes one account-owned train formation.",
          "returns": "Promise<RailDeckSuccessResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the train formation."
            },
            {
              "name": "trainFormationId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Train formation to delete."
            },
            {
              "name": "input",
              "type": "DeleteRailDeckTrainFormationInput",
              "optional": false,
              "description": "The updatedAt version reviewed before deletion."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/train-formations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls trainFormations.delete with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleTrainFormationsDelete(client: RailDeckDirectIntegrationClient) {\n  return client.trainFormations.delete(\n    \"account 1\",\n    \"formation-2\",\n    {\n      \"expectedUpdatedAt\": \"2026-07-02T09:00:00.000Z\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleTrainFormationsDelete",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "removeFromLayout",
          "signature": "trainFormations.removeFromLayout(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, trainFormationId: RailDeckIdentifier): Promise<RailDeckSuccessResponse>",
          "description": "Removes one train formation assignment from a layout.",
          "returns": "Promise<RailDeckSuccessResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout and train formation."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the assignment."
            },
            {
              "name": "trainFormationId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Train formation assignment to remove."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/train-formations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls trainFormations.removeFromLayout with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleTrainFormationsRemoveFromLayout(client: RailDeckDirectIntegrationClient) {\n  return client.trainFormations.removeFromLayout(\n    \"account 1\",\n    \"layout 1\",\n    \"formation-2\"\n  );\n}\n",
          "exampleFunction": "exampleTrainFormationsRemoveFromLayout",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/train-formations.ts",
          "sha256": "ed389e43ae7e792b24cc5713c47f3c8a978517971392dc5054666cf7ad765b0b"
        }
      ]
    },
    {
      "name": "currentState",
      "slug": "current-state",
      "title": "Layout state",
      "methods": [
        {
          "name": "getLayoutSnapshot",
          "signature": "currentState.getLayoutSnapshot(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckLayoutCurrentStateResponseV1>",
          "description": "Loads the latest known layout current-state snapshot.",
          "returns": "Promise<RailDeckLayoutCurrentStateResponseV1>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout to load."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation and timeout controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/current-state.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls currentState.getLayoutSnapshot with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleCurrentStateGetLayoutSnapshot(client: RailDeckDirectIntegrationClient) {\n  return client.currentState.getLayoutSnapshot(\n    \"account-1\",\n    \"layout-1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleCurrentStateGetLayoutSnapshot",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/current-state.ts",
          "sha256": "2872f85a4d639e4bb4400f63f285da1aaf5444eafe28d15967e57116de5703e4"
        }
      ]
    },
    {
      "name": "liveCommands",
      "slug": "live-commands",
      "title": "Train and accessory commands",
      "methods": [
        {
          "name": "recoverAccessoryCommand",
          "signature": "liveCommands.recoverAccessoryCommand(accountId: RailDeckIdentifier, controllerId: RailDeckIdentifier, commandId: RailDeckIdentifier, input: RecoverAccessoryCommandInput, options: RailDeckRequestControlOptions = {}): Promise<AccessoryCommandRecoveryResponse>",
          "description": "Asks about an original accessory command without sending it again.",
          "returns": "Promise<AccessoryCommandRecoveryResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account which owns the saved command."
            },
            {
              "name": "controllerId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Original controller, not replacement wiring."
            },
            {
              "name": "commandId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Previously accepted command to recover."
            },
            {
              "name": "input",
              "type": "RecoverAccessoryCommandInput",
              "optional": false,
              "description": "Layout scope for current operator authorisation."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation and deadline; interruption never means rollback."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/live-commands.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls liveCommands.recoverAccessoryCommand with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLiveCommandsRecoverAccessoryCommand(client: RailDeckDirectIntegrationClient) {\n  return client.liveCommands.recoverAccessoryCommand(\n    \"1\",\n    \"21\",\n    \"11111111-1111-4111-8111-111111111111\",\n    {\n      \"layoutId\": \"18\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLiveCommandsRecoverAccessoryCommand",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "setLocomotiveSpeed",
          "signature": "liveCommands.setLocomotiveSpeed(accountId: RailDeckIdentifier, controllerId: RailDeckIdentifier, input: SetLocomotiveSpeedInput): Promise<RailDeckLiveCommandResponse>",
          "description": "Sets a locomotive speed using user-facing direction.",
          "returns": "Promise<RailDeckLiveCommandResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the controller."
            },
            {
              "name": "controllerId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Controller that should receive the command."
            },
            {
              "name": "input",
              "type": "SetLocomotiveSpeedInput",
              "optional": false,
              "description": "Layout, locomotive, speed, direction, and optional expiry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/live-commands.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls liveCommands.setLocomotiveSpeed with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLiveCommandsSetLocomotiveSpeed(client: RailDeckDirectIntegrationClient) {\n  return client.liveCommands.setLocomotiveSpeed(\n    \"account-1\",\n    \"controller-1\",\n    {\n      \"layoutId\": \"layout-1\",\n      \"locomotiveId\": \"loco-1\",\n      \"speedPercent\": 35,\n      \"direction\": \"forward\",\n      \"trainFormationId\": \"formation-1\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleLiveCommandsSetLocomotiveSpeed",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "setLocomotiveFunction",
          "signature": "liveCommands.setLocomotiveFunction(accountId: RailDeckIdentifier, controllerId: RailDeckIdentifier, input: TriggerLocomotiveFunctionInput): Promise<RailDeckLiveCommandResponse>",
          "description": "Triggers or toggles a locomotive function.",
          "returns": "Promise<RailDeckLiveCommandResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the controller."
            },
            {
              "name": "controllerId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Controller that should receive the command."
            },
            {
              "name": "input",
              "type": "TriggerLocomotiveFunctionInput",
              "optional": false,
              "description": "Layout, locomotive, function number, active state, and momentary mode."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/live-commands.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls liveCommands.setLocomotiveFunction with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLiveCommandsSetLocomotiveFunction(client: RailDeckDirectIntegrationClient) {\n  return client.liveCommands.setLocomotiveFunction(\n    \"account-1\",\n    \"controller-1\",\n    {\n      \"layoutId\": \"layout-1\",\n      \"locomotiveId\": \"loco-1\",\n      \"functionNumber\": 2,\n      \"active\": true,\n      \"momentary\": true\n    }\n  );\n}\n",
          "exampleFunction": "exampleLiveCommandsSetLocomotiveFunction",
          "exampleEvidence": "SDK fixture assertion: packages/frontend-sdk/src/index.test.ts"
        },
        {
          "name": "setAccessoryState",
          "signature": "liveCommands.setAccessoryState(accountId: RailDeckIdentifier, controllerId: RailDeckIdentifier, input: SetAccessoryStateInput, options: RailDeckRequestControlOptions = {}): Promise<RailDeckLiveCommandResponse>",
          "description": "Sets one accessory state through the live command path.",
          "returns": "Promise<RailDeckLiveCommandResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the controller."
            },
            {
              "name": "controllerId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Controller that should receive the command."
            },
            {
              "name": "input",
              "type": "SetAccessoryStateInput",
              "optional": false,
              "description": "Layout, saved accessory, destination, optional reviewed revision and priority."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation and deadline, without automatic retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/live-commands.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls liveCommands.setAccessoryState with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLiveCommandsSetAccessoryState(client: RailDeckDirectIntegrationClient) {\n  return client.liveCommands.setAccessoryState(\n    \"1\",\n    \"21\",\n    {\n      \"layoutId\": \"18\",\n      \"accessoryId\": \"194\",\n      \"state\": \"thrown\",\n      \"configurationRevision\": 3,\n      \"expiresInMs\": 2000,\n      \"commandId\": \"6ab90f92-1111-4111-8111-000000000001\",\n      \"priority\": \"high\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLiveCommandsSetAccessoryState",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "emergencyStop",
          "signature": "liveCommands.emergencyStop(accountId: RailDeckIdentifier, controllerId: RailDeckIdentifier, layoutId: RailDeckIdentifier, track = 'main'): Promise<RailDeckLiveCommandResponse>",
          "description": "Sends an emergency track-power-off command through the live path.",
          "returns": "Promise<RailDeckLiveCommandResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the controller."
            },
            {
              "name": "controllerId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Controller that should receive the command."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout being controlled."
            },
            {
              "name": "track",
              "type": "string",
              "optional": true,
              "description": "Track scope, usually `main`."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/live-commands.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls liveCommands.emergencyStop with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLiveCommandsEmergencyStop(client: RailDeckDirectIntegrationClient) {\n  return client.liveCommands.emergencyStop(\n    \"account-1\",\n    \"controller-1\",\n    \"layout-1\",\n    undefined\n  );\n}\n",
          "exampleFunction": "exampleLiveCommandsEmergencyStop",
          "exampleEvidence": "SDK fixture assertion: packages/frontend-sdk/src/index.test.ts"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/index.test.ts",
          "sha256": "f3a2aa8b0bf02d7585d471de9c70df9b299fdf613ee9dedfaf9c4c23d07147f3"
        },
        {
          "path": "packages/frontend-sdk/src/features/live-commands.ts",
          "sha256": "d49916ad55515f8ad4c95f614ac9b4688ae3f0a7c0f119c548c63cf8eeffa56d"
        }
      ]
    },
    {
      "name": "system",
      "slug": "track-power",
      "title": "Track power",
      "methods": [
        {
          "name": "getTrackPower",
          "signature": "system.getTrackPower(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckTrackPowerResponse>",
          "description": "Loads the latest known track-power state for a layout.",
          "returns": "Promise<RailDeckTrackPowerResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout to inspect."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/system.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls system.getTrackPower with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSystemGetTrackPower(client: RailDeckDirectIntegrationClient) {\n  return client.system.getTrackPower(\n    \"account-1\",\n    \"layout-1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleSystemGetTrackPower",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "setTrackPower",
          "signature": "system.setTrackPower(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, input: SetRailDeckTrackPowerInput, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckTrackPowerCommandResponse>",
          "description": "Sets track power for one controller and track scope.",
          "returns": "Promise<RailDeckTrackPowerCommandResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout to control."
            },
            {
              "name": "input",
              "type": "SetRailDeckTrackPowerInput",
              "optional": false,
              "description": "Controller, track, state, and optional emergency mode."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/system.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls system.setTrackPower with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSystemSetTrackPower(client: RailDeckDirectIntegrationClient) {\n  return client.system.setTrackPower(\n    \"account 1\",\n    \"layout-1\",\n    {\n      \"controllerId\": \"controller-1\",\n      \"track\": \"main\",\n      \"state\": \"on\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleSystemSetTrackPower",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/system.ts",
          "sha256": "074dddb467b1791c06970e10e39dd06119faa8b1899f9b49e569bc4cd033a552"
        }
      ]
    },
    {
      "name": "operatingPolicy",
      "slug": "operating-policy",
      "title": "Speed limits and operating rules",
      "methods": [
        {
          "name": "previewLocomotive",
          "signature": "operatingPolicy.previewLocomotive(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, input: PreviewRailDeckLocomotiveOperatingPolicyInput): Promise<RailDeckLocomotiveOperatingPolicyPreview>",
          "description": "Previews the resolved operating policy for one layout locomotive.",
          "returns": "Promise<RailDeckLocomotiveOperatingPolicyPreview>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose policy should be previewed."
            },
            {
              "name": "input",
              "type": "PreviewRailDeckLocomotiveOperatingPolicyInput",
              "optional": false,
              "description": "Requested speed, optional direction, and optional train formation."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/operating-policy.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls operatingPolicy.previewLocomotive with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleOperatingPolicyPreviewLocomotive(client: RailDeckDirectIntegrationClient) {\n  return client.operatingPolicy.previewLocomotive(\n    \"account 1\",\n    \"layout 1\",\n    \"loco 1\",\n    {\n      \"trainFormationId\": \"formation 1\",\n      \"requestedSpeedPercent\": 75,\n      \"requestedDirection\": \"forward\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleOperatingPolicyPreviewLocomotive",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/operating-policy.ts",
          "sha256": "aa0f5dc88e7fe5df13c94f6966cf13f65586bc1971aa99f18f688674645e11f1"
        }
      ]
    },
    {
      "name": "locomotiveFunctions",
      "slug": "locomotive-functions",
      "title": "Locomotive functions",
      "methods": [
        {
          "name": "copy",
          "signature": "locomotiveFunctions.copy(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, input: CopyRailDeckLocomotiveFunctionsInput): Promise<RailDeckLocomotiveFunctionListResponse>",
          "description": "Copies selected same-account functions with reviewed revisions and explicit replacements.",
          "returns": "Promise<RailDeckLocomotiveFunctionListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Destination."
            },
            {
              "name": "input",
              "type": "CopyRailDeckLocomotiveFunctionsInput",
              "optional": false,
              "description": "Reviewed source selections and explicit replacements."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-functions.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveFunctions.copy with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveFunctionsCopy(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveFunctions.copy(\n    \"23\",\n    \"4\",\n    {\n      \"sourceLocomotiveId\": \"5\",\n      \"functions\": [\n        {\n          \"id\": \"7\",\n          \"expectedRevision\": 3,\n          \"replace\": {\n            \"id\": \"9\",\n            \"expectedRevision\": 2\n          }\n        }\n      ]\n    }\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveFunctionsCopy",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "list",
          "signature": "locomotiveFunctions.list(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<RailDeckLocomotiveFunctionListResponse>",
          "description": "Lists function definitions for one locomotive.",
          "returns": "Promise<RailDeckLocomotiveFunctionListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose functions should be listed."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional caller cancellation and request timeout."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-functions.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveFunctions.list with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveFunctionsList(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveFunctions.list(\n    \"account-1\",\n    \"loco-1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveFunctionsList",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "create",
          "signature": "locomotiveFunctions.create(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, input: CreateRailDeckLocomotiveFunctionInput): Promise<RailDeckLocomotiveFunction>",
          "description": "Creates a function definition for one locomotive.",
          "returns": "Promise<RailDeckLocomotiveFunction>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive receiving the function definition."
            },
            {
              "name": "input",
              "type": "CreateRailDeckLocomotiveFunctionInput",
              "optional": false,
              "description": "Function number, label, momentary mode, visibility, and display metadata."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-functions.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveFunctions.create with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveFunctionsCreate(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveFunctions.create(\n    \"23\",\n    \"4\",\n    {\n      \"functionNumber\": 2,\n      \"label\": \"Whistle\",\n      \"meaning\": \"whistle-short\",\n      \"momentary\": true\n    }\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveFunctionsCreate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "get",
          "signature": "locomotiveFunctions.get(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, functionId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<RailDeckLocomotiveFunction>",
          "description": "Loads one locomotive function definition.",
          "returns": "Promise<RailDeckLocomotiveFunction>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive containing the function definition."
            },
            {
              "name": "functionId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Function definition to load."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional caller cancellation and request timeout."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-functions.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveFunctions.get with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveFunctionsGet(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveFunctions.get(\n    \"account 1\",\n    \"loco 1\",\n    \"function 1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveFunctionsGet",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "update",
          "signature": "locomotiveFunctions.update(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, functionId: RailDeckIdentifier, input: UpdateRailDeckLocomotiveFunctionInput): Promise<RailDeckLocomotiveFunction>",
          "description": "Updates one locomotive function definition.",
          "returns": "Promise<RailDeckLocomotiveFunction>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive containing the function definition."
            },
            {
              "name": "functionId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Function definition to update."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckLocomotiveFunctionInput",
              "optional": false,
              "description": "Partial function definition update."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-functions.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveFunctions.update with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveFunctionsUpdate(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveFunctions.update(\n    \"account-1\",\n    \"loco-1\",\n    \"fn-2\",\n    {\n      \"expectedRevision\": 1,\n      \"visible\": false\n    }\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveFunctionsUpdate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "delete",
          "signature": "locomotiveFunctions.delete(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, functionId: RailDeckIdentifier, input: { expectedRevision: number }): Promise<RailDeckSuccessResponse>",
          "description": "Deletes one locomotive function definition.",
          "returns": "Promise<RailDeckSuccessResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive containing the function definition."
            },
            {
              "name": "functionId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Function definition to delete."
            },
            {
              "name": "input",
              "type": "{ expectedRevision: number }",
              "optional": false,
              "description": "Required revision from the reviewed definition."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-functions.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveFunctions.delete with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveFunctionsDelete(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveFunctions.delete(\n    \"account-1\",\n    \"loco-1\",\n    \"fn-2\",\n    {\n      \"expectedRevision\": 2\n    }\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveFunctionsDelete",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "arrange",
          "signature": "locomotiveFunctions.arrange(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, input: { functions: { id: RailDeckIdentifier; expectedRevision: number }[] }): Promise<RailDeckLocomotiveFunctionListResponse>",
          "description": "Atomically saves exact membership and reviewed revisions in display order.",
          "returns": "Promise<RailDeckLocomotiveFunctionListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Target locomotive."
            },
            {
              "name": "input",
              "type": "{ functions: { id: RailDeckIdentifier; expectedRevision: number }[] }",
              "optional": false,
              "description": "Exact collection in desired order with reviewed revisions."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-functions.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveFunctions.arrange with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveFunctionsArrange(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveFunctions.arrange(\n    \"23\",\n    \"4\",\n    {\n      \"functions\": [\n        {\n          \"id\": \"7\",\n          \"expectedRevision\": 3\n        },\n        {\n          \"id\": \"2\",\n          \"expectedRevision\": 1\n        }\n      ]\n    }\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveFunctionsArrange",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/locomotive-functions.ts",
          "sha256": "ffcf6bead6ec95818f16a7b5317f1b92a103ea792d5d4a86fb657620e8554ce4"
        }
      ]
    },
    {
      "name": "locomotiveCvs",
      "slug": "cvs-and-programming",
      "title": "CVs and programming",
      "methods": [
        {
          "name": "listValues",
          "signature": "locomotiveCvs.listValues(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier): Promise<RailDeckLocomotiveCvValueListResponse>",
          "description": "Lists stored CV values for one locomotive.",
          "returns": "Promise<RailDeckLocomotiveCvValueListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose CVs should be listed."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-cvs.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveCvs.listValues with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveCvsListValues(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveCvs.listValues(\n    \"account-1\",\n    \"loco-1\"\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveCvsListValues",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getValue",
          "signature": "locomotiveCvs.getValue(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, cvNumber: number): Promise<RailDeckLocomotiveCvValue>",
          "description": "Loads one stored CV value.",
          "returns": "Promise<RailDeckLocomotiveCvValue>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose CV should be loaded."
            },
            {
              "name": "cvNumber",
              "type": "number",
              "optional": false,
              "description": "CV number to load."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-cvs.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveCvs.getValue with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveCvsGetValue(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveCvs.getValue(\n    \"account 1\",\n    \"loco 1\",\n    29\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveCvsGetValue",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "setValue",
          "signature": "locomotiveCvs.setValue(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, cvNumber: number, input: SetRailDeckLocomotiveCvValueInput): Promise<RailDeckLocomotiveCvValue>",
          "description": "Sets one stored CV value.",
          "returns": "Promise<RailDeckLocomotiveCvValue>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose CV should be stored."
            },
            {
              "name": "cvNumber",
              "type": "number",
              "optional": false,
              "description": "CV number to store."
            },
            {
              "name": "input",
              "type": "SetRailDeckLocomotiveCvValueInput",
              "optional": false,
              "description": "CV value, source, and optional notes."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-cvs.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveCvs.setValue with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveCvsSetValue(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveCvs.setValue(\n    \"account-1\",\n    \"loco-1\",\n    3,\n    {\n      \"value\": 12,\n      \"source\": \"manual\",\n      \"notes\": \"Demo value\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveCvsSetValue",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "deleteValue",
          "signature": "locomotiveCvs.deleteValue(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, cvNumber: number): Promise<RailDeckSuccessResponse>",
          "description": "Deletes one stored CV value.",
          "returns": "Promise<RailDeckSuccessResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose CV should be deleted."
            },
            {
              "name": "cvNumber",
              "type": "number",
              "optional": false,
              "description": "CV number to delete."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-cvs.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveCvs.deleteValue with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveCvsDeleteValue(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveCvs.deleteValue(\n    \"account 1\",\n    \"loco 1\",\n    29\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveCvsDeleteValue",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "readValue",
          "signature": "locomotiveCvs.readValue(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, cvNumber: number, input: ReadRailDeckLocomotiveCvInput): Promise<RailDeckLocomotiveCvProgrammingResponse>",
          "description": "Queues a controller-backed CV read operation.",
          "returns": "Promise<RailDeckLocomotiveCvProgrammingResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose decoder should be read."
            },
            {
              "name": "cvNumber",
              "type": "number",
              "optional": false,
              "description": "CV number to read."
            },
            {
              "name": "input",
              "type": "ReadRailDeckLocomotiveCvInput",
              "optional": false,
              "description": "Controller id and optional idempotency key."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-cvs.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveCvs.readValue with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveCvsReadValue(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveCvs.readValue(\n    \"account-1\",\n    \"loco-1\",\n    29,\n    {\n      \"controllerId\": \"controller-1\",\n      \"idempotencyKey\": \"read-29\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveCvsReadValue",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "writeValue",
          "signature": "locomotiveCvs.writeValue(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, cvNumber: number, input: WriteRailDeckLocomotiveCvInput): Promise<RailDeckLocomotiveCvProgrammingResponse>",
          "description": "Queues a controller-backed CV write operation.",
          "returns": "Promise<RailDeckLocomotiveCvProgrammingResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose decoder should be written."
            },
            {
              "name": "cvNumber",
              "type": "number",
              "optional": false,
              "description": "CV number to write."
            },
            {
              "name": "input",
              "type": "WriteRailDeckLocomotiveCvInput",
              "optional": false,
              "description": "Controller id, CV value, and optional idempotency key."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-cvs.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveCvs.writeValue with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveCvsWriteValue(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveCvs.writeValue(\n    \"account-1\",\n    \"loco-1\",\n    2,\n    {\n      \"controllerId\": \"controller-1\",\n      \"value\": 5\n    }\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveCvsWriteValue",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getTuning",
          "signature": "locomotiveCvs.getTuning(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier): Promise<RailDeckLocomotiveTuning>",
          "description": "Loads friendly tuning values for one locomotive.",
          "returns": "Promise<RailDeckLocomotiveTuning>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose tuning should be loaded."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-cvs.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveCvs.getTuning with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveCvsGetTuning(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveCvs.getTuning(\n    \"account 1\",\n    \"loco 1\"\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveCvsGetTuning",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "updateTuning",
          "signature": "locomotiveCvs.updateTuning(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, input: UpdateRailDeckLocomotiveTuningInput): Promise<RailDeckLocomotiveTuning>",
          "description": "Updates friendly tuning values for one locomotive.",
          "returns": "Promise<RailDeckLocomotiveTuning>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose tuning should be updated."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckLocomotiveTuningInput",
              "optional": false,
              "description": "Friendly tuning field updates."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-cvs.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveCvs.updateTuning with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveCvsUpdateTuning(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveCvs.updateTuning(\n    \"account-1\",\n    \"loco-1\",\n    {\n      \"values\": {\n        \"acceleration\": 12,\n        \"topSpeed\": null\n      }\n    }\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveCvsUpdateTuning",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listProgrammingPresets",
          "signature": "locomotiveCvs.listProgrammingPresets(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier): Promise<RailDeckLocomotiveProgrammingPresetListResponse>",
          "description": "Lists friendly programming presets for one locomotive.",
          "returns": "Promise<RailDeckLocomotiveProgrammingPresetListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose presets should be listed."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-cvs.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveCvs.listProgrammingPresets with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveCvsListProgrammingPresets(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveCvs.listProgrammingPresets(\n    \"account-1\",\n    \"loco-1\"\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveCvsListProgrammingPresets",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listProgrammingBatches",
          "signature": "locomotiveCvs.listProgrammingBatches(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier): Promise<RailDeckLocomotiveProgrammingBatchListResponse>",
          "description": "Lists programming batches for one locomotive.",
          "returns": "Promise<RailDeckLocomotiveProgrammingBatchListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose batches should be listed."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-cvs.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveCvs.listProgrammingBatches with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveCvsListProgrammingBatches(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveCvs.listProgrammingBatches(\n    \"account 1\",\n    \"loco 1\"\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveCvsListProgrammingBatches",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "createProgrammingBatch",
          "signature": "locomotiveCvs.createProgrammingBatch(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, input: CreateRailDeckLocomotiveProgrammingBatchInput): Promise<RailDeckLocomotiveProgrammingBatch>",
          "description": "Creates a planned programming batch for one locomotive.",
          "returns": "Promise<RailDeckLocomotiveProgrammingBatch>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose decoder should be programmed."
            },
            {
              "name": "input",
              "type": "CreateRailDeckLocomotiveProgrammingBatchInput",
              "optional": false,
              "description": "Controller, preset, tuning values, verification, and idempotency details."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-cvs.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveCvs.createProgrammingBatch with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveCvsCreateProgrammingBatch(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveCvs.createProgrammingBatch(\n    \"account-1\",\n    \"loco-1\",\n    {\n      \"controllerId\": \"controller-1\",\n      \"presetCode\": \"smooth-driving\",\n      \"values\": {\n        \"acceleration\": 10\n      },\n      \"verifyAfterWrite\": true\n    }\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveCvsCreateProgrammingBatch",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getProgrammingBatch",
          "signature": "locomotiveCvs.getProgrammingBatch(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, batchId: RailDeckIdentifier): Promise<RailDeckLocomotiveProgrammingBatch>",
          "description": "Loads one programming batch.",
          "returns": "Promise<RailDeckLocomotiveProgrammingBatch>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose batch should be loaded."
            },
            {
              "name": "batchId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Programming batch to load."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-cvs.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveCvs.getProgrammingBatch with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveCvsGetProgrammingBatch(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveCvs.getProgrammingBatch(\n    \"account 1\",\n    \"loco 1\",\n    \"batch 1\"\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveCvsGetProgrammingBatch",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "startProgrammingBatch",
          "signature": "locomotiveCvs.startProgrammingBatch(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, batchId: RailDeckIdentifier): Promise<RailDeckLocomotiveProgrammingBatch>",
          "description": "Starts one programming batch.",
          "returns": "Promise<RailDeckLocomotiveProgrammingBatch>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose batch should be started."
            },
            {
              "name": "batchId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Programming batch to start."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-cvs.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveCvs.startProgrammingBatch with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveCvsStartProgrammingBatch(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveCvs.startProgrammingBatch(\n    \"account-1\",\n    \"loco-1\",\n    \"batch-1\"\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveCvsStartProgrammingBatch",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "pauseProgrammingBatch",
          "signature": "locomotiveCvs.pauseProgrammingBatch(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, batchId: RailDeckIdentifier): Promise<RailDeckLocomotiveProgrammingBatch>",
          "description": "Pauses one programming batch.",
          "returns": "Promise<RailDeckLocomotiveProgrammingBatch>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose batch should be paused."
            },
            {
              "name": "batchId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Programming batch to pause."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-cvs.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveCvs.pauseProgrammingBatch with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveCvsPauseProgrammingBatch(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveCvs.pauseProgrammingBatch(\n    \"account-1\",\n    \"loco-1\",\n    \"batch-1\"\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveCvsPauseProgrammingBatch",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "resumeProgrammingBatch",
          "signature": "locomotiveCvs.resumeProgrammingBatch(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, batchId: RailDeckIdentifier): Promise<RailDeckLocomotiveProgrammingBatch>",
          "description": "Resumes one programming batch.",
          "returns": "Promise<RailDeckLocomotiveProgrammingBatch>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose batch should be resumed."
            },
            {
              "name": "batchId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Programming batch to resume."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-cvs.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveCvs.resumeProgrammingBatch with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveCvsResumeProgrammingBatch(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveCvs.resumeProgrammingBatch(\n    \"account 1\",\n    \"loco 1\",\n    \"batch 1\"\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveCvsResumeProgrammingBatch",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "retryProgrammingBatch",
          "signature": "locomotiveCvs.retryProgrammingBatch(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, batchId: RailDeckIdentifier): Promise<RailDeckLocomotiveProgrammingBatch>",
          "description": "Retries one failed programming batch.",
          "returns": "Promise<RailDeckLocomotiveProgrammingBatch>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose batch should be retried."
            },
            {
              "name": "batchId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Programming batch to retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-cvs.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveCvs.retryProgrammingBatch with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveCvsRetryProgrammingBatch(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveCvs.retryProgrammingBatch(\n    \"account 1\",\n    \"loco 1\",\n    \"batch 1\"\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveCvsRetryProgrammingBatch",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "cancelProgrammingBatch",
          "signature": "locomotiveCvs.cancelProgrammingBatch(accountId: RailDeckIdentifier, locomotiveId: RailDeckIdentifier, batchId: RailDeckIdentifier): Promise<RailDeckLocomotiveProgrammingBatch>",
          "description": "Cancels one programming batch.",
          "returns": "Promise<RailDeckLocomotiveProgrammingBatch>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the locomotive."
            },
            {
              "name": "locomotiveId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Locomotive whose batch should be cancelled."
            },
            {
              "name": "batchId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Programming batch to cancel."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-cvs.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveCvs.cancelProgrammingBatch with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveCvsCancelProgrammingBatch(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveCvs.cancelProgrammingBatch(\n    \"account 1\",\n    \"loco 1\",\n    \"batch 1\"\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveCvsCancelProgrammingBatch",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/locomotive-cvs.ts",
          "sha256": "220d8c98e07c0fbec24d201051f97e05e95fb2cec8e51b3faeabb3bf4c18925b"
        }
      ]
    },
    {
      "name": "locomotiveMatching",
      "slug": "locomotive-matching",
      "title": "Locomotive matching",
      "methods": [
        {
          "name": "list",
          "signature": "locomotiveMatching.list(accountId: string, locomotiveId: string, options: RailDeckRequestControlOptions & Readonly<{ after?: string }> = {}): Promise<MatchingPairList>",
          "description": "Lists a bounded page of matches and the model's current equipment revision without polling.",
          "returns": "Promise<MatchingPairList>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "locomotiveId",
              "type": "string",
              "optional": false,
              "description": "Either participant whose saved matches should be listed."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions & Readonly<{ after?: string }>",
              "optional": true,
              "description": "Optional cancellation, timeout and explicit next-page cursor."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-matching.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveMatching.list with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveMatchingList(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveMatching.list(\n    \"1\",\n    \"2\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveMatchingList",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "get",
          "signature": "locomotiveMatching.get(accountId: string, locomotiveId: string, pairId: string, options: RailDeckRequestControlOptions = {}): Promise<MatchingPairView>",
          "description": "Opens one match while preserving which model was originally adjusted.",
          "returns": "Promise<MatchingPairView>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "locomotiveId",
              "type": "string",
              "optional": false,
              "description": "Either participant requesting this comparison."
            },
            {
              "name": "pairId",
              "type": "string",
              "optional": false,
              "description": "Explicit saved identity, not a default chosen by the server."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation and timeout."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-matching.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveMatching.get with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveMatchingGet(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveMatching.get(\n    \"1\",\n    \"2\",\n    \"44444444-4444-4444-8444-444444444444\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveMatchingGet",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "save",
          "signature": "locomotiveMatching.save(accountId: string, locomotiveId: string, input: SaveMatchingPairCommand, options: RailDeckRequestControlOptions = {}): Promise<MatchingMutationReceipt>",
          "description": "Saves the original reviewed intent against one explicit pair and both equipment versions.",
          "returns": "Promise<MatchingMutationReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "locomotiveId",
              "type": "string",
              "optional": false,
              "description": "Originally adjusted physical model."
            },
            {
              "name": "input",
              "type": "SaveMatchingPairCommand",
              "optional": false,
              "description": "Confirmed pair intent and complete direct comparison."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation and timeout, without automatic retries."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-matching.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveMatching.save with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveMatchingSave(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveMatching.save(\n    \"1\",\n    \"2\",\n    {\n      \"intentId\": \"11111111-1111-4111-8111-111111111111\",\n      \"expectedRevision\": 0,\n      \"expectedEquipmentRevision\": 0,\n      \"confirmed\": true,\n      \"pairId\": \"44444444-4444-4444-8444-444444444444\",\n      \"matchedLocomotiveId\": \"3\",\n      \"expectedMatchedEquipmentRevision\": 0,\n      \"comparison\": {\n        \"schemaVersion\": 2,\n        \"calculationVersion\": 1,\n        \"evidence\": \"simulated\",\n        \"reference\": {\n          \"locomotiveId\": \"3\",\n          \"recordId\": null,\n          \"matchingRevision\": 0,\n          \"equipmentRevision\": 0\n        },\n        \"directions\": [\n          {\n            \"direction\": \"forward\",\n            \"referenceDirection\": \"forward\",\n            \"points\": [\n              {\n                \"referenceOutputPercent\": 20,\n                \"locomotiveOutputPercent\": 20\n              },\n              {\n                \"referenceOutputPercent\": 80,\n                \"locomotiveOutputPercent\": 80\n              }\n            ],\n            \"starting\": \"last\",\n            \"stopping\": \"first\"\n          },\n          {\n            \"direction\": \"reverse\",\n            \"referenceDirection\": \"reverse\",\n            \"points\": [\n              {\n                \"referenceOutputPercent\": 20,\n                \"locomotiveOutputPercent\": 20\n              },\n              {\n                \"referenceOutputPercent\": 80,\n                \"locomotiveOutputPercent\": 80\n              }\n            ],\n            \"starting\": \"last\",\n            \"stopping\": \"first\"\n          }\n        ]\n      }\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveMatchingSave",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "remove",
          "signature": "locomotiveMatching.remove(accountId: string, locomotiveId: string, input: MatchingPairMutationCommand, options: RailDeckRequestControlOptions = {}): Promise<MatchingMutationReceipt>",
          "description": "Removes only the selected pair, retaining equipment, other matches and immutable history.",
          "returns": "Promise<MatchingMutationReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "locomotiveId",
              "type": "string",
              "optional": false,
              "description": "Originally adjusted physical model."
            },
            {
              "name": "input",
              "type": "MatchingPairMutationCommand",
              "optional": false,
              "description": "Original removal intent and explicitly reviewed versions."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation and timeout, without automatic retries."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/locomotive-matching.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls locomotiveMatching.remove with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLocomotiveMatchingRemove(client: RailDeckDirectIntegrationClient) {\n  return client.locomotiveMatching.remove(\n    \"1\",\n    \"2\",\n    {\n      \"intentId\": \"11111111-1111-4111-8111-111111111111\",\n      \"expectedRevision\": 0,\n      \"expectedEquipmentRevision\": 0,\n      \"confirmed\": true,\n      \"pairId\": \"44444444-4444-4444-8444-444444444444\",\n      \"matchedLocomotiveId\": \"3\",\n      \"expectedMatchedEquipmentRevision\": 0\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLocomotiveMatchingRemove",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/locomotive-matching.ts",
          "sha256": "f9fc52fee79fe2a01c204009a7896f1265026101a357a273bb88f416f5d1d667"
        }
      ]
    },
    {
      "name": "accessories",
      "slug": "accessories",
      "title": "Points, signals and lights",
      "methods": [
        {
          "name": "saveTurnoutOrder",
          "signature": "accessories.saveTurnoutOrder(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, input: SaveTurnoutOrderCommand, options: RailDeckRequestControlOptions = {}): Promise<TurnoutOrderReceipt>",
          "description": "Saves layout-wide turnout order through the existing accessory authority boundary.",
          "returns": "Promise<TurnoutOrderReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account owning the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout whose complete collection was reviewed."
            },
            {
              "name": "input",
              "type": "SaveTurnoutOrderCommand",
              "optional": false,
              "description": "Captured review, permutation and immutable intent."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime and timeout, never automatic mutation replay."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessories.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.saveTurnoutOrder with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesSaveTurnoutOrder(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.saveTurnoutOrder(\n    \"23\",\n    \"31\",\n    {\n      \"requestId\": \"aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa\",\n      \"reviewedIds\": [\n        \"7\",\n        \"8\"\n      ],\n      \"orderedIds\": [\n        \"8\",\n        \"7\"\n      ]\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesSaveTurnoutOrder",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getTurnoutConfiguration",
          "signature": "accessories.getTurnoutConfiguration(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, accessoryId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<TurnoutConfigurationSnapshot>",
          "description": "Opens turnout fields and destinations from one authorised snapshot.",
          "returns": "Promise<TurnoutConfigurationSnapshot>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account owning the selected layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the turnout."
            },
            {
              "name": "accessoryId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Saved turnout to review, including incomplete older records."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation and timeout; no background polling."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessories.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.getTurnoutConfiguration with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesGetTurnoutConfiguration(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.getTurnoutConfiguration(\n    \"1\",\n    \"18\",\n    \"194\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesGetTurnoutConfiguration",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "saveTurnoutConfiguration",
          "signature": "accessories.saveTurnoutConfiguration(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, input: SaveTurnoutConfigurationCommand, options: RailDeckRequestControlOptions = {}): Promise<TurnoutConfigurationReceipt>",
          "description": "Saves the complete reviewed turnout using the existing atomic configuration transition.",
          "returns": "Promise<TurnoutConfigurationReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account owning the selected layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout receiving or containing the turnout."
            },
            {
              "name": "input",
              "type": "SaveTurnoutConfigurationCommand",
              "optional": false,
              "description": "Original intent, target revision and complete configuration."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation and timeout, never an automatic retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessories.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.saveTurnoutConfiguration with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesSaveTurnoutConfiguration(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.saveTurnoutConfiguration(\n    \"1\",\n    \"18\",\n    {\n      \"requestId\": \"11111111-1111-4111-8111-111111111111\",\n      \"target\": {\n        \"operation\": \"update\",\n        \"accessoryId\": \"194\",\n        \"expectedRevision\": 7\n      },\n      \"configuration\": {\n        \"displayName\": \"{{fixtureDisplayName}}\",\n        \"controllerId\": \"22\",\n        \"decoderAddress\": 61,\n        \"decoderSubaddress\": 0,\n        \"notes\": \"Station throat.\\nKeep the siding clear.\",\n        \"definition\": {\n          \"design\": \"wye\",\n          \"orientation\": 90,\n          \"pathAState\": \"thrown\"\n        },\n        \"destinations\": {\n          \"closed\": {\n            \"label\": \"Platform 1\",\n            \"decoderAddress\": null,\n            \"decoderSubaddress\": null,\n            \"decoderOutput\": 0\n          },\n          \"thrown\": {\n            \"label\": \"Goods loop\",\n            \"decoderAddress\": null,\n            \"decoderSubaddress\": null,\n            \"decoderOutput\": 1\n          }\n        }\n      }\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesSaveTurnoutConfiguration",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "deleteTurnout",
          "signature": "accessories.deleteTurnout(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, input: DeleteTurnoutCommand, options: RailDeckRequestControlOptions = {}): Promise<TurnoutDeletionReceipt>",
          "description": "Deletes only the reviewed idle turnout, retaining the original intent through uncertainty.",
          "returns": "Promise<TurnoutDeletionReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Owning layout."
            },
            {
              "name": "input",
              "type": "DeleteTurnoutCommand",
              "optional": false,
              "description": "Original deletion identity, target and reviewed version."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime and timeout, never automatic mutation replay."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessories.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.deleteTurnout with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesDeleteTurnout(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.deleteTurnout(\n    \"23\",\n    \"31\",\n    {\n      \"requestId\": \"aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa\",\n      \"accessoryId\": \"7\",\n      \"expectedRevision\": 4\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesDeleteTurnout",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "list",
          "signature": "accessories.list(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<RailDeckAccessoryListResponse>",
          "description": "Lists accessories for one layout.",
          "returns": "Promise<RailDeckAccessoryListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout whose accessories should be listed."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation owned by the visible library."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessories.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.list with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesList(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.list(\n    \"1\",\n    \"18\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesList",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "create",
          "signature": "accessories.create(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, input: CreateRailDeckAccessoryInput): Promise<RailDeckAccessory>",
          "description": "Creates one layout accessory.",
          "returns": "Promise<RailDeckAccessory>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout receiving the accessory."
            },
            {
              "name": "input",
              "type": "CreateRailDeckAccessoryInput",
              "optional": false,
              "description": "Accessory details, type, controller, decoder address, and metadata."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessories.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.create with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesCreate(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.create(\n    \"account 1\",\n    \"layout-1\",\n    {\n      \"displayName\": \"{{fixtureDisplayName}}\",\n      \"accessoryType\": \"signal\",\n      \"controllerId\": \"controller-1\",\n      \"decoderAddress\": 61\n    }\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesCreate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listTypes",
          "signature": "accessories.listTypes(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier): Promise<RailDeckAccessoryTypeProfileListResponse>",
          "description": "Lists supported accessory type profiles for one layout.",
          "returns": "Promise<RailDeckAccessoryTypeProfileListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout context for accessory types."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessories.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.listTypes with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesListTypes(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.listTypes(\n    \"account 1\",\n    \"layout-1\"\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesListTypes",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "get",
          "signature": "accessories.get(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, accessoryId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<RailDeckAccessory>",
          "description": "Loads one layout accessory.",
          "returns": "Promise<RailDeckAccessory>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the accessory."
            },
            {
              "name": "accessoryId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Accessory to load."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Read lifetime owned by the visible details page."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessories.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.get with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesGet(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.get(\n    \"1\",\n    \"18\",\n    \"195\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesGet",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "update",
          "signature": "accessories.update(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, accessoryId: RailDeckIdentifier, input: UpdateRailDeckAccessoryInput): Promise<RailDeckAccessory>",
          "description": "Updates one layout accessory.",
          "returns": "Promise<RailDeckAccessory>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the accessory."
            },
            {
              "name": "accessoryId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Accessory to update."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckAccessoryInput",
              "optional": false,
              "description": "Partial accessory update."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessories.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.update with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesUpdate(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.update(\n    \"account 1\",\n    \"layout 1\",\n    \"accessory 1\",\n    {\n      \"displayName\": \"{{fixtureDisplayName}}\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesUpdate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "delete",
          "signature": "accessories.delete(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, accessoryId: RailDeckIdentifier): Promise<RailDeckSuccessResponse>",
          "description": "Deletes one layout accessory.",
          "returns": "Promise<RailDeckSuccessResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the accessory."
            },
            {
              "name": "accessoryId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Accessory to delete."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessories.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.delete with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesDelete(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.delete(\n    \"account 1\",\n    \"layout 1\",\n    \"accessory 1\"\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesDelete",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listStates",
          "signature": "accessories.listStates(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, accessoryId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<RailDeckAccessoryStateDefinitionListResponse>",
          "description": "Lists state definitions for one accessory.",
          "returns": "Promise<RailDeckAccessoryStateDefinitionListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the accessory."
            },
            {
              "name": "accessoryId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Accessory whose states should be listed."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Read lifetime owned by the visible details page."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessories.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.listStates with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesListStates(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.listStates(\n    \"account 1\",\n    \"layout 1\",\n    \"accessory 1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesListStates",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "replaceStates",
          "signature": "accessories.replaceStates(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, accessoryId: RailDeckIdentifier, input: ReplaceRailDeckAccessoryStatesInput): Promise<RailDeckAccessoryStateDefinitionListResponse>",
          "description": "Replaces all state definitions for one accessory.",
          "returns": "Promise<RailDeckAccessoryStateDefinitionListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the accessory."
            },
            {
              "name": "accessoryId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Accessory whose states should be replaced."
            },
            {
              "name": "input",
              "type": "ReplaceRailDeckAccessoryStatesInput",
              "optional": false,
              "description": "Ordered state definitions."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessories.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.replaceStates with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesReplaceStates(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.replaceStates(\n    \"account 1\",\n    \"layout-1\",\n    \"accessory-2\",\n    {\n      \"states\": [\n        {\n          \"stateKey\": \"green\",\n          \"label\": \"Green\",\n          \"decoderAddress\": 61,\n          \"decoderOutput\": 1\n        }\n      ]\n    }\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesReplaceStates",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "applyCatalogueProfile",
          "signature": "accessories.applyCatalogueProfile(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, accessoryId: RailDeckIdentifier, input: ApplyRailDeckCatalogueProfileInput): Promise<RailDeckAccessoryCatalogueProfileApplication>",
          "description": "Applies or dry-runs a catalogue profile against one accessory.",
          "returns": "Promise<RailDeckAccessoryCatalogueProfileApplication>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the accessory."
            },
            {
              "name": "accessoryId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Accessory receiving the catalogue profile."
            },
            {
              "name": "input",
              "type": "ApplyRailDeckCatalogueProfileInput",
              "optional": false,
              "description": "Product and decoder profile ids plus merge/replace options."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessories.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.applyCatalogueProfile with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesApplyCatalogueProfile(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.applyCatalogueProfile(\n    \"account 1\",\n    \"layout-1\",\n    \"accessory-2\",\n    {\n      \"mode\": \"dry_run\",\n      \"productProfileId\": \"product-1\",\n      \"options\": {\n        \"states\": \"replace\",\n        \"metadata\": \"merge\"\n      }\n    }\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesApplyCatalogueProfile",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "operateCoordinatedTurnout",
          "signature": "accessories.operateCoordinatedTurnout(accountId: string, layoutId: string, accessoryId: string, input: CoordinatedTurnoutOperationCommand, options: RailDeckRequestControlOptions = {}): Promise<CoordinatedTurnoutOperationResult>",
          "description": "Selects one complete saved crossover path using its original reviewed intent.",
          "returns": "Promise<CoordinatedTurnoutOperationResult>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Account owning the selected layout."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Layout containing the crossover and its members."
            },
            {
              "name": "accessoryId",
              "type": "string",
              "optional": false,
              "description": "Saved crossover to operate, never an individual grouped member."
            },
            {
              "name": "input",
              "type": "CoordinatedTurnoutOperationCommand",
              "optional": false,
              "description": "Original request, reviewed revision and named path; no wiring is accepted."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Existing cancellation/deadline owner, with no automatic mutation replay."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/coordinated-turnout-operations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.operateCoordinatedTurnout with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesOperateCoordinatedTurnout(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.operateCoordinatedTurnout(\n    \"1\",\n    \"2\",\n    \"20\",\n    {\n      \"requestId\": \"00000000-0000-4000-8000-000000000030\",\n      \"expectedRevision\": 5,\n      \"path\": \"through\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesOperateCoordinatedTurnout",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "recoverCoordinatedTurnoutOperation",
          "signature": "accessories.recoverCoordinatedTurnoutOperation(accountId: string, layoutId: string, accessoryId: string, input: CoordinatedTurnoutRecoveryCommand, options: RailDeckRequestControlOptions = {}): Promise<CoordinatedTurnoutOperationResult>",
          "description": "Checks original bridge history without sending the saved command again.",
          "returns": "Promise<CoordinatedTurnoutOperationResult>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Account owning the original operation."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Layout containing its original crossover."
            },
            {
              "name": "accessoryId",
              "type": "string",
              "optional": false,
              "description": "Original selected crossover, even after its settings change."
            },
            {
              "name": "input",
              "type": "CoordinatedTurnoutRecoveryCommand",
              "optional": false,
              "description": "Original intent and admitted command, retained across uncertainty."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Existing cancellation/deadline owner, without polling or automatic retries."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/coordinated-turnout-operations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.recoverCoordinatedTurnoutOperation with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesRecoverCoordinatedTurnoutOperation(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.recoverCoordinatedTurnoutOperation(\n    \"1\",\n    \"2\",\n    \"20\",\n    {\n      \"requestId\": \"00000000-0000-4000-8000-000000000030\",\n      \"expectedRevision\": 5,\n      \"path\": \"through\",\n      \"parentCommandId\": \"00000000-0000-4000-8000-000000000020\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesRecoverCoordinatedTurnoutOperation",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "tryTurnoutConnection",
          "signature": "accessories.tryTurnoutConnection(accountId: string, layoutId: string, input: TurnoutConnectionTrial, options: RailDeckRequestControlOptions = {}): Promise<TurnoutConnectionTrialReceipt>",
          "description": "Tries one complete turnout draft without creating a temporary saved accessory.",
          "returns": "Promise<TurnoutConnectionTrialReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Layout whose command station and member were reviewed."
            },
            {
              "name": "input",
              "type": "TurnoutConnectionTrial",
              "optional": false,
              "description": "Original review, complete wiring, member and immutable command identity."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Existing cancellation/deadline owner, never automatic command replay."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessory-configurations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.tryTurnoutConnection with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesTryTurnoutConnection(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.tryTurnoutConnection(\n    \"1\",\n    \"18\",\n    {\n      \"requestId\": \"11111111-1111-4111-8111-111111111111\",\n      \"target\": {\n        \"operation\": \"update\",\n        \"accessoryId\": \"194\",\n        \"expectedRevision\": 7\n      },\n      \"configuration\": {\n        \"displayName\": \"{{fixtureDisplayName}}\",\n        \"controllerId\": \"22\",\n        \"decoderAddress\": 61,\n        \"decoderSubaddress\": 0,\n        \"notes\": \"Station throat.\\nKeep the siding clear.\",\n        \"definition\": {\n          \"design\": \"wye\",\n          \"orientation\": 90,\n          \"pathAState\": \"thrown\"\n        },\n        \"destinations\": {\n          \"closed\": {\n            \"label\": \"Platform 1\",\n            \"decoderAddress\": null,\n            \"decoderSubaddress\": null,\n            \"decoderOutput\": 0\n          },\n          \"thrown\": {\n            \"label\": \"Goods loop\",\n            \"decoderAddress\": null,\n            \"decoderSubaddress\": null,\n            \"decoderOutput\": 1\n          }\n        }\n      },\n      \"reviewId\": \"22222222-2222-4222-8222-222222222222\",\n      \"member\": \"4\",\n      \"state\": \"closed\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesTryTurnoutConnection",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getCoordinatedTurnoutConfiguration",
          "signature": "accessories.getCoordinatedTurnoutConfiguration(accountId: string, layoutId: string, accessoryId: string, options: RailDeckRequestControlOptions = {}): Promise<CoordinatedTurnoutConfigurationSnapshot>",
          "description": "Opens one crossover with its current numbered member revisions, without copying wiring.",
          "returns": "Promise<CoordinatedTurnoutConfigurationSnapshot>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Layout containing the crossover."
            },
            {
              "name": "accessoryId",
              "type": "string",
              "optional": false,
              "description": "Saved crossover to review."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Existing cancellation and deadline owner, without background polling."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessory-configurations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.getCoordinatedTurnoutConfiguration with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesGetCoordinatedTurnoutConfiguration(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.getCoordinatedTurnoutConfiguration(\n    \"1\",\n    \"18\",\n    \"240\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesGetCoordinatedTurnoutConfiguration",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "saveCoordinatedTurnoutConfiguration",
          "signature": "accessories.saveCoordinatedTurnoutConfiguration(accountId: string, layoutId: string, input: SaveCoordinatedTurnoutConfigurationCommand, options: RailDeckRequestControlOptions = {}): Promise<CoordinatedTurnoutConfigurationReceipt>",
          "description": "Saves the complete grouping through one atomic accessory transition.",
          "returns": "Promise<CoordinatedTurnoutConfigurationReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Layout receiving or containing the crossover."
            },
            {
              "name": "input",
              "type": "SaveCoordinatedTurnoutConfigurationCommand",
              "optional": false,
              "description": "Original intent, reviewed grouping/member revisions and complete configuration."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Existing request lifetime; uncertain saves are never replayed automatically."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessory-configurations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.saveCoordinatedTurnoutConfiguration with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesSaveCoordinatedTurnoutConfiguration(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.saveCoordinatedTurnoutConfiguration(\n    \"1\",\n    \"18\",\n    {\n      \"requestId\": \"11111111-1111-4111-8111-111111111111\",\n      \"target\": {\n        \"operation\": \"update\",\n        \"accessoryId\": \"240\",\n        \"expectedRevision\": 7\n      },\n      \"configuration\": {\n        \"displayName\": \"{{fixtureDisplayName}}\",\n        \"notes\": \"Keep both tracks clear.\\nStation approach.\",\n        \"definition\": {\n          \"design\": \"single-crossover\",\n          \"orientation\": 90,\n          \"mirrored\": true\n        },\n        \"members\": [\n          {\n            \"member\": \"1\",\n            \"throughState\": \"closed\",\n            \"source\": \"existing\",\n            \"accessoryId\": \"194\",\n            \"expectedRevision\": 3\n          },\n          {\n            \"member\": \"2\",\n            \"throughState\": \"thrown\",\n            \"source\": \"existing\",\n            \"accessoryId\": \"195\",\n            \"expectedRevision\": 4\n          }\n        ]\n      }\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesSaveCoordinatedTurnoutConfiguration",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getSpecifications",
          "signature": "accessories.getSpecifications(accountId: string, layoutId: string, accessoryId: string, options: RailDeckRequestControlOptions = {}): Promise<Readonly<{ accountId: string; layoutId: string; accessoryId: string; revision: number; specifications: AccessorySpecifications; }>>",
          "description": "Opens optional descriptions independently of operating settings.",
          "returns": "Promise<Readonly<{ accountId: string; layoutId: string; accessoryId: string; revision: number; specifications: AccessorySpecifications; }>>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Owning railway."
            },
            {
              "name": "accessoryId",
              "type": "string",
              "optional": false,
              "description": "Selected light, signal or turnout."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Existing cancellation/deadline owner."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessory-configurations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.getSpecifications with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesGetSpecifications(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.getSpecifications(\n    \"1\",\n    \"18\",\n    \"194\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesGetSpecifications",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "saveSpecifications",
          "signature": "accessories.saveSpecifications(accountId: string, layoutId: string, input: SaveAccessorySpecificationsCommand, options: RailDeckRequestControlOptions = {}): Promise<Readonly<{ accountId: string; layoutId: string; requestId: string; accessoryId: string; operation: \"create\" | \"update\"; reviewedRevision: number | null; savedRevision: number; }>>",
          "description": "Saves descriptions without submitting wiring or automatically replaying an uncertain write.",
          "returns": "Promise<Readonly<{ accountId: string; layoutId: string; requestId: string; accessoryId: string; operation: \"create\" | \"update\"; reviewedRevision: number | null; savedRevision: number; }>>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Owning railway."
            },
            {
              "name": "input",
              "type": "SaveAccessorySpecificationsCommand",
              "optional": false,
              "description": "Original request identity, reviewed version and optional fields."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Existing request lifetime."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessory-configurations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.saveSpecifications with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesSaveSpecifications(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.saveSpecifications(\n    \"1\",\n    \"18\",\n    {\n      \"requestId\": \"22222222-2222-4222-8222-222222222222\",\n      \"target\": {\n        \"operation\": \"update\",\n        \"accessoryId\": \"194\",\n        \"expectedRevision\": 1\n      },\n      \"specifications\": {\n        \"manufacturer\": \"Model Lighting\",\n        \"modelName\": \"Station lamp\",\n        \"productCode\": \"L-10\",\n        \"scale\": \"OO\",\n        \"decoderModel\": \"Accessory controller\"\n      }\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesSaveSpecifications",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "tryLightConnection",
          "signature": "accessories.tryLightConnection(accountId: string, layoutId: string, input: LightConnectionTrial, options: RailDeckRequestControlOptions = {}): Promise<LightConnectionTrialReceipt>",
          "description": "Tries one saved On/Off mapping without treating publication as visual confirmation.",
          "returns": "Promise<LightConnectionTrialReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Selected layout."
            },
            {
              "name": "input",
              "type": "LightConnectionTrial",
              "optional": false,
              "description": "Original trial identity, light, settings revision and explicit On/Off choice."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime; interrupted publication is never automatically replayed."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessory-configurations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.tryLightConnection with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesTryLightConnection(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.tryLightConnection(\n    \"1\",\n    \"18\",\n    {\n      \"requestId\": \"11111111-1111-4111-8111-111111111111\",\n      \"accessoryId\": \"194\",\n      \"expectedRevision\": 7,\n      \"state\": \"on\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesTryLightConnection",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "confirmLightConnection",
          "signature": "accessories.confirmLightConnection(accountId: string, layoutId: string, input: ConfirmLightConnection, options: RailDeckRequestControlOptions = {}): Promise<LightConfigurationReceipt>",
          "description": "Confirms both observed settings through one audited, immutable save.",
          "returns": "Promise<LightConfigurationReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Selected layout."
            },
            {
              "name": "input",
              "type": "ConfirmLightConnection",
              "optional": false,
              "description": "Reviewed version and exact acknowledged commands the person observed."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime; an explicit retry must retain the original intent."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessory-configurations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.confirmLightConnection with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesConfirmLightConnection(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.confirmLightConnection(\n    \"1\",\n    \"18\",\n    {\n      \"requestId\": \"22222222-2222-4222-8222-222222222222\",\n      \"accessoryId\": \"194\",\n      \"expectedRevision\": 7,\n      \"observations\": {\n        \"on\": \"11111111-1111-4111-8111-111111111111\",\n        \"off\": \"33333333-3333-4333-8333-333333333333\"\n      }\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesConfirmLightConnection",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getSignalConfiguration",
          "signature": "accessories.getSignalConfiguration(accountId: string, layoutId: string, accessoryId: string, options: RailDeckRequestControlOptions = {}): Promise<SignalConfigurationSnapshot>",
          "description": "Reads signal fields and mappings from one coherent snapshot.",
          "returns": "Promise<SignalConfigurationSnapshot>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Owning railway."
            },
            {
              "name": "accessoryId",
              "type": "string",
              "optional": false,
              "description": "Saved signal to review."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation and deadline."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessory-configurations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.getSignalConfiguration with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesGetSignalConfiguration(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.getSignalConfiguration(\n    \"1\",\n    \"1\",\n    \"2\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesGetSignalConfiguration",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "saveSignalConfiguration",
          "signature": "accessories.saveSignalConfiguration(accountId: string, layoutId: string, input: SaveSignalConfigurationCommand, options: RailDeckRequestControlOptions = {}): Promise<SignalConfigurationReceipt>",
          "description": "Commits all reviewed signal settings through one immutable intent.",
          "returns": "Promise<SignalConfigurationReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Railway receiving or containing the signal."
            },
            {
              "name": "input",
              "type": "SaveSignalConfigurationCommand",
              "optional": false,
              "description": "Original create/update target, reviewed revision and draft."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime; mutations are never automatically replayed."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessory-configurations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.saveSignalConfiguration with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesSaveSignalConfiguration(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.saveSignalConfiguration(\n    \"1\",\n    \"1\",\n    {\n      \"requestId\": \"1174bd51-f61b-4dac-8a0d-2e9435d7075e\",\n      \"target\": {\n        \"operation\": \"update\",\n        \"accessoryId\": \"2\",\n        \"expectedRevision\": 11\n      },\n      \"configuration\": {\n        \"displayName\": \"{{fixtureDisplayName}}\",\n        \"controllerId\": \"1\",\n        \"definition\": {\n          \"design\": \"four-aspect\",\n          \"quadrant\": null\n        },\n        \"notes\": null,\n        \"connections\": [\n          {\n            \"indication\": \"red\",\n            \"label\": \"Stop\",\n            \"address\": 86,\n            \"output\": 0\n          },\n          {\n            \"indication\": \"yellow\",\n            \"label\": \"Caution\",\n            \"address\": 86,\n            \"output\": 1\n          },\n          {\n            \"indication\": \"double-yellow\",\n            \"label\": \"Double yellow\",\n            \"address\": 87,\n            \"output\": 0\n          },\n          {\n            \"indication\": \"green\",\n            \"label\": \"Clear\",\n            \"address\": 87,\n            \"output\": 1\n          }\n        ],\n        \"operating\": {\n          \"cycling\": true,\n          \"indicationOrder\": [\n            \"green\",\n            \"double-yellow\",\n            \"yellow\",\n            \"red\"\n          ]\n        },\n        \"photographs\": [\n          {\n            \"indication\": \"red\",\n            \"photographId\": \"1\"\n          }\n        ]\n      }\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesSaveSignalConfiguration",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "saveSignalOrder",
          "signature": "accessories.saveSignalOrder(accountId: string, layoutId: string, input: AccessoryOrderCommand, options: RailDeckRequestControlOptions = {}): Promise<AccessoryOrderReceipt>",
          "description": "Changes only the shared visual order of the layout's signals.",
          "returns": "Promise<AccessoryOrderReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Railway whose complete collection was reviewed."
            },
            {
              "name": "input",
              "type": "AccessoryOrderCommand",
              "optional": false,
              "description": "Original reviewed permutation and request identity."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime without automatic mutation replay."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessory-configurations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.saveSignalOrder with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesSaveSignalOrder(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.saveSignalOrder(\n    \"1\",\n    \"1\",\n    {\n      \"requestId\": \"58dd936f-36b2-46e2-92aa-91076ae38e83\",\n      \"reviewedIds\": [\n        \"accessory:6\",\n        \"linked:1\"\n      ],\n      \"orderedIds\": [\n        \"linked:1\",\n        \"accessory:6\"\n      ],\n      \"collection\": \"library\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesSaveSignalOrder",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getLightConfiguration",
          "signature": "accessories.getLightConfiguration(accountId: string, layoutId: string, accessoryId: string, options: RailDeckRequestControlOptions = {}): Promise<LightConfigurationSnapshot>",
          "description": "Opens one light's descriptive settings and independent On/Off mappings.",
          "returns": "Promise<LightConfigurationSnapshot>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Layout containing the light."
            },
            {
              "name": "accessoryId",
              "type": "string",
              "optional": false,
              "description": "Saved light to review, including unfinished connections."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation and deadline owned by the visible journey."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessory-configurations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.getLightConfiguration with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesGetLightConfiguration(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.getLightConfiguration(\n    \"1\",\n    \"18\",\n    \"194\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesGetLightConfiguration",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "saveLightConfiguration",
          "signature": "accessories.saveLightConfiguration(accountId: string, layoutId: string, input: SaveLightConfigurationCommand, options: RailDeckRequestControlOptions = {}): Promise<LightConfigurationReceipt>",
          "description": "Saves one reviewed light atomically without switching its output.",
          "returns": "Promise<LightConfigurationReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Layout receiving or containing the light."
            },
            {
              "name": "input",
              "type": "SaveLightConfigurationCommand",
              "optional": false,
              "description": "Original intent, create/update target and complete descriptive/connection settings."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime; uncertain writes are never automatically replayed."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessory-configurations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.saveLightConfiguration with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesSaveLightConfiguration(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.saveLightConfiguration(\n    \"1\",\n    \"18\",\n    {\n      \"requestId\": \"22222222-2222-4222-8222-222222222222\",\n      \"target\": {\n        \"operation\": \"update\",\n        \"accessoryId\": \"194\",\n        \"expectedRevision\": 7\n      },\n      \"configuration\": {\n        \"displayName\": \"{{fixtureDisplayName}}\",\n        \"controllerId\": null,\n        \"picture\": \"shop\",\n        \"notes\": \"Front window\\n\\nSeparate from the platform lamps.\",\n        \"connections\": {\n          \"off\": {\n            \"decoderAddress\": 70,\n            \"decoderSubaddress\": null,\n            \"decoderOutput\": 1\n          },\n          \"on\": {\n            \"decoderAddress\": 70,\n            \"decoderSubaddress\": null,\n            \"decoderOutput\": 0\n          }\n        }\n      }\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesSaveLightConfiguration",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "saveLightOrder",
          "signature": "accessories.saveLightOrder(accountId: string, layoutId: string, input: AccessoryOrderCommand, options: RailDeckRequestControlOptions = {}): Promise<AccessoryOrderReceipt>",
          "description": "Changes the shared visual order of a layout's complete light collection.",
          "returns": "Promise<AccessoryOrderReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Layout whose collection was reviewed."
            },
            {
              "name": "input",
              "type": "AccessoryOrderCommand",
              "optional": false,
              "description": "Captured original order, requested permutation and immutable intent."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime without polling or automatic write retries."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessory-configurations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.saveLightOrder with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesSaveLightOrder(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.saveLightOrder(\n    \"23\",\n    \"31\",\n    {\n      \"requestId\": \"aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa\",\n      \"reviewedIds\": [\n        \"accessory:7\",\n        \"linked:7\"\n      ],\n      \"orderedIds\": [\n        \"linked:7\",\n        \"accessory:7\"\n      ],\n      \"collection\": \"library\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesSaveLightOrder",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "deleteLight",
          "signature": "accessories.deleteLight(accountId: string, layoutId: string, input: DeleteAccessoryCommand, options: RailDeckRequestControlOptions = {}): Promise<AccessoryDeletionReceipt>",
          "description": "Removes only the reviewed light without replaying an uncertain deletion automatically.",
          "returns": "Promise<AccessoryDeletionReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Layout whose saved light was reviewed."
            },
            {
              "name": "input",
              "type": "DeleteAccessoryCommand",
              "optional": false,
              "description": "Original deletion intent, light identity and editor revision."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional cancellation and deadline."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/accessory-configurations.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls accessories.deleteLight with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleAccessoriesDeleteLight(client: RailDeckDirectIntegrationClient) {\n  return client.accessories.deleteLight(\n    \"23\",\n    \"31\",\n    {\n      \"requestId\": \"aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa\",\n      \"accessoryId\": \"7\",\n      \"expectedRevision\": 4\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleAccessoriesDeleteLight",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/accessories.ts",
          "sha256": "6f85c7497ecabed60a02524ffe41b737d22e75f0d6e9d979e75080669cd1c15f"
        },
        {
          "path": "packages/frontend-sdk/src/features/coordinated-turnout-operations.ts",
          "sha256": "d8eb587b61177a3804341673298cbacf50018ead841e79c300710b1b6488c801"
        },
        {
          "path": "packages/frontend-sdk/src/features/accessory-configurations.ts",
          "sha256": "29ae07d978f7d907ac489618080475a323d1f244276a1d92d586f0066bf1a1f6"
        }
      ]
    },
    {
      "name": "signalSetups",
      "slug": "signal-setup",
      "title": "Guided signal setup",
      "methods": [
        {
          "name": "start",
          "signature": "signalSetups.start(accountId: string, layoutId: string, input: StartSignalSetupCommand, options: RailDeckRequestControlOptions = {}): Promise<SignalSetupSnapshot>",
          "description": "Starts a private fixed-lifetime setup, or explicitly recovers that original intent.",
          "returns": "Promise<SignalSetupSnapshot>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Account owning the layout."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Selected layout."
            },
            {
              "name": "input",
              "type": "StartSignalSetupCommand",
              "optional": false,
              "description": "Original request ID and reviewed connection."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime controls, never automatic mutation replay."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/signal-setups.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls signalSetups.start with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSignalSetupsStart(client: RailDeckDirectIntegrationClient) {\n  return client.signalSetups.start(\n    \"1\",\n    \"18\",\n    {\n      \"requestId\": \"11111111-1111-4111-8111-111111111111\",\n      \"configuration\": {\n        \"displayName\": \"{{fixtureDisplayName}}\",\n        \"definition\": {\n          \"design\": \"four-aspect\",\n          \"quadrant\": null\n        },\n        \"controllerId\": \"21\",\n        \"firstAddress\": 86,\n        \"notes\": \"Platform end\\nFaces the approach track.\"\n      }\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleSignalSetupsStart",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "get",
          "signature": "signalSetups.get(accountId: string, layoutId: string, setupId: string, options: RailDeckRequestControlOptions = {}): Promise<SignalSetupSnapshot>",
          "description": "Opens the initiating manager's setup without renewal, polling or a write.",
          "returns": "Promise<SignalSetupSnapshot>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Selected layout."
            },
            {
              "name": "setupId",
              "type": "string",
              "optional": false,
              "description": "Original setup ID."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/signal-setups.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls signalSetups.get with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSignalSetupsGet(client: RailDeckDirectIntegrationClient) {\n  return client.signalSetups.get(\n    \"1\",\n    \"18\",\n    \"11111111-1111-4111-8111-111111111111\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleSignalSetupsGet",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "trySetting",
          "signature": "signalSetups.trySetting(accountId: string, layoutId: string, input: SignalSetupTrialCommand, options: RailDeckRequestControlOptions = {}): Promise<SignalSetupTrialReceipt>",
          "description": "Publishes one deliberate setting; uncertainty must use existing command recovery, not replay.",
          "returns": "Promise<SignalSetupTrialReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Selected layout."
            },
            {
              "name": "input",
              "type": "SignalSetupTrialCommand",
              "optional": false,
              "description": "Reviewed revision and original command identity."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/signal-setups.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls signalSetups.trySetting with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSignalSetupsTrySetting(client: RailDeckDirectIntegrationClient) {\n  return client.signalSetups.trySetting(\n    \"1\",\n    \"18\",\n    {\n      \"requestId\": \"22222222-2222-4222-8222-222222222222\",\n      \"setupId\": \"11111111-1111-4111-8111-111111111111\",\n      \"expectedRevision\": 1,\n      \"connection\": {\n        \"address\": 86,\n        \"output\": 0\n      }\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleSignalSetupsTrySetting",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "cancel",
          "signature": "signalSetups.cancel(accountId: string, layoutId: string, input: CancelSignalSetupCommand, options: RailDeckRequestControlOptions = {}): Promise<SignalSetupSnapshot>",
          "description": "Cancels only the reviewed setup; it cannot undo a command already sent.",
          "returns": "Promise<SignalSetupSnapshot>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Selected layout."
            },
            {
              "name": "input",
              "type": "CancelSignalSetupCommand",
              "optional": false,
              "description": "Original cancellation identity and reviewed revision."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/signal-setups.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls signalSetups.cancel with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSignalSetupsCancel(client: RailDeckDirectIntegrationClient) {\n  return client.signalSetups.cancel(\n    \"1\",\n    \"18\",\n    {\n      \"requestId\": \"33333333-3333-4333-8333-333333333333\",\n      \"setupId\": \"11111111-1111-4111-8111-111111111111\",\n      \"expectedRevision\": 1\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleSignalSetupsCancel",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "save",
          "signature": "signalSetups.save(accountId: string, layoutId: string, input: SaveSignalSetupCommand, options: RailDeckRequestControlOptions = {}): Promise<SignalSetupSaveReceipt>",
          "description": "Saves only observed original trials through the atomic accessory owner.",
          "returns": "Promise<SignalSetupSaveReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Selected layout."
            },
            {
              "name": "input",
              "type": "SaveSignalSetupCommand",
              "optional": false,
              "description": "Original save identity, reviewed version and unique visual answers."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/signal-setups.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls signalSetups.save with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSignalSetupsSave(client: RailDeckDirectIntegrationClient) {\n  return client.signalSetups.save(\n    \"1\",\n    \"18\",\n    {\n      \"requestId\": \"33333333-3333-4333-8333-333333333333\",\n      \"setupId\": \"11111111-1111-4111-8111-111111111111\",\n      \"expectedRevision\": 1,\n      \"completion\": \"finish-later\",\n      \"observations\": []\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleSignalSetupsSave",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/signal-setups.ts",
          "sha256": "574ca4bb4db17e7ac494b0f227f3374bccadcfc84d35d431172c31fceaebee21"
        }
      ]
    },
    {
      "name": "routes",
      "slug": "routes-and-linked-accessories",
      "title": "Routes and linked accessories",
      "methods": [
        {
          "name": "saveLinkedAccessoryOrder",
          "signature": "routes.saveLinkedAccessoryOrder(accountId: string, layoutId: string, input: ReviewedOrderCommand, options: RailDeckRequestControlOptions = {}): Promise<ReviewedOrderReceipt>",
          "description": "Saves the complete reviewed Linked accessory order without operating its members.",
          "returns": "Promise<ReviewedOrderReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Original layout."
            },
            {
              "name": "input",
              "type": "ReviewedOrderCommand",
              "optional": false,
              "description": "Original reviewed permutation."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/routes.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls routes.saveLinkedAccessoryOrder with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRoutesSaveLinkedAccessoryOrder(client: RailDeckDirectIntegrationClient) {\n  return client.routes.saveLinkedAccessoryOrder(\n    \"23\",\n    \"31\",\n    {\n      \"requestId\": \"7239eabc-0000-4000-8000-000000000003\",\n      \"reviewedIds\": [\n        \"8\",\n        \"9\"\n      ],\n      \"orderedIds\": [\n        \"9\",\n        \"8\"\n      ]\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRoutesSaveLinkedAccessoryOrder",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "analyseActivation",
          "signature": "routes.analyseActivation(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, routeId: RailDeckIdentifier): Promise<RailDeckRouteActivationAnalysis>",
          "description": "Analyses whether one saved route will change accessory state.",
          "returns": "Promise<RailDeckRouteActivationAnalysis>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the route."
            },
            {
              "name": "routeId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Route to analyse."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/routes.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls routes.analyseActivation with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRoutesAnalyseActivation(client: RailDeckDirectIntegrationClient) {\n  return client.routes.analyseActivation(\n    \"account-1\",\n    \"layout-1\",\n    \"route-2\"\n  );\n}\n",
          "exampleFunction": "exampleRoutesAnalyseActivation",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "activate",
          "signature": "routes.activate(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, routeId: RailDeckIdentifier, input: RailDeckRouteActivationInput, options: RailDeckRequestControlOptions = {}): Promise<RailDeckRouteActivationResponse>",
          "description": "Activates one saved route through the live command path.",
          "returns": "Promise<RailDeckRouteActivationResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the route."
            },
            {
              "name": "routeId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Route to activate."
            },
            {
              "name": "input",
              "type": "RailDeckRouteActivationInput",
              "optional": false,
              "description": "Original request identity, reviewed revision and optional delivery settings."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Cancellation and deadline; failure does not authorise a new activation."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/routes.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls routes.activate with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRoutesActivate(client: RailDeckDirectIntegrationClient) {\n  return client.routes.activate(\n    \"1\",\n    \"1\",\n    \"1\",\n    {\n      \"requestId\": \"b623d76d-c1d0-4c6d-9d2a-2b9521b20c36\",\n      \"expectedRevision\": 5,\n      \"priority\": null,\n      \"expiresInMs\": 10000\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRoutesActivate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listLinkedAccessories",
          "signature": "routes.listLinkedAccessories(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<RailDeckLinkedAccessoryListResponse>",
          "description": "Lists bounded summaries without downloading every named choice's member plan.",
          "returns": "Promise<RailDeckLinkedAccessoryListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Original layout."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Cancellation/deadline."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/routes.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls routes.listLinkedAccessories with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRoutesListLinkedAccessories(client: RailDeckDirectIntegrationClient) {\n  return client.routes.listLinkedAccessories(\n    \"1\",\n    \"1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRoutesListLinkedAccessories",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "createLinkedAccessory",
          "signature": "routes.createLinkedAccessory(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, input: CreateRailDeckLinkedAccessoryInput, options: RailDeckRequestControlOptions = {}): Promise<LinkedAccessoryMutationReceipt>",
          "description": "Creates complete authored named choices under one immutable original request.",
          "returns": "Promise<LinkedAccessoryMutationReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Original layout."
            },
            {
              "name": "input",
              "type": "CreateRailDeckLinkedAccessoryInput",
              "optional": false,
              "description": "Original creation identity and complete named definition."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime without automatic replay."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/routes.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls routes.createLinkedAccessory with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRoutesCreateLinkedAccessory(client: RailDeckDirectIntegrationClient) {\n  return client.routes.createLinkedAccessory(\n    \"23\",\n    \"31\",\n    {\n      \"requestId\": \"a4000000-bbbb-4ccc-8ddd-000000000001\",\n      \"definition\": {\n        \"displayName\": \"{{fixtureDisplayName}}\",\n        \"description\": \"Open the station.\\n\\nKeep the goods yard separate.\",\n        \"enabled\": true,\n        \"metadata\": {\n          \"retained\": \"Group information\"\n        },\n        \"choices\": [\n          {\n            \"choiceId\": \"a4000000-bbbb-4ccc-8ddd-000000000002\",\n            \"displayName\": \"Arrangement a4000000-bbbb-4ccc-8ddd-000000000002\",\n            \"steps\": [\n              {\n                \"accessoryId\": \"91\",\n                \"targetState\": \"closed\",\n                \"sequenceOrder\": 1,\n                \"delayMs\": 0,\n                \"metadata\": {}\n              },\n              {\n                \"accessoryId\": \"92\",\n                \"targetState\": \"thrown\",\n                \"sequenceOrder\": 2,\n                \"delayMs\": 0,\n                \"metadata\": {}\n              },\n              {\n                \"accessoryId\": \"93\",\n                \"targetState\": \"on\",\n                \"sequenceOrder\": 3,\n                \"delayMs\": 0,\n                \"metadata\": {}\n              },\n              {\n                \"accessoryId\": \"94\",\n                \"targetState\": \"off\",\n                \"sequenceOrder\": 4,\n                \"delayMs\": 0,\n                \"metadata\": {}\n              }\n            ]\n          },\n          {\n            \"choiceId\": \"a4000000-bbbb-4ccc-8ddd-000000000003\",\n            \"displayName\": \"Arrangement a4000000-bbbb-4ccc-8ddd-000000000003\",\n            \"steps\": [\n              {\n                \"accessoryId\": \"91\",\n                \"targetState\": \"thrown\",\n                \"sequenceOrder\": 1,\n                \"delayMs\": 0,\n                \"metadata\": {}\n              },\n              {\n                \"accessoryId\": \"92\",\n                \"targetState\": \"closed\",\n                \"sequenceOrder\": 2,\n                \"delayMs\": 0,\n                \"metadata\": {}\n              },\n              {\n                \"accessoryId\": \"93\",\n                \"targetState\": \"off\",\n                \"sequenceOrder\": 3,\n                \"delayMs\": 0,\n                \"metadata\": {}\n              },\n              {\n                \"accessoryId\": \"94\",\n                \"targetState\": \"on\",\n                \"sequenceOrder\": 4,\n                \"delayMs\": 0,\n                \"metadata\": {}\n              }\n            ]\n          }\n        ]\n      }\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRoutesCreateLinkedAccessory",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getLinkedAccessory",
          "signature": "routes.getLinkedAccessory(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, linkedAccessoryId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<RailDeckLinkedAccessory>",
          "description": "Opens one explicit legacy or named saved definition for review.",
          "returns": "Promise<RailDeckLinkedAccessory>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Original layout."
            },
            {
              "name": "linkedAccessoryId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Selected saved group."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Cancellation/deadline."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/routes.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls routes.getLinkedAccessory with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRoutesGetLinkedAccessory(client: RailDeckDirectIntegrationClient) {\n  return client.routes.getLinkedAccessory(\n    \"1\",\n    \"1\",\n    \"1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRoutesGetLinkedAccessory",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "updateLinkedAccessory",
          "signature": "routes.updateLinkedAccessory(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, linkedAccessoryId: RailDeckIdentifier, input: UpdateRailDeckLinkedAccessoryInput, options: RailDeckRequestControlOptions = {}): Promise<LinkedAccessoryMutationReceipt>",
          "description": "Replaces a reviewed idle definition, including a deliberate complete legacy upgrade.",
          "returns": "Promise<LinkedAccessoryMutationReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Original layout."
            },
            {
              "name": "linkedAccessoryId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Originally reviewed group."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckLinkedAccessoryInput",
              "optional": false,
              "description": "Original request, reviewed revision and complete named choices."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime; uncertain evidence never triggers background replay."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/routes.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls routes.updateLinkedAccessory with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRoutesUpdateLinkedAccessory(client: RailDeckDirectIntegrationClient) {\n  return client.routes.updateLinkedAccessory(\n    \"1\",\n    \"1\",\n    \"1\",\n    {\n      \"requestId\": \"002ed11c-0391-4900-af65-0f3dd51f81ce\",\n      \"expectedRevision\": 8,\n      \"definition\": {\n        \"displayName\": \"{{fixtureDisplayName}}\",\n        \"description\": \"Open the station.\\n\\nKeep the goods yard separate.\",\n        \"enabled\": true,\n        \"metadata\": {\n          \"raildeckLibrary\": \"signal\",\n          \"retained\": \"Group information\"\n        },\n        \"choices\": [\n          {\n            \"choiceId\": \"a4000000-bbbb-4ccc-8ddd-000000000002\",\n            \"displayName\": \"Arrangement a4000000-bbbb-4ccc-8ddd-000000000002\",\n            \"steps\": [\n              {\n                \"accessoryId\": \"2\",\n                \"targetState\": \"closed\",\n                \"sequenceOrder\": 1,\n                \"delayMs\": 0,\n                \"metadata\": {}\n              },\n              {\n                \"accessoryId\": \"3\",\n                \"targetState\": \"thrown\",\n                \"sequenceOrder\": 2,\n                \"delayMs\": 0,\n                \"metadata\": {}\n              },\n              {\n                \"accessoryId\": \"1\",\n                \"targetState\": \"on\",\n                \"sequenceOrder\": 3,\n                \"delayMs\": 0,\n                \"metadata\": {}\n              },\n              {\n                \"accessoryId\": \"4\",\n                \"targetState\": \"off\",\n                \"sequenceOrder\": 4,\n                \"delayMs\": 0,\n                \"metadata\": {}\n              },\n              {\n                \"accessoryId\": \"5\",\n                \"targetState\": \"green\",\n                \"sequenceOrder\": 5,\n                \"delayMs\": 0,\n                \"metadata\": {}\n              }\n            ]\n          },\n          {\n            \"choiceId\": \"a4000000-bbbb-4ccc-8ddd-000000000003\",\n            \"displayName\": \"Arrangement a4000000-bbbb-4ccc-8ddd-000000000003\",\n            \"steps\": [\n              {\n                \"accessoryId\": \"2\",\n                \"targetState\": \"thrown\",\n                \"sequenceOrder\": 1,\n                \"delayMs\": 0,\n                \"metadata\": {}\n              },\n              {\n                \"accessoryId\": \"3\",\n                \"targetState\": \"closed\",\n                \"sequenceOrder\": 2,\n                \"delayMs\": 0,\n                \"metadata\": {}\n              },\n              {\n                \"accessoryId\": \"1\",\n                \"targetState\": \"off\",\n                \"sequenceOrder\": 3,\n                \"delayMs\": 0,\n                \"metadata\": {}\n              },\n              {\n                \"accessoryId\": \"4\",\n                \"targetState\": \"on\",\n                \"sequenceOrder\": 4,\n                \"delayMs\": 0,\n                \"metadata\": {}\n              },\n              {\n                \"accessoryId\": \"5\",\n                \"targetState\": \"red\",\n                \"sequenceOrder\": 5,\n                \"delayMs\": 0,\n                \"metadata\": {}\n              }\n            ]\n          }\n        ]\n      }\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRoutesUpdateLinkedAccessory",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "deleteLinkedAccessory",
          "signature": "routes.deleteLinkedAccessory(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, linkedAccessoryId: RailDeckIdentifier, input: DeleteLinkedAccessoryCommand, options: RailDeckRequestControlOptions = {}): Promise<LinkedAccessoryMutationReceipt>",
          "description": "Removes only the deliberately reviewed legacy or named group.",
          "returns": "Promise<LinkedAccessoryMutationReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Original layout."
            },
            {
              "name": "linkedAccessoryId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Originally reviewed group."
            },
            {
              "name": "input",
              "type": "DeleteLinkedAccessoryCommand",
              "optional": false,
              "description": "Original deletion identity and reviewed revision."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Cancellation/deadline without automatic mutation replay."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/routes.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls routes.deleteLinkedAccessory with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRoutesDeleteLinkedAccessory(client: RailDeckDirectIntegrationClient) {\n  return client.routes.deleteLinkedAccessory(\n    \"23\",\n    \"31\",\n    \"8\",\n    {\n      \"requestId\": \"a4000000-bbbb-4ccc-8ddd-000000000001\",\n      \"expectedRevision\": 5\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRoutesDeleteLinkedAccessory",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "analyseLinkedAccessoryActivation",
          "signature": "routes.analyseLinkedAccessoryActivation(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, linkedAccessoryId: RailDeckIdentifier): Promise<RailDeckRouteActivationAnalysis>",
          "description": "Analyses whether one linked accessory will change accessory state.",
          "returns": "Promise<RailDeckRouteActivationAnalysis>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the linked accessory."
            },
            {
              "name": "linkedAccessoryId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Linked accessory to analyse."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/routes.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls routes.analyseLinkedAccessoryActivation with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRoutesAnalyseLinkedAccessoryActivation(client: RailDeckDirectIntegrationClient) {\n  return client.routes.analyseLinkedAccessoryActivation(\n    \"account-1\",\n    \"layout-1\",\n    \"linked-2\"\n  );\n}\n",
          "exampleFunction": "exampleRoutesAnalyseLinkedAccessoryActivation",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "activateLinkedAccessory",
          "signature": "routes.activateLinkedAccessory(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, linkedAccessoryId: RailDeckIdentifier, input: RailDeckLinkedAccessoryActivationInput, options: RailDeckRequestControlOptions = {}): Promise<RailDeckLinkedAccessoryActivationResponse>",
          "description": "Applies one complete saved named arrangement through the whole-bridge command path.",
          "returns": "Promise<RailDeckLinkedAccessoryActivationResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the linked accessory."
            },
            {
              "name": "linkedAccessoryId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Linked accessory to activate."
            },
            {
              "name": "input",
              "type": "RailDeckLinkedAccessoryActivationInput",
              "optional": false,
              "description": "Original request, reviewed revision, stable choice and bounded delivery options."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Cancellation and deadline; interruption never authorises a fresh command."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/routes.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls routes.activateLinkedAccessory with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRoutesActivateLinkedAccessory(client: RailDeckDirectIntegrationClient) {\n  return client.routes.activateLinkedAccessory(\n    \"1\",\n    \"1\",\n    \"1\",\n    {\n      \"requestId\": \"82b54bc5-bd6b-41a9-82b1-ebaed84b8b7d\",\n      \"expectedRevision\": 13,\n      \"priority\": null,\n      \"expiresInMs\": 2000,\n      \"choiceId\": \"a4000000-bbbb-4ccc-8ddd-000000000002\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRoutesActivateLinkedAccessory",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "cancelExecution",
          "signature": "routes.cancelExecution(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, commandId: RailDeckIdentifier, input: RailDeckRouteExecutionCancellationInput = {}): Promise<RailDeckRouteExecutionCancellationResponse>",
          "description": "Cancels a running route or linked-accessory execution.",
          "returns": "Promise<RailDeckRouteExecutionCancellationResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the route execution."
            },
            {
              "name": "commandId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Parent route execution command to cancel."
            },
            {
              "name": "input",
              "type": "RailDeckRouteExecutionCancellationInput",
              "optional": true,
              "description": "Optional human-readable cancellation reason."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/routes.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls routes.cancelExecution with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRoutesCancelExecution(client: RailDeckDirectIntegrationClient) {\n  return client.routes.cancelExecution(\n    \"account-1\",\n    \"layout-1\",\n    \"command-route-1\",\n    {\n      \"reason\": \"{{reviewedReason}}\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleRoutesCancelExecution",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "list",
          "signature": "routes.list(accountId: string, layoutId: string, options: RailDeckRequestControlOptions = {}): Promise<RouteListResponse>",
          "description": "Reads the complete bounded route collection from one authorised snapshot.",
          "returns": "Promise<RouteListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Original layout."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Cancellation/deadline."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/route-management.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls routes.list with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRoutesList(client: RailDeckDirectIntegrationClient) {\n  return client.routes.list(\n    \"23\",\n    \"31\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRoutesList",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "get",
          "signature": "routes.get(accountId: string, layoutId: string, routeId: string, options: RailDeckRequestControlOptions = {}): Promise<RouteRecord>",
          "description": "Opens the original selected saved route without claiming it confirms a write.",
          "returns": "Promise<RouteRecord>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Original layout."
            },
            {
              "name": "routeId",
              "type": "string",
              "optional": false,
              "description": "Selected route."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Cancellation/deadline."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/route-management.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls routes.get with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRoutesGet(client: RailDeckDirectIntegrationClient) {\n  return client.routes.get(\n    \"1\",\n    \"1\",\n    \"1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRoutesGet",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "create",
          "signature": "routes.create(accountId: string, layoutId: string, input: CreateRouteCommand, options: RailDeckRequestControlOptions = {}): Promise<RouteMutationReceipt>",
          "description": "Captures the complete original creation before authentication can yield.",
          "returns": "Promise<RouteMutationReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Original layout."
            },
            {
              "name": "input",
              "type": "CreateRouteCommand",
              "optional": false,
              "description": "Original request identity and complete draft."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime; interrupted confirmation remains uncertain."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/route-management.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls routes.create with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRoutesCreate(client: RailDeckDirectIntegrationClient) {\n  return client.routes.create(\n    \"23\",\n    \"31\",\n    {\n      \"requestId\": \"aabbccdd-aabb-4abb-8abb-aabbccddeeff\",\n      \"definition\": {\n        \"displayName\": \"{{fixtureDisplayName}}\",\n        \"description\": \"Use the reception road.\\n\\nThe yard lamps are separate.\",\n        \"enabled\": true,\n        \"metadata\": {\n          \"raildeckPicture\": {\n            \"photographId\": null,\n            \"symbol\": \"night\"\n          },\n          \"retained\": {\n            \"label\": \"Existing route information\"\n          }\n        },\n        \"steps\": [\n          {\n            \"accessoryId\": \"91\",\n            \"targetState\": \"thrown\",\n            \"sequenceOrder\": 1,\n            \"delayMs\": 0,\n            \"metadata\": {\n              \"purpose\": \"Reception road\"\n            }\n          },\n          {\n            \"accessoryId\": \"92\",\n            \"targetState\": \"on\",\n            \"sequenceOrder\": 2,\n            \"delayMs\": 250,\n            \"metadata\": {}\n          }\n        ]\n      }\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRoutesCreate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "update",
          "signature": "routes.update(accountId: string, layoutId: string, routeId: string, input: UpdateRouteCommand, options: RailDeckRequestControlOptions = {}): Promise<RouteMutationReceipt>",
          "description": "Replaces only the reviewed complete definition, not a partial unreviewed draft.",
          "returns": "Promise<RouteMutationReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Original layout."
            },
            {
              "name": "routeId",
              "type": "string",
              "optional": false,
              "description": "Reviewed route."
            },
            {
              "name": "input",
              "type": "UpdateRouteCommand",
              "optional": false,
              "description": "Complete original replacement and reviewed revision."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime without automatic replay."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/route-management.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls routes.update with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRoutesUpdate(client: RailDeckDirectIntegrationClient) {\n  return client.routes.update(\n    \"1\",\n    \"1\",\n    \"1\",\n    {\n      \"requestId\": \"c8821c01-eb90-4324-9079-c83d76ba8444\",\n      \"expectedRevision\": 2,\n      \"definition\": {\n        \"displayName\": \"{{fixtureDisplayName}}\",\n        \"description\": null,\n        \"enabled\": true,\n        \"metadata\": {},\n        \"steps\": [\n          {\n            \"accessoryId\": \"1\",\n            \"targetState\": \"closed\",\n            \"sequenceOrder\": 1,\n            \"delayMs\": 0,\n            \"metadata\": {}\n          },\n          {\n            \"accessoryId\": \"3\",\n            \"targetState\": \"on\",\n            \"sequenceOrder\": 2,\n            \"delayMs\": 0,\n            \"metadata\": {}\n          },\n          {\n            \"accessoryId\": \"2\",\n            \"targetState\": \"green\",\n            \"sequenceOrder\": 3,\n            \"delayMs\": 0,\n            \"metadata\": {}\n          }\n        ]\n      }\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRoutesUpdate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "delete",
          "signature": "routes.delete(accountId: string, layoutId: string, routeId: string, input: DeleteRouteCommand, options: RailDeckRequestControlOptions = {}): Promise<RouteMutationReceipt>",
          "description": "Removes the deliberately reviewed route and retains its original retry evidence.",
          "returns": "Promise<RouteMutationReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Original layout."
            },
            {
              "name": "routeId",
              "type": "string",
              "optional": false,
              "description": "Reviewed route."
            },
            {
              "name": "input",
              "type": "DeleteRouteCommand",
              "optional": false,
              "description": "Original removal identity and reviewed revision."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Cancellation/deadline, not proof of remote rollback."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/route-management.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls routes.delete with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRoutesDelete(client: RailDeckDirectIntegrationClient) {\n  return client.routes.delete(\n    \"23\",\n    \"31\",\n    \"12\",\n    {\n      \"requestId\": \"aabbccdd-aabb-4abb-8abb-aabbccddeeff\",\n      \"expectedRevision\": 10\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRoutesDelete",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "saveOrder",
          "signature": "routes.saveOrder(accountId: string, layoutId: string, input: ReviewedOrderCommand, options: RailDeckRequestControlOptions = {}): Promise<ReviewedOrderReceipt>",
          "description": "Saves the complete reviewed layout-wide order without changing configuration.",
          "returns": "Promise<ReviewedOrderReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Original layout."
            },
            {
              "name": "input",
              "type": "ReviewedOrderCommand",
              "optional": false,
              "description": "Original reviewed permutation."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Request lifetime without polling or automatic retries."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/route-management.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls routes.saveOrder with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleRoutesSaveOrder(client: RailDeckDirectIntegrationClient) {\n  return client.routes.saveOrder(\n    \"23\",\n    \"31\",\n    {\n      \"requestId\": \"aabbccdd-aabb-4abb-8abb-aabbccddeeff\",\n      \"reviewedIds\": [\n        \"12\",\n        \"13\"\n      ],\n      \"orderedIds\": [\n        \"13\",\n        \"12\"\n      ]\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleRoutesSaveOrder",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/routes.ts",
          "sha256": "f9c9863ffef9492b40a3f03d6a41776d4907b5ab9833a975d5f4467c96987c3f"
        },
        {
          "path": "packages/frontend-sdk/src/features/route-management.ts",
          "sha256": "abfea4d338149297ec99c574fa56e237b9ef30259f55743d7d6e35980b3f3287"
        }
      ]
    },
    {
      "name": "layoutFavourites",
      "slug": "favourites",
      "title": "Personal favourites",
      "methods": [
        {
          "name": "get",
          "signature": "layoutFavourites.get(accountId: string, layoutId: string, options: RailDeckRequestControlOptions = {}): Promise<LayoutFavouriteSnapshot>",
          "description": "Reads the current person's complete bounded collection for one layout.",
          "returns": "Promise<LayoutFavouriteSnapshot>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Account containing the selected layout."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Layout whose personal collection should be read."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Cancellation and timeout owned by the requesting journey."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/layout-favourites.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls layoutFavourites.get with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLayoutFavouritesGet(client: RailDeckDirectIntegrationClient) {\n  return client.layoutFavourites.get(\n    \"1\",\n    \"18\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLayoutFavouritesGet",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "change",
          "signature": "layoutFavourites.change(accountId: string, layoutId: string, input: ChangeLayoutFavouritesCommand, options: RailDeckRequestControlOptions = {}): Promise<LayoutFavouriteReceipt>",
          "description": "Saves one captured membership or ordering change without automatic replay.",
          "returns": "Promise<LayoutFavouriteReceipt>",
          "parameters": [
            {
              "name": "accountId",
              "type": "string",
              "optional": false,
              "description": "Account containing the selected layout."
            },
            {
              "name": "layoutId",
              "type": "string",
              "optional": false,
              "description": "Layout whose personal collection was reviewed."
            },
            {
              "name": "input",
              "type": "ChangeLayoutFavouritesCommand",
              "optional": false,
              "description": "Original intent and reviewed revision, reused only for an explicit safe retry."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Cancellation and timeout, without changing the captured command."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/layout-favourites.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls layoutFavourites.change with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleLayoutFavouritesChange(client: RailDeckDirectIntegrationClient) {\n  return client.layoutFavourites.change(\n    \"1\",\n    \"1\",\n    {\n      \"requestId\": \"34a1d26d-322d-4714-a4bb-2686fe82ab82\",\n      \"reviewedRevision\": \"ab721b00687dcff35a8ce4354b3f4093d621ddd8b15aed6cab7de9be6db30f92\",\n      \"operation\": \"add\",\n      \"target\": {\n        \"kind\": \"signal\",\n        \"id\": \"2\"\n      }\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleLayoutFavouritesChange",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/layout-favourites.ts",
          "sha256": "e33c061893d06f510c2a5e13f6732f7f40b7ea009e2f5c71925a4c6109f08bd2"
        }
      ]
    },
    {
      "name": "media",
      "slug": "media",
      "title": "Pictures and media",
      "methods": [
        {
          "name": "completeUpload",
          "signature": "media.completeUpload(accountId: RailDeckIdentifier, mediaAssetId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<RailDeckMediaAsset>",
          "description": "Verifies a reserved private R2 upload before it can be linked.",
          "returns": "Promise<RailDeckMediaAsset>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Owning account."
            },
            {
              "name": "mediaAssetId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Reserved upload."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Cancellation."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/media.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls media.completeUpload with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleMediaCompleteUpload(client: RailDeckDirectIntegrationClient) {\n  return client.media.completeUpload(\n    \"23\",\n    \"3\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleMediaCompleteUpload",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listAssets",
          "signature": "media.listAssets(accountId: RailDeckIdentifier): Promise<RailDeckMediaAssetListResponse>",
          "description": "Lists media assets owned by an account.",
          "returns": "Promise<RailDeckMediaAssetListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the media assets."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/media.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls media.listAssets with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleMediaListAssets(client: RailDeckDirectIntegrationClient) {\n  return client.media.listAssets(\n    \"account 1\"\n  );\n}\n",
          "exampleFunction": "exampleMediaListAssets",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "createAsset",
          "signature": "media.createAsset(accountId: RailDeckIdentifier, input: CreateRailDeckMediaAssetInput, options: RailDeckRequestControlOptions = {}): Promise<RailDeckMediaAsset>",
          "description": "Creates one account media asset record after an upload has completed.",
          "returns": "Promise<RailDeckMediaAsset>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that will own the media asset."
            },
            {
              "name": "input",
              "type": "CreateRailDeckMediaAssetInput",
              "optional": false,
              "description": "Provider asset id, public URL, variants, dimensions, and metadata."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional request cancellation controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/media.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls media.createAsset with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleMediaCreateAsset(client: RailDeckDirectIntegrationClient) {\n  return client.media.createAsset(\n    \"account 1\",\n    {\n      \"provider\": \"cloudflare_images\",\n      \"providerAssetId\": \"cloudflare-image-1\",\n      \"mediaType\": \"image\",\n      \"displayName\": \"{{fixtureDisplayName}}\",\n      \"altText\": \"Mallard at the platform\",\n      \"originalUrl\": \"https://imagedelivery.net/rail/media-2/public\",\n      \"variants\": {\n        \"dial\": \"https://imagedelivery.net/rail/media-2/dial\"\n      },\n      \"width\": 1600,\n      \"height\": 900,\n      \"metadata\": {\n        \"source\": \"demo-upload\"\n      }\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleMediaCreateAsset",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getAsset",
          "signature": "media.getAsset(accountId: RailDeckIdentifier, mediaAssetId: RailDeckIdentifier, options: RailDeckRequestControlOptions = {}): Promise<RailDeckMediaAsset>",
          "description": "Loads one account media asset.",
          "returns": "Promise<RailDeckMediaAsset>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the media asset."
            },
            {
              "name": "mediaAssetId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Media asset to load."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional request cancellation controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/media.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls media.getAsset with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleMediaGetAsset(client: RailDeckDirectIntegrationClient) {\n  return client.media.getAsset(\n    \"account 1\",\n    \"media-2\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleMediaGetAsset",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "updateAsset",
          "signature": "media.updateAsset(accountId: RailDeckIdentifier, mediaAssetId: RailDeckIdentifier, input: UpdateRailDeckMediaAssetInput): Promise<RailDeckMediaAsset>",
          "description": "Updates one account media asset.",
          "returns": "Promise<RailDeckMediaAsset>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the media asset."
            },
            {
              "name": "mediaAssetId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Media asset to update."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckMediaAssetInput",
              "optional": false,
              "description": "Partial media asset update."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/media.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls media.updateAsset with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleMediaUpdateAsset(client: RailDeckDirectIntegrationClient) {\n  return client.media.updateAsset(\n    \"account 1\",\n    \"media-2\",\n    {\n      \"displayName\": \"{{fixtureDisplayName}}\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleMediaUpdateAsset",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "deleteAsset",
          "signature": "media.deleteAsset(accountId: RailDeckIdentifier, mediaAssetId: RailDeckIdentifier): Promise<RailDeckMediaAsset>",
          "description": "Requests deletion for one account media asset.",
          "returns": "Promise<RailDeckMediaAsset>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the media asset."
            },
            {
              "name": "mediaAssetId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Media asset to delete."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/media.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls media.deleteAsset with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleMediaDeleteAsset(client: RailDeckDirectIntegrationClient) {\n  return client.media.deleteAsset(\n    \"account 1\",\n    \"media-2\"\n  );\n}\n",
          "exampleFunction": "exampleMediaDeleteAsset",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "createUploadIntent",
          "signature": "media.createUploadIntent(accountId: RailDeckIdentifier, input: CreateRailDeckMediaUploadIntentInput, options: RailDeckRequestControlOptions = {}): Promise<RailDeckMediaUploadIntent>",
          "description": "Creates a provider direct-upload intent for browser-side file uploads.",
          "returns": "Promise<RailDeckMediaUploadIntent>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that will own the uploaded media."
            },
            {
              "name": "input",
              "type": "CreateRailDeckMediaUploadIntentInput",
              "optional": false,
              "description": "Upload provider, display name, expiry, and safe metadata."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional request cancellation controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/media.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls media.createUploadIntent with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleMediaCreateUploadIntent(client: RailDeckDirectIntegrationClient) {\n  return client.media.createUploadIntent(\n    \"account 1\",\n    {\n      \"provider\": \"cloudflare_images\",\n      \"displayName\": \"{{fixtureDisplayName}}\",\n      \"metadata\": {\n        \"targetType\": \"locomotive\"\n      }\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleMediaCreateUploadIntent",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listLinks",
          "signature": "media.listLinks(accountId: RailDeckIdentifier, target: RailDeckMediaLinkTarget, options: RailDeckRequestControlOptions = {}): Promise<RailDeckMediaLinkListResponse>",
          "description": "Lists media links for one account-owned target entity.",
          "returns": "Promise<RailDeckMediaLinkListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the linked entity."
            },
            {
              "name": "target",
              "type": "RailDeckMediaLinkTarget",
              "optional": false,
              "description": "Target type and id to list media links for."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional request cancellation controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/media.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls media.listLinks with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleMediaListLinks(client: RailDeckDirectIntegrationClient) {\n  return client.media.listLinks(\n    \"account 1\",\n    {\n      \"targetType\": \"locomotive\",\n      \"targetId\": \"loco-1\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleMediaListLinks",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "createLink",
          "signature": "media.createLink(accountId: RailDeckIdentifier, input: CreateRailDeckMediaLinkInput, options: RailDeckRequestControlOptions = {}): Promise<RailDeckMediaLink>",
          "description": "Links one media asset to a layout, locomotive, accessory, route, linked accessory, or rolling stock.",
          "returns": "Promise<RailDeckMediaLink>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the target and media asset."
            },
            {
              "name": "input",
              "type": "CreateRailDeckMediaLinkInput",
              "optional": false,
              "description": "Target, media asset id, role, ordering, and metadata."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional request cancellation controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/media.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls media.createLink with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleMediaCreateLink(client: RailDeckDirectIntegrationClient) {\n  return client.media.createLink(\n    \"account 1\",\n    {\n      \"targetType\": \"locomotive\",\n      \"targetId\": \"loco-1\",\n      \"mediaAssetId\": \"media-2\",\n      \"role\": \"primary\",\n      \"displayOrder\": 1\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleMediaCreateLink",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "updateLink",
          "signature": "media.updateLink(accountId: RailDeckIdentifier, mediaLinkId: RailDeckIdentifier, input: UpdateRailDeckMediaLinkInput, options: RailDeckRequestControlOptions = {}): Promise<RailDeckMediaLink>",
          "description": "Updates one media link.",
          "returns": "Promise<RailDeckMediaLink>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the media link."
            },
            {
              "name": "mediaLinkId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Media link to update."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckMediaLinkInput",
              "optional": false,
              "description": "Partial role, display order, or metadata update."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Optional request cancellation controls."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/media.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls media.updateLink with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleMediaUpdateLink(client: RailDeckDirectIntegrationClient) {\n  return client.media.updateLink(\n    \"account 1\",\n    \"media-link-2\",\n    {\n      \"role\": \"gallery\",\n      \"displayOrder\": 2\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleMediaUpdateLink",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "deleteLink",
          "signature": "media.deleteLink(accountId: RailDeckIdentifier, mediaLinkId: RailDeckIdentifier, options: RailDeckRequestControlOptions & { deleteUnreferencedAsset?: boolean } = {}): Promise<RailDeckSuccessResponse>",
          "description": "Deletes one media link without deleting the underlying media asset.",
          "returns": "Promise<RailDeckSuccessResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the media link."
            },
            {
              "name": "mediaLinkId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Media link to delete."
            },
            {
              "name": "options",
              "type": "RailDeckRequestControlOptions & { deleteUnreferencedAsset?: boolean }",
              "optional": true,
              "description": "Cancellation and optional deletion of an asset with no remaining links."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/media.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls media.deleteLink with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleMediaDeleteLink(client: RailDeckDirectIntegrationClient) {\n  return client.media.deleteLink(\n    \"account 1\",\n    \"media-link-2\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleMediaDeleteLink",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/media.ts",
          "sha256": "23e920a2263869970f1981aedd091ad948207a7d1b7bf0a2bca8e86b93cc9068"
        }
      ]
    },
    {
      "name": "events",
      "slug": "events-and-exhibitions",
      "title": "Events and exhibitions",
      "methods": [
        {
          "name": "list",
          "signature": "events.list(accountId: RailDeckIdentifier): Promise<RailDeckEventListResponse>",
          "description": "Lists events owned by an account.",
          "returns": "Promise<RailDeckEventListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the events."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/events.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls events.list with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleEventsList(client: RailDeckDirectIntegrationClient) {\n  return client.events.list(\n    \"account 1\"\n  );\n}\n",
          "exampleFunction": "exampleEventsList",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getReadiness",
          "signature": "events.getReadiness(accountId: RailDeckIdentifier): Promise<RailDeckEventReadiness>",
          "description": "Loads account-level event readiness.",
          "returns": "Promise<RailDeckEventReadiness>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account whose event readiness should be loaded."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/events.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls events.getReadiness with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleEventsGetReadiness(client: RailDeckDirectIntegrationClient) {\n  return client.events.getReadiness(\n    \"account 1\"\n  );\n}\n",
          "exampleFunction": "exampleEventsGetReadiness",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getCapabilities",
          "signature": "events.getCapabilities(accountId: RailDeckIdentifier): Promise<RailDeckEventCapabilitySummary>",
          "description": "Loads account-level event capabilities.",
          "returns": "Promise<RailDeckEventCapabilitySummary>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account whose event capabilities should be loaded."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/events.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls events.getCapabilities with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleEventsGetCapabilities(client: RailDeckDirectIntegrationClient) {\n  return client.events.getCapabilities(\n    \"account 1\"\n  );\n}\n",
          "exampleFunction": "exampleEventsGetCapabilities",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getPublicPolicy",
          "signature": "events.getPublicPolicy(accountId: RailDeckIdentifier, eventId: RailDeckIdentifier): Promise<RailDeckEventPublicPolicy>",
          "description": "Loads event-specific public access policy.",
          "returns": "Promise<RailDeckEventPublicPolicy>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the event."
            },
            {
              "name": "eventId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Event whose public policy should be loaded."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/events.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls events.getPublicPolicy with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleEventsGetPublicPolicy(client: RailDeckDirectIntegrationClient) {\n  return client.events.getPublicPolicy(\n    \"account 1\",\n    \"event 1\"\n  );\n}\n",
          "exampleFunction": "exampleEventsGetPublicPolicy",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "create",
          "signature": "events.create(accountId: RailDeckIdentifier, input: CreateRailDeckEventInput): Promise<RailDeckEvent>",
          "description": "Creates an account-owned event.",
          "returns": "Promise<RailDeckEvent>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that will own the event."
            },
            {
              "name": "input",
              "type": "CreateRailDeckEventInput",
              "optional": false,
              "description": "Public name, type, venue, window, and metadata for the event."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/events.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls events.create with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleEventsCreate(client: RailDeckDirectIntegrationClient) {\n  return client.events.create(\n    \"account 1\",\n    {\n      \"publicName\": \"Northborough Open Day\",\n      \"eventType\": \"club_open_day\",\n      \"venueName\": \"Northborough Hall\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleEventsCreate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "get",
          "signature": "events.get(accountId: RailDeckIdentifier, eventId: RailDeckIdentifier): Promise<RailDeckEvent>",
          "description": "Loads one account-owned event.",
          "returns": "Promise<RailDeckEvent>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the event."
            },
            {
              "name": "eventId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Event to load."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/events.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls events.get with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleEventsGet(client: RailDeckDirectIntegrationClient) {\n  return client.events.get(\n    \"account 1\",\n    \"capabilities\"\n  );\n}\n",
          "exampleFunction": "exampleEventsGet",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "update",
          "signature": "events.update(accountId: RailDeckIdentifier, eventId: RailDeckIdentifier, input: UpdateRailDeckEventInput): Promise<RailDeckEvent>",
          "description": "Updates one account-owned event.",
          "returns": "Promise<RailDeckEvent>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the event."
            },
            {
              "name": "eventId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Event to update."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckEventInput",
              "optional": false,
              "description": "Partial event update."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/events.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls events.update with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleEventsUpdate(client: RailDeckDirectIntegrationClient) {\n  return client.events.update(\n    \"account 1\",\n    \"event 1\",\n    {\n      \"status\": \"scheduled\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleEventsUpdate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listLayouts",
          "signature": "events.listLayouts(accountId: RailDeckIdentifier, eventId: RailDeckIdentifier): Promise<RailDeckEventLayoutListResponse>",
          "description": "Lists layouts attached to one event.",
          "returns": "Promise<RailDeckEventLayoutListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the event."
            },
            {
              "name": "eventId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Event whose layout attachments should be listed."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/events.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls events.listLayouts with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleEventsListLayouts(client: RailDeckDirectIntegrationClient) {\n  return client.events.listLayouts(\n    \"account 1\",\n    \"event 1\"\n  );\n}\n",
          "exampleFunction": "exampleEventsListLayouts",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "attachLayout",
          "signature": "events.attachLayout(accountId: RailDeckIdentifier, eventId: RailDeckIdentifier, input: AttachRailDeckEventLayoutInput): Promise<RailDeckEventLayout>",
          "description": "Attaches one layout to an event.",
          "returns": "Promise<RailDeckEventLayout>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the event."
            },
            {
              "name": "eventId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Event receiving the layout."
            },
            {
              "name": "input",
              "type": "AttachRailDeckEventLayoutInput",
              "optional": false,
              "description": "Layout attachment request."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/events.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls events.attachLayout with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleEventsAttachLayout(client: RailDeckDirectIntegrationClient) {\n  return client.events.attachLayout(\n    \"account 1\",\n    \"event 1\",\n    {\n      \"layoutId\": \"layout 1\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleEventsAttachLayout",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "activateLayout",
          "signature": "events.activateLayout(accountId: RailDeckIdentifier, eventId: RailDeckIdentifier, layoutId: RailDeckIdentifier): Promise<RailDeckEventLayout>",
          "description": "Marks one event-layout attachment as the active operational context.",
          "returns": "Promise<RailDeckEventLayout>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the event."
            },
            {
              "name": "eventId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Event containing the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout to activate for the event."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/events.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls events.activateLayout with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleEventsActivateLayout(client: RailDeckDirectIntegrationClient) {\n  return client.events.activateLayout(\n    \"account 1\",\n    \"event 1\",\n    \"layout 1\"\n  );\n}\n",
          "exampleFunction": "exampleEventsActivateLayout",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "finishLayout",
          "signature": "events.finishLayout(accountId: RailDeckIdentifier, eventId: RailDeckIdentifier, layoutId: RailDeckIdentifier): Promise<RailDeckEventLayout>",
          "description": "Marks one event-layout attachment as finished.",
          "returns": "Promise<RailDeckEventLayout>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the event."
            },
            {
              "name": "eventId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Event containing the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout to finish for the event."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/events.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls events.finishLayout with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleEventsFinishLayout(client: RailDeckDirectIntegrationClient) {\n  return client.events.finishLayout(\n    \"account 1\",\n    \"event 1\",\n    \"layout 1\"\n  );\n}\n",
          "exampleFunction": "exampleEventsFinishLayout",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "detachLayout",
          "signature": "events.detachLayout(accountId: RailDeckIdentifier, eventId: RailDeckIdentifier, layoutId: RailDeckIdentifier): Promise<RailDeckEventLayout>",
          "description": "Detaches one layout from an event.",
          "returns": "Promise<RailDeckEventLayout>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the event."
            },
            {
              "name": "eventId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Event containing the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout to detach."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/events.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls events.detachLayout with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleEventsDetachLayout(client: RailDeckDirectIntegrationClient) {\n  return client.events.detachLayout(\n    \"account 1\",\n    \"event 1\",\n    \"layout 1\"\n  );\n}\n",
          "exampleFunction": "exampleEventsDetachLayout",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listQrSessions",
          "signature": "events.listQrSessions(accountId: RailDeckIdentifier, eventId: RailDeckIdentifier): Promise<RailDeckEventQrSessionListResponse>",
          "description": "Lists public QR sessions for one event.",
          "returns": "Promise<RailDeckEventQrSessionListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the event."
            },
            {
              "name": "eventId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Event whose QR sessions should be listed."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/events.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls events.listQrSessions with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleEventsListQrSessions(client: RailDeckDirectIntegrationClient) {\n  return client.events.listQrSessions(\n    \"account 1\",\n    \"event 1\"\n  );\n}\n",
          "exampleFunction": "exampleEventsListQrSessions",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "createQrSession",
          "signature": "events.createQrSession(accountId: RailDeckIdentifier, eventId: RailDeckIdentifier, input: CreateRailDeckEventQrSessionInput): Promise<RailDeckCreatedEventQrSession>",
          "description": "Creates an event QR session and returns its one-time plain code.",
          "returns": "Promise<RailDeckCreatedEventQrSession>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the event."
            },
            {
              "name": "eventId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Event receiving the QR session."
            },
            {
              "name": "input",
              "type": "CreateRailDeckEventQrSessionInput",
              "optional": false,
              "description": "Layout, display, expiry, regeneration, and metadata details."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/events.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls events.createQrSession with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleEventsCreateQrSession(client: RailDeckDirectIntegrationClient) {\n  return client.events.createQrSession(\n    \"account 1\",\n    \"event 1\",\n    {\n      \"layoutId\": \"layout 1\",\n      \"displayName\": \"{{fixtureDisplayName}}\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleEventsCreateQrSession",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "revokeQrSession",
          "signature": "events.revokeQrSession(accountId: RailDeckIdentifier, eventId: RailDeckIdentifier, eventQrSessionId: RailDeckIdentifier): Promise<RailDeckEventQrSession>",
          "description": "Revokes an event QR session.",
          "returns": "Promise<RailDeckEventQrSession>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the event."
            },
            {
              "name": "eventId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Event containing the QR session."
            },
            {
              "name": "eventQrSessionId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Event QR session to revoke."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/events.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls events.revokeQrSession with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleEventsRevokeQrSession(client: RailDeckDirectIntegrationClient) {\n  return client.events.revokeQrSession(\n    \"account 1\",\n    \"event 1\",\n    \"qr 1\"\n  );\n}\n",
          "exampleFunction": "exampleEventsRevokeQrSession",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "regenerateQrSession",
          "signature": "events.regenerateQrSession(accountId: RailDeckIdentifier, eventId: RailDeckIdentifier, eventQrSessionId: RailDeckIdentifier): Promise<RailDeckCreatedEventQrSession>",
          "description": "Regenerates an event QR session and returns the replacement's plain code.",
          "returns": "Promise<RailDeckCreatedEventQrSession>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the event."
            },
            {
              "name": "eventId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Event containing the QR session."
            },
            {
              "name": "eventQrSessionId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Event QR session to regenerate."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/events.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls events.regenerateQrSession with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleEventsRegenerateQrSession(client: RailDeckDirectIntegrationClient) {\n  return client.events.regenerateQrSession(\n    \"account 1\",\n    \"event 1\",\n    \"qr 1\"\n  );\n}\n",
          "exampleFunction": "exampleEventsRegenerateQrSession",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "redeemQrSession",
          "signature": "events.redeemQrSession(eventQrSessionId: RailDeckIdentifier, input: RedeemRailDeckEventQrSessionInput): Promise<RailDeckEventQrSessionRedemption>",
          "description": "Redeems a public event QR code and returns scoped guest current-state access.",
          "returns": "Promise<RailDeckEventQrSessionRedemption>",
          "parameters": [
            {
              "name": "eventQrSessionId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Event QR session id encoded in the QR URL."
            },
            {
              "name": "input",
              "type": "RedeemRailDeckEventQrSessionInput",
              "optional": false,
              "description": "Plain guest code from the QR URL."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/events.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls events.redeemQrSession with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleEventsRedeemQrSession(client: RailDeckDirectIntegrationClient) {\n  return client.events.redeemQrSession(\n    \"qr 2\",\n    {\n      \"code\": \"{{setupOrRedemptionCode}}\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleEventsRedeemQrSession",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/events.ts",
          "sha256": "3a797c297abd7374fc010ef919bad20bfc103ec03c95cc623c8681e387b4a99e"
        }
      ]
    },
    {
      "name": "sharing",
      "slug": "sharing-and-guests",
      "title": "Sharing and guest access",
      "methods": [
        {
          "name": "listShareGroups",
          "signature": "sharing.listShareGroups(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier): Promise<RailDeckLayoutShareGroupListResponse>",
          "description": "Lists share groups for one layout.",
          "returns": "Promise<RailDeckLayoutShareGroupListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout whose share groups should be listed."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.listShareGroups with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingListShareGroups(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.listShareGroups(\n    \"account 1\",\n    \"layout-1\"\n  );\n}\n",
          "exampleFunction": "exampleSharingListShareGroups",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "createShareGroup",
          "signature": "sharing.createShareGroup(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, input: CreateRailDeckLayoutShareGroupInput): Promise<RailDeckLayoutShareGroup>",
          "description": "Creates one share group for a layout.",
          "returns": "Promise<RailDeckLayoutShareGroup>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout receiving the share group."
            },
            {
              "name": "input",
              "type": "CreateRailDeckLayoutShareGroupInput",
              "optional": false,
              "description": "Share group name, access level, expiry, and metadata."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.createShareGroup with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingCreateShareGroup(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.createShareGroup(\n    \"account 1\",\n    \"layout-1\",\n    {\n      \"name\": \"Exhibition Operators\",\n      \"accessLevel\": \"operator\",\n      \"expiresAt\": \"2030-06-24T18:00:00.000Z\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleSharingCreateShareGroup",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "updateShareGroup",
          "signature": "sharing.updateShareGroup(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, shareGroupId: RailDeckIdentifier, input: UpdateRailDeckLayoutShareGroupInput): Promise<RailDeckLayoutShareGroup>",
          "description": "Updates one share group for a layout.",
          "returns": "Promise<RailDeckLayoutShareGroup>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the share group."
            },
            {
              "name": "shareGroupId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Share group to update."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckLayoutShareGroupInput",
              "optional": false,
              "description": "Partial share group update."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.updateShareGroup with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingUpdateShareGroup(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.updateShareGroup(\n    \"account 1\",\n    \"layout-1\",\n    \"share-2\",\n    {\n      \"accessLevel\": \"viewer\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleSharingUpdateShareGroup",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "revokeShareGroup",
          "signature": "sharing.revokeShareGroup(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, shareGroupId: RailDeckIdentifier): Promise<RailDeckLayoutShareGroup>",
          "description": "Revokes one share group while keeping the audit-friendly record.",
          "returns": "Promise<RailDeckLayoutShareGroup>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the share group."
            },
            {
              "name": "shareGroupId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Share group to revoke."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.revokeShareGroup with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingRevokeShareGroup(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.revokeShareGroup(\n    \"account 1\",\n    \"layout-1\",\n    \"share-2\"\n  );\n}\n",
          "exampleFunction": "exampleSharingRevokeShareGroup",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listGuestSessions",
          "signature": "sharing.listGuestSessions(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier): Promise<RailDeckLayoutGuestSessionListResponse>",
          "description": "Lists guest QR sessions for one layout.",
          "returns": "Promise<RailDeckLayoutGuestSessionListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout whose guest sessions should be listed."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.listGuestSessions with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingListGuestSessions(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.listGuestSessions(\n    \"account 1\",\n    \"layout-1\"\n  );\n}\n",
          "exampleFunction": "exampleSharingListGuestSessions",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "createGuestSession",
          "signature": "sharing.createGuestSession(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, input: CreateRailDeckLayoutGuestSessionInput): Promise<RailDeckCreatedLayoutGuestSession>",
          "description": "Creates one guest QR session and returns its one-time plain code.",
          "returns": "Promise<RailDeckCreatedLayoutGuestSession>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout receiving the guest session."
            },
            {
              "name": "input",
              "type": "CreateRailDeckLayoutGuestSessionInput",
              "optional": false,
              "description": "Share group, display name, access level, expiry, regeneration, and metadata."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.createGuestSession with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingCreateGuestSession(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.createGuestSession(\n    \"account 1\",\n    \"layout-1\",\n    {\n      \"shareGroupId\": \"share-2\",\n      \"displayName\": \"{{fixtureDisplayName}}\",\n      \"accessLevel\": \"operator\",\n      \"expiresInSeconds\": 600,\n      \"autoRegenerate\": true,\n      \"regenerateAfterScanSeconds\": 30\n    }\n  );\n}\n",
          "exampleFunction": "exampleSharingCreateGuestSession",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "updateGuestSession",
          "signature": "sharing.updateGuestSession(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, guestSessionId: RailDeckIdentifier, input: UpdateRailDeckLayoutGuestSessionInput): Promise<RailDeckLayoutGuestSession>",
          "description": "Updates one guest QR session for a layout.",
          "returns": "Promise<RailDeckLayoutGuestSession>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the guest session."
            },
            {
              "name": "guestSessionId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Guest session to update."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckLayoutGuestSessionInput",
              "optional": false,
              "description": "Partial guest session update."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.updateGuestSession with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingUpdateGuestSession(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.updateGuestSession(\n    \"account 1\",\n    \"layout-1\",\n    \"guest-session-2\",\n    {\n      \"autoRegenerate\": false\n    }\n  );\n}\n",
          "exampleFunction": "exampleSharingUpdateGuestSession",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "revokeGuestSession",
          "signature": "sharing.revokeGuestSession(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, guestSessionId: RailDeckIdentifier): Promise<RailDeckLayoutGuestSession>",
          "description": "Revokes one guest QR session so it can no longer be redeemed.",
          "returns": "Promise<RailDeckLayoutGuestSession>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the guest session."
            },
            {
              "name": "guestSessionId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Guest session to revoke."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.revokeGuestSession with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingRevokeGuestSession(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.revokeGuestSession(\n    \"account 1\",\n    \"layout-1\",\n    \"guest-session-2\"\n  );\n}\n",
          "exampleFunction": "exampleSharingRevokeGuestSession",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "regenerateGuestSession",
          "signature": "sharing.regenerateGuestSession(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, guestSessionId: RailDeckIdentifier): Promise<RailDeckCreatedLayoutGuestSession>",
          "description": "Regenerates one guest QR session and returns the replacement's plain code.",
          "returns": "Promise<RailDeckCreatedLayoutGuestSession>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the guest session."
            },
            {
              "name": "guestSessionId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Guest session to regenerate."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.regenerateGuestSession with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingRegenerateGuestSession(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.regenerateGuestSession(\n    \"account 1\",\n    \"layout-1\",\n    \"guest-session-2\"\n  );\n}\n",
          "exampleFunction": "exampleSharingRegenerateGuestSession",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "autoRegenerateGuestSession",
          "signature": "sharing.autoRegenerateGuestSession(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, guestSessionId: RailDeckIdentifier): Promise<RailDeckCreatedLayoutGuestSession>",
          "description": "Regenerates a scanned guest QR session after its countdown is due.",
          "returns": "Promise<RailDeckCreatedLayoutGuestSession>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the guest session."
            },
            {
              "name": "guestSessionId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Scanned guest session to auto-regenerate when due."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.autoRegenerateGuestSession with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingAutoRegenerateGuestSession(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.autoRegenerateGuestSession(\n    \"account 1\",\n    \"layout-1\",\n    \"guest-session-3\"\n  );\n}\n",
          "exampleFunction": "exampleSharingAutoRegenerateGuestSession",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "redeemGuestSession",
          "signature": "sharing.redeemGuestSession(guestSessionId: RailDeckIdentifier, input: RedeemRailDeckLayoutGuestSessionInput): Promise<RailDeckGuestSessionRedemption>",
          "description": "Redeems a public guest QR code and returns scoped guest current-state access.",
          "returns": "Promise<RailDeckGuestSessionRedemption>",
          "parameters": [
            {
              "name": "guestSessionId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Guest session id encoded in the QR URL."
            },
            {
              "name": "input",
              "type": "RedeemRailDeckLayoutGuestSessionInput",
              "optional": false,
              "description": "Plain guest code from the QR URL."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.redeemGuestSession with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingRedeemGuestSession(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.redeemGuestSession(\n    \"session-1\",\n    {\n      \"code\": \"{{setupOrRedemptionCode}}\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleSharingRedeemGuestSession",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listLayoutInvitations",
          "signature": "sharing.listLayoutInvitations(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier): Promise<RailDeckLayoutInvitationListResponse>",
          "description": "Lists layout invitations managed from one layout.",
          "returns": "Promise<RailDeckLayoutInvitationListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout whose invitations should be listed."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.listLayoutInvitations with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingListLayoutInvitations(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.listLayoutInvitations(\n    \"account 1\",\n    \"layout-1\"\n  );\n}\n",
          "exampleFunction": "exampleSharingListLayoutInvitations",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "createLayoutInvitation",
          "signature": "sharing.createLayoutInvitation(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, input: CreateRailDeckLayoutInvitationInput): Promise<RailDeckCreatedLayoutInvitation>",
          "description": "Creates a layout invitation and queues its email.",
          "returns": "Promise<RailDeckCreatedLayoutInvitation>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout receiving the invitation."
            },
            {
              "name": "input",
              "type": "CreateRailDeckLayoutInvitationInput",
              "optional": false,
              "description": "Invite email, role, optional expiry, and metadata."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.createLayoutInvitation with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingCreateLayoutInvitation(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.createLayoutInvitation(\n    \"account 1\",\n    \"layout-1\",\n    {\n      \"email\": \"{{fixtureEmail}}\",\n      \"role\": \"operator\",\n      \"expiresAt\": \"2030-06-24T18:00:00.000Z\",\n      \"metadata\": {\n        \"note\": \"Club friend\"\n      }\n    }\n  );\n}\n",
          "exampleFunction": "exampleSharingCreateLayoutInvitation",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "cancelLayoutInvitation",
          "signature": "sharing.cancelLayoutInvitation(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, invitationId: RailDeckIdentifier): Promise<RailDeckLayoutInvitation>",
          "description": "Cancels a pending layout invitation.",
          "returns": "Promise<RailDeckLayoutInvitation>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the invitation."
            },
            {
              "name": "invitationId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Invitation to cancel."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.cancelLayoutInvitation with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingCancelLayoutInvitation(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.cancelLayoutInvitation(\n    \"account 1\",\n    \"layout-1\",\n    \"layout-invitation-2\"\n  );\n}\n",
          "exampleFunction": "exampleSharingCancelLayoutInvitation",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "resendLayoutInvitation",
          "signature": "sharing.resendLayoutInvitation(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, invitationId: RailDeckIdentifier): Promise<RailDeckCreatedLayoutInvitation>",
          "description": "Resends a pending layout invitation email.",
          "returns": "Promise<RailDeckCreatedLayoutInvitation>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the invitation."
            },
            {
              "name": "invitationId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Invitation to resend."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.resendLayoutInvitation with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingResendLayoutInvitation(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.resendLayoutInvitation(\n    \"account 1\",\n    \"layout-1\",\n    \"layout-invitation-2\"\n  );\n}\n",
          "exampleFunction": "exampleSharingResendLayoutInvitation",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "regenerateLayoutInvitation",
          "signature": "sharing.regenerateLayoutInvitation(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, invitationId: RailDeckIdentifier): Promise<RailDeckCreatedLayoutInvitation>",
          "description": "Regenerates a pending layout invitation by creating a replacement invitation.",
          "returns": "Promise<RailDeckCreatedLayoutInvitation>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the invitation."
            },
            {
              "name": "invitationId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Invitation to regenerate."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.regenerateLayoutInvitation with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingRegenerateLayoutInvitation(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.regenerateLayoutInvitation(\n    \"account 1\",\n    \"layout-1\",\n    \"layout-invitation-2\"\n  );\n}\n",
          "exampleFunction": "exampleSharingRegenerateLayoutInvitation",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listMyLayoutInvitations",
          "signature": "sharing.listMyLayoutInvitations(): Promise<RailDeckMyLayoutInvitationListResponse>",
          "description": "Lists pending layout invitations for the signed-in user's email address.",
          "returns": "Promise<RailDeckMyLayoutInvitationListResponse>",
          "parameters": [],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.listMyLayoutInvitations with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingListMyLayoutInvitations(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.listMyLayoutInvitations(\n\n  );\n}\n",
          "exampleFunction": "exampleSharingListMyLayoutInvitations",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "acceptMyLayoutInvitation",
          "signature": "sharing.acceptMyLayoutInvitation(invitationId: RailDeckIdentifier, input: RespondRailDeckLayoutInvitationInput = {}): Promise<RailDeckAcceptedLayoutInvitation>",
          "description": "Accepts one layout invitation for the signed-in user.",
          "returns": "Promise<RailDeckAcceptedLayoutInvitation>",
          "parameters": [
            {
              "name": "invitationId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Invitation to accept."
            },
            {
              "name": "input",
              "type": "RespondRailDeckLayoutInvitationInput",
              "optional": true,
              "description": "The operation input. Use the complete typed shape shown in the example and retain reviewed versions for writes."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.acceptMyLayoutInvitation with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingAcceptMyLayoutInvitation(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.acceptMyLayoutInvitation(\n    \"layout-invitation-3\",\n    {\n      \"invitationCode\": \"{{setupOrRedemptionCode}}\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleSharingAcceptMyLayoutInvitation",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "declineMyLayoutInvitation",
          "signature": "sharing.declineMyLayoutInvitation(invitationId: RailDeckIdentifier, input: RespondRailDeckLayoutInvitationInput = {}): Promise<RailDeckLayoutInvitation>",
          "description": "Declines one layout invitation for the signed-in user.",
          "returns": "Promise<RailDeckLayoutInvitation>",
          "parameters": [
            {
              "name": "invitationId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Invitation to decline."
            },
            {
              "name": "input",
              "type": "RespondRailDeckLayoutInvitationInput",
              "optional": true,
              "description": "The operation input. Use the complete typed shape shown in the example and retain reviewed versions for writes."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.declineMyLayoutInvitation with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingDeclineMyLayoutInvitation(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.declineMyLayoutInvitation(\n    \"layout-invitation-4\",\n    {\n      \"invitationCode\": \"{{setupOrRedemptionCode}}\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleSharingDeclineMyLayoutInvitation",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listLayoutMembers",
          "signature": "sharing.listLayoutMembers(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier): Promise<RailDeckLayoutMemberListResponse>",
          "description": "Lists layout members for one layout.",
          "returns": "Promise<RailDeckLayoutMemberListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout whose members should be listed."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.listLayoutMembers with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingListLayoutMembers(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.listLayoutMembers(\n    \"account 1\",\n    \"layout-1\"\n  );\n}\n",
          "exampleFunction": "exampleSharingListLayoutMembers",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "updateLayoutMember",
          "signature": "sharing.updateLayoutMember(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, memberUserId: RailDeckIdentifier, input: UpdateRailDeckLayoutMemberInput): Promise<RailDeckLayoutMember>",
          "description": "Updates one layout member.",
          "returns": "Promise<RailDeckLayoutMember>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the member."
            },
            {
              "name": "memberUserId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "User id for the layout member."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckLayoutMemberInput",
              "optional": false,
              "description": "Role or metadata changes."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.updateLayoutMember with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingUpdateLayoutMember(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.updateLayoutMember(\n    \"account 1\",\n    \"layout-1\",\n    \"user-2\",\n    {\n      \"role\": \"setup\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleSharingUpdateLayoutMember",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "revokeLayoutMember",
          "signature": "sharing.revokeLayoutMember(accountId: RailDeckIdentifier, layoutId: RailDeckIdentifier, memberUserId: RailDeckIdentifier): Promise<RailDeckLayoutMember>",
          "description": "Revokes one layout member.",
          "returns": "Promise<RailDeckLayoutMember>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the layout."
            },
            {
              "name": "layoutId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Layout containing the member."
            },
            {
              "name": "memberUserId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "User id for the layout member."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/sharing.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls sharing.revokeLayoutMember with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleSharingRevokeLayoutMember(client: RailDeckDirectIntegrationClient) {\n  return client.sharing.revokeLayoutMember(\n    \"account 1\",\n    \"layout-1\",\n    \"user-2\"\n  );\n}\n",
          "exampleFunction": "exampleSharingRevokeLayoutMember",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/sharing.ts",
          "sha256": "3934b5be2095173f5c3950b22fd5eab4b011ea71a21a1569b064f366ba9b1f8a"
        }
      ]
    },
    {
      "name": "controllers",
      "slug": "controllers",
      "title": "Command stations",
      "methods": [
        {
          "name": "list",
          "signature": "controllers.list(accountId: RailDeckIdentifier, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckControllerListResponse>",
          "description": "Lists controllers in an account.",
          "returns": "Promise<RailDeckControllerListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the controllers."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/controllers.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controllers.list with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControllersList(client: RailDeckDirectIntegrationClient) {\n  return client.controllers.list(\n    \"account 1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleControllersList",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "create",
          "signature": "controllers.create(accountId: RailDeckIdentifier, input: CreateRailDeckControllerInput, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckController>",
          "description": "Creates a controller inside an account.",
          "returns": "Promise<RailDeckController>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that will own the controller."
            },
            {
              "name": "input",
              "type": "CreateRailDeckControllerInput",
              "optional": false,
              "description": "Controller name, type, connection mode, layout assignment, and metadata."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/controllers.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controllers.create with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControllersCreate(client: RailDeckDirectIntegrationClient) {\n  return client.controllers.create(\n    \"account 1\",\n    {\n      \"name\": \"DCC-EX\",\n      \"type\": \"dcc-ex\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleControllersCreate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "get",
          "signature": "controllers.get(accountId: RailDeckIdentifier, controllerId: RailDeckIdentifier, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckController>",
          "description": "Loads one controller.",
          "returns": "Promise<RailDeckController>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the controller."
            },
            {
              "name": "controllerId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Controller to load."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/controllers.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controllers.get with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControllersGet(client: RailDeckDirectIntegrationClient) {\n  return client.controllers.get(\n    \"account-1\",\n    \"controller-1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleControllersGet",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "update",
          "signature": "controllers.update(accountId: RailDeckIdentifier, controllerId: RailDeckIdentifier, input: UpdateRailDeckControllerInput, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckController>",
          "description": "Updates one controller.",
          "returns": "Promise<RailDeckController>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the controller."
            },
            {
              "name": "controllerId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Controller to update."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckControllerInput",
              "optional": false,
              "description": "Partial controller update."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/controllers.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controllers.update with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControllersUpdate(client: RailDeckDirectIntegrationClient) {\n  return client.controllers.update(\n    \"account-1\",\n    \"controller-1\",\n    {\n      \"name\": \"Yard Controller\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleControllersUpdate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getDeletionPreview",
          "signature": "controllers.getDeletionPreview(accountId: RailDeckIdentifier, controllerId: RailDeckIdentifier, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckControllerDeletionPreview>",
          "description": "Loads the current consequences and blockers which bind deliberate controller deletion.",
          "returns": "Promise<RailDeckControllerDeletionPreview>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Authorised account containing the selected railway records."
            },
            {
              "name": "controllerId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Identifier of the explicitly selected record in your authorised development environment."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/controllers.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controllers.getDeletionPreview with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControllersGetDeletionPreview(client: RailDeckDirectIntegrationClient) {\n  return client.controllers.getDeletionPreview(\n    \"account-1\",\n    \"controller-1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleControllersGetDeletionPreview",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "delete",
          "signature": "controllers.delete(accountId: RailDeckIdentifier, controllerId: RailDeckIdentifier, input: DeleteRailDeckControllerInput, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckSuccessResponse>",
          "description": "Deletes one controller.",
          "returns": "Promise<RailDeckSuccessResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the controller."
            },
            {
              "name": "controllerId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Controller to delete."
            },
            {
              "name": "input",
              "type": "DeleteRailDeckControllerInput",
              "optional": false,
              "description": "The operation input. Use the complete typed shape shown in the example and retain reviewed versions for writes."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/controllers.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controllers.delete with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControllersDelete(client: RailDeckDirectIntegrationClient) {\n  return client.controllers.delete(\n    \"account-1\",\n    \"controller-1\",\n    {\n      \"previewFingerprint\": \"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\n      \"confirmed\": true\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleControllersDelete",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/controllers.ts",
          "sha256": "db5715fd9f0df7f627b5d0cdf90f073f9a3a20c6220464dda1d33cdb0a72a4ad"
        }
      ]
    },
    {
      "name": "bridges",
      "slug": "bridges",
      "title": "Bridge management",
      "methods": [
        {
          "name": "list",
          "signature": "bridges.list(accountId: RailDeckIdentifier, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckBridgeListResponse>",
          "description": "Lists bridges in an account.",
          "returns": "Promise<RailDeckBridgeListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the bridges."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/bridges.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls bridges.list with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleBridgesList(client: RailDeckDirectIntegrationClient) {\n  return client.bridges.list(\n    \"account 1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleBridgesList",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "create",
          "signature": "bridges.create(accountId: RailDeckIdentifier, input: CreateRailDeckBridgeInput, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckBridge>",
          "description": "Creates a bridge record without redeeming hardware setup.",
          "returns": "Promise<RailDeckBridge>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that will own the bridge."
            },
            {
              "name": "input",
              "type": "CreateRailDeckBridgeInput",
              "optional": false,
              "description": "Display name and optional assignments."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/bridges.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls bridges.create with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleBridgesCreate(client: RailDeckDirectIntegrationClient) {\n  return client.bridges.create(\n    \"account-1\",\n    {\n      \"displayName\": \"{{fixtureDisplayName}}\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleBridgesCreate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "get",
          "signature": "bridges.get(accountId: RailDeckIdentifier, bridgeId: RailDeckIdentifier, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckBridge>",
          "description": "Loads one bridge.",
          "returns": "Promise<RailDeckBridge>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the bridge."
            },
            {
              "name": "bridgeId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Bridge to load."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/bridges.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls bridges.get with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleBridgesGet(client: RailDeckDirectIntegrationClient) {\n  return client.bridges.get(\n    \"account-1\",\n    \"bridge-1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleBridgesGet",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "update",
          "signature": "bridges.update(accountId: RailDeckIdentifier, bridgeId: RailDeckIdentifier, input: UpdateRailDeckBridgeInput, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckBridge>",
          "description": "Updates one bridge.",
          "returns": "Promise<RailDeckBridge>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the bridge."
            },
            {
              "name": "bridgeId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Bridge to update."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckBridgeInput",
              "optional": false,
              "description": "Partial bridge update."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/bridges.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls bridges.update with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleBridgesUpdate(client: RailDeckDirectIntegrationClient) {\n  return client.bridges.update(\n    \"account-1\",\n    \"bridge-1\",\n    {\n      \"displayName\": \"{{fixtureDisplayName}}\"\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleBridgesUpdate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getRetirementPreview",
          "signature": "bridges.getRetirementPreview(accountId: RailDeckIdentifier, bridgeId: RailDeckIdentifier, replacementBridgeId: RailDeckIdentifier | null, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckBridgeRetirementPreview>",
          "description": "Loads the exact current consequences of removing or completing a replacement.",
          "returns": "Promise<RailDeckBridgeRetirementPreview>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Authorised account containing the selected railway records."
            },
            {
              "name": "bridgeId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Identifier of the explicitly selected record in your authorised development environment."
            },
            {
              "name": "replacementBridgeId",
              "type": "RailDeckIdentifier | null",
              "optional": false,
              "description": "Selected replacement bridge, or null when no replacement is being proposed."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/bridges.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls bridges.getRetirementPreview with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleBridgesGetRetirementPreview(client: RailDeckDirectIntegrationClient) {\n  return client.bridges.getRetirementPreview(\n    \"account 1\",\n    \"bridge 1\",\n    \"bridge 2\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleBridgesGetRetirementPreview",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "delete",
          "signature": "bridges.delete(accountId: RailDeckIdentifier, bridgeId: RailDeckIdentifier, input: DeleteRailDeckBridgeInput, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckBridgeRetirementResult>",
          "description": "Retires one bridge against an exact reviewed preview.",
          "returns": "Promise<RailDeckBridgeRetirementResult>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Authorised account containing the selected railway records."
            },
            {
              "name": "bridgeId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Identifier of the explicitly selected record in your authorised development environment."
            },
            {
              "name": "input",
              "type": "DeleteRailDeckBridgeInput",
              "optional": false,
              "description": "The operation input. Use the complete typed shape shown in the example and retain reviewed versions for writes."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/bridges.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls bridges.delete with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleBridgesDelete(client: RailDeckDirectIntegrationClient) {\n  return client.bridges.delete(\n    \"account 1\",\n    \"bridge 1\",\n    {\n      \"replacementBridgeId\": \"bridge 2\",\n      \"previewFingerprint\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n      \"confirmed\": true\n    },\n    {}\n  );\n}\n",
          "exampleFunction": "exampleBridgesDelete",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getStatus",
          "signature": "bridges.getStatus(accountId: RailDeckIdentifier, bridgeId: RailDeckIdentifier, requestOptions: RailDeckRequestControlOptions = {}): Promise<RailDeckBridgeStatus>",
          "description": "Loads bridge lifecycle and assignment health status.",
          "returns": "Promise<RailDeckBridgeStatus>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the bridge."
            },
            {
              "name": "bridgeId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Bridge to inspect."
            },
            {
              "name": "requestOptions",
              "type": "RailDeckRequestControlOptions",
              "optional": true,
              "description": "Caller-owned cancellation signal and timeout; these controls never authorise an automatic mutation retry."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/bridges.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls bridges.getStatus with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleBridgesGetStatus(client: RailDeckDirectIntegrationClient) {\n  return client.bridges.getStatus(\n    \"account-1\",\n    \"bridge-1\",\n    {}\n  );\n}\n",
          "exampleFunction": "exampleBridgesGetStatus",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/bridges.ts",
          "sha256": "34d0e482fa90d91fedae2e3c3dd938b10d61141c645616b3b7a2634af7682266"
        }
      ]
    },
    {
      "name": "controlSurfaces",
      "slug": "control-surfaces",
      "title": "Physical controls",
      "methods": [
        {
          "name": "list",
          "signature": "controlSurfaces.list(accountId: RailDeckIdentifier): Promise<RailDeckControlSurfaceListResponse>",
          "description": "Lists control surfaces owned by an account.",
          "returns": "Promise<RailDeckControlSurfaceListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account whose control surfaces should be listed."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/control-surfaces-setup.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controlSurfaces.list with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControlSurfacesList(client: RailDeckDirectIntegrationClient) {\n  return client.controlSurfaces.list(\n    \"account 1\"\n  );\n}\n",
          "exampleFunction": "exampleControlSurfacesList",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "get",
          "signature": "controlSurfaces.get(accountId: RailDeckIdentifier, controlSurfaceId: RailDeckIdentifier): Promise<RailDeckControlSurface>",
          "description": "Loads one control surface.",
          "returns": "Promise<RailDeckControlSurface>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the control surface."
            },
            {
              "name": "controlSurfaceId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Control surface to load."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/control-surfaces-setup.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controlSurfaces.get with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControlSurfacesGet(client: RailDeckDirectIntegrationClient) {\n  return client.controlSurfaces.get(\n    \"account 1\",\n    \"control-surface-1\"\n  );\n}\n",
          "exampleFunction": "exampleControlSurfacesGet",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "update",
          "signature": "controlSurfaces.update(accountId: RailDeckIdentifier, controlSurfaceId: RailDeckIdentifier, input: UpdateRailDeckControlSurfaceInput): Promise<RailDeckControlSurface>",
          "description": "Updates one control surface.",
          "returns": "Promise<RailDeckControlSurface>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the control surface."
            },
            {
              "name": "controlSurfaceId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Control surface to update."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckControlSurfaceInput",
              "optional": false,
              "description": "Partial control-surface update."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/control-surfaces-setup.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controlSurfaces.update with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControlSurfacesUpdate(client: RailDeckDirectIntegrationClient) {\n  return client.controlSurfaces.update(\n    \"account 1\",\n    \"control-surface-1\",\n    {\n      \"buttonLayout\": \"four\",\n      \"showLocomotiveImages\": false\n    }\n  );\n}\n",
          "exampleFunction": "exampleControlSurfacesUpdate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "revoke",
          "signature": "controlSurfaces.revoke(accountId: RailDeckIdentifier, controlSurfaceId: RailDeckIdentifier): Promise<RailDeckControlSurface>",
          "description": "Revokes one control surface.",
          "returns": "Promise<RailDeckControlSurface>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the control surface."
            },
            {
              "name": "controlSurfaceId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Control surface to revoke."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/control-surfaces-setup.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controlSurfaces.revoke with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControlSurfacesRevoke(client: RailDeckDirectIntegrationClient) {\n  return client.controlSurfaces.revoke(\n    \"account 1\",\n    \"control-surface-1\"\n  );\n}\n",
          "exampleFunction": "exampleControlSurfacesRevoke",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listQuickList",
          "signature": "controlSurfaces.listQuickList(accountId: RailDeckIdentifier, controlSurfaceId: RailDeckIdentifier): Promise<RailDeckControlSurfaceQuickListResponse>",
          "description": "Lists shared quick-list entries for one control surface.",
          "returns": "Promise<RailDeckControlSurfaceQuickListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the control surface."
            },
            {
              "name": "controlSurfaceId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Control surface whose quick list should be loaded."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/control-surfaces-setup.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controlSurfaces.listQuickList with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControlSurfacesListQuickList(client: RailDeckDirectIntegrationClient) {\n  return client.controlSurfaces.listQuickList(\n    \"account 1\",\n    \"control-surface-1\"\n  );\n}\n",
          "exampleFunction": "exampleControlSurfacesListQuickList",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "replaceQuickList",
          "signature": "controlSurfaces.replaceQuickList(accountId: RailDeckIdentifier, controlSurfaceId: RailDeckIdentifier, input: ReplaceRailDeckControlSurfaceQuickListInput): Promise<RailDeckControlSurfaceQuickListResponse>",
          "description": "Replaces shared quick-list entries for one control surface.",
          "returns": "Promise<RailDeckControlSurfaceQuickListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the control surface."
            },
            {
              "name": "controlSurfaceId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Control surface whose quick list should be replaced."
            },
            {
              "name": "input",
              "type": "ReplaceRailDeckControlSurfaceQuickListInput",
              "optional": false,
              "description": "Ordered quick-list entries."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/control-surfaces-setup.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controlSurfaces.replaceQuickList with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControlSurfacesReplaceQuickList(client: RailDeckDirectIntegrationClient) {\n  return client.controlSurfaces.replaceQuickList(\n    \"account 1\",\n    \"control-surface-1\",\n    {\n      \"items\": [\n        {\n          \"itemKind\": \"route\",\n          \"targetId\": \"route-1\",\n          \"displayName\": \"{{fixtureDisplayName}}\",\n          \"position\": 1\n        }\n      ]\n    }\n  );\n}\n",
          "exampleFunction": "exampleControlSurfacesReplaceQuickList",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listProfiles",
          "signature": "controlSurfaces.listProfiles(accountId: RailDeckIdentifier, controlSurfaceId: RailDeckIdentifier): Promise<RailDeckControlSurfaceProfileListResponse>",
          "description": "Lists personal profiles for one control surface and signed-in operator.",
          "returns": "Promise<RailDeckControlSurfaceProfileListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the control surface."
            },
            {
              "name": "controlSurfaceId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Control surface whose profiles should be listed."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/control-surfaces-profiles.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controlSurfaces.listProfiles with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControlSurfacesListProfiles(client: RailDeckDirectIntegrationClient) {\n  return client.controlSurfaces.listProfiles(\n    \"account 1\",\n    \"control-surface-1\"\n  );\n}\n",
          "exampleFunction": "exampleControlSurfacesListProfiles",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "createProfile",
          "signature": "controlSurfaces.createProfile(accountId: RailDeckIdentifier, controlSurfaceId: RailDeckIdentifier, input: CreateRailDeckControlSurfaceProfileInput): Promise<RailDeckControlSurfaceProfileDetail>",
          "description": "Creates a personal profile for one control surface and signed-in operator.",
          "returns": "Promise<RailDeckControlSurfaceProfileDetail>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the control surface."
            },
            {
              "name": "controlSurfaceId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Control surface receiving the profile."
            },
            {
              "name": "input",
              "type": "CreateRailDeckControlSurfaceProfileInput",
              "optional": false,
              "description": "Personal display, button, image, and metadata preferences."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/control-surfaces-profiles.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controlSurfaces.createProfile with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControlSurfacesCreateProfile(client: RailDeckDirectIntegrationClient) {\n  return client.controlSurfaces.createProfile(\n    \"account 1\",\n    \"control-surface-1\",\n    {\n      \"displayName\": \"{{fixtureDisplayName}}\",\n      \"isDefault\": true,\n      \"showLocomotiveImages\": true,\n      \"buttonLayout\": \"three\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleControlSurfacesCreateProfile",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getProfile",
          "signature": "controlSurfaces.getProfile(accountId: RailDeckIdentifier, controlSurfaceId: RailDeckIdentifier, controlSurfaceProfileId: RailDeckIdentifier): Promise<RailDeckControlSurfaceProfileDetail>",
          "description": "Loads one personal control-surface profile.",
          "returns": "Promise<RailDeckControlSurfaceProfileDetail>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the control surface."
            },
            {
              "name": "controlSurfaceId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Control surface containing the profile."
            },
            {
              "name": "controlSurfaceProfileId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Profile to load."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/control-surfaces-profiles.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controlSurfaces.getProfile with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControlSurfacesGetProfile(client: RailDeckDirectIntegrationClient) {\n  return client.controlSurfaces.getProfile(\n    \"account 1\",\n    \"control-surface-1\",\n    \"profile-2\"\n  );\n}\n",
          "exampleFunction": "exampleControlSurfacesGetProfile",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "updateProfile",
          "signature": "controlSurfaces.updateProfile(accountId: RailDeckIdentifier, controlSurfaceId: RailDeckIdentifier, controlSurfaceProfileId: RailDeckIdentifier, input: UpdateRailDeckControlSurfaceProfileInput): Promise<RailDeckControlSurfaceProfileDetail>",
          "description": "Updates one personal control-surface profile.",
          "returns": "Promise<RailDeckControlSurfaceProfileDetail>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the control surface."
            },
            {
              "name": "controlSurfaceId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Control surface containing the profile."
            },
            {
              "name": "controlSurfaceProfileId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Profile to update."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckControlSurfaceProfileInput",
              "optional": false,
              "description": "Partial personal profile update."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/control-surfaces-profiles.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controlSurfaces.updateProfile with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControlSurfacesUpdateProfile(client: RailDeckDirectIntegrationClient) {\n  return client.controlSurfaces.updateProfile(\n    \"account 1\",\n    \"control-surface-1\",\n    \"profile-2\",\n    {\n      \"buttonLayout\": \"four\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleControlSurfacesUpdateProfile",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "deleteProfile",
          "signature": "controlSurfaces.deleteProfile(accountId: RailDeckIdentifier, controlSurfaceId: RailDeckIdentifier, controlSurfaceProfileId: RailDeckIdentifier): Promise<RailDeckControlSurfaceProfileDetail>",
          "description": "Deletes one personal control-surface profile.",
          "returns": "Promise<RailDeckControlSurfaceProfileDetail>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the control surface."
            },
            {
              "name": "controlSurfaceId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Control surface containing the profile."
            },
            {
              "name": "controlSurfaceProfileId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Profile to delete."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/control-surfaces-profiles.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controlSurfaces.deleteProfile with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControlSurfacesDeleteProfile(client: RailDeckDirectIntegrationClient) {\n  return client.controlSurfaces.deleteProfile(\n    \"account 1\",\n    \"control-surface-1\",\n    \"profile-2\"\n  );\n}\n",
          "exampleFunction": "exampleControlSurfacesDeleteProfile",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listProfileQuickList",
          "signature": "controlSurfaces.listProfileQuickList(accountId: RailDeckIdentifier, controlSurfaceId: RailDeckIdentifier, controlSurfaceProfileId: RailDeckIdentifier): Promise<RailDeckControlSurfaceProfileQuickListResponse>",
          "description": "Lists personal favourites for one control-surface profile.",
          "returns": "Promise<RailDeckControlSurfaceProfileQuickListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the control surface."
            },
            {
              "name": "controlSurfaceId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Control surface containing the profile."
            },
            {
              "name": "controlSurfaceProfileId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Profile whose favourites should be loaded."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/control-surfaces-profiles.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controlSurfaces.listProfileQuickList with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControlSurfacesListProfileQuickList(client: RailDeckDirectIntegrationClient) {\n  return client.controlSurfaces.listProfileQuickList(\n    \"account 1\",\n    \"control-surface-1\",\n    \"profile-2\"\n  );\n}\n",
          "exampleFunction": "exampleControlSurfacesListProfileQuickList",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "replaceProfileQuickList",
          "signature": "controlSurfaces.replaceProfileQuickList(accountId: RailDeckIdentifier, controlSurfaceId: RailDeckIdentifier, controlSurfaceProfileId: RailDeckIdentifier, input: ReplaceRailDeckControlSurfaceQuickListInput): Promise<RailDeckControlSurfaceProfileQuickListResponse>",
          "description": "Replaces personal favourites for one control-surface profile.",
          "returns": "Promise<RailDeckControlSurfaceProfileQuickListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the control surface."
            },
            {
              "name": "controlSurfaceId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Control surface containing the profile."
            },
            {
              "name": "controlSurfaceProfileId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Profile whose favourites should be replaced."
            },
            {
              "name": "input",
              "type": "ReplaceRailDeckControlSurfaceQuickListInput",
              "optional": false,
              "description": "Ordered personal quick-list entries."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/control-surfaces-profiles.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controlSurfaces.replaceProfileQuickList with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControlSurfacesReplaceProfileQuickList(client: RailDeckDirectIntegrationClient) {\n  return client.controlSurfaces.replaceProfileQuickList(\n    \"account 1\",\n    \"control-surface-1\",\n    \"profile-2\",\n    {\n      \"items\": [\n        {\n          \"itemKind\": \"accessory\",\n          \"targetId\": \"accessory-1\",\n          \"position\": 1\n        }\n      ]\n    }\n  );\n}\n",
          "exampleFunction": "exampleControlSurfacesReplaceProfileQuickList",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "listAssistiveOutputs",
          "signature": "controlSurfaces.listAssistiveOutputs(accountId: RailDeckIdentifier, controlSurfaceId: RailDeckIdentifier): Promise<RailDeckControlSurfaceAssistiveOutputListResponse>",
          "description": "Lists assistive output profiles for one control surface.",
          "returns": "Promise<RailDeckControlSurfaceAssistiveOutputListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the control surface."
            },
            {
              "name": "controlSurfaceId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Control surface whose assistive outputs should be loaded."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/control-surfaces-profiles.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controlSurfaces.listAssistiveOutputs with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControlSurfacesListAssistiveOutputs(client: RailDeckDirectIntegrationClient) {\n  return client.controlSurfaces.listAssistiveOutputs(\n    \"account 1\",\n    \"control-surface-1\"\n  );\n}\n",
          "exampleFunction": "exampleControlSurfacesListAssistiveOutputs",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "replaceAssistiveOutputs",
          "signature": "controlSurfaces.replaceAssistiveOutputs(accountId: RailDeckIdentifier, controlSurfaceId: RailDeckIdentifier, input: ReplaceRailDeckControlSurfaceAssistiveOutputsInput): Promise<RailDeckControlSurfaceAssistiveOutputListResponse>",
          "description": "Replaces assistive output profiles for one control surface.",
          "returns": "Promise<RailDeckControlSurfaceAssistiveOutputListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the control surface."
            },
            {
              "name": "controlSurfaceId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Control surface whose assistive outputs should be replaced."
            },
            {
              "name": "input",
              "type": "ReplaceRailDeckControlSurfaceAssistiveOutputsInput",
              "optional": false,
              "description": "Assistive output profiles for speech, audio, haptic, visual, or captions."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/control-surfaces-profiles.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls controlSurfaces.replaceAssistiveOutputs with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleControlSurfacesReplaceAssistiveOutputs(client: RailDeckDirectIntegrationClient) {\n  return client.controlSurfaces.replaceAssistiveOutputs(\n    \"account 1\",\n    \"control-surface-1\",\n    {\n      \"outputs\": [\n        {\n          \"outputKind\": \"haptic\",\n          \"displayName\": \"{{fixtureDisplayName}}\",\n          \"eventKinds\": [\n            \"command_result\"\n          ]\n        }\n      ]\n    }\n  );\n}\n",
          "exampleFunction": "exampleControlSurfacesReplaceAssistiveOutputs",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/control-surfaces-setup.ts",
          "sha256": "2821ed93ef4193480737ed89b2c5699b3a927c921bae7b2c8c342d51215b9707"
        },
        {
          "path": "packages/frontend-sdk/src/features/control-surfaces-profiles.ts",
          "sha256": "d3b521c587395b40bf57fcb1c57ce33e0e5e328ab6369f072c4e78ad785307e4"
        }
      ]
    },
    {
      "name": "externalDisplays",
      "slug": "external-displays",
      "title": "External displays",
      "methods": [
        {
          "name": "list",
          "signature": "externalDisplays.list(accountId: RailDeckIdentifier): Promise<RailDeckExternalDisplayListResponse>",
          "description": "Lists external displays owned by an account.",
          "returns": "Promise<RailDeckExternalDisplayListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account whose external displays should be listed."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/external-displays.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls externalDisplays.list with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleExternalDisplaysList(client: RailDeckDirectIntegrationClient) {\n  return client.externalDisplays.list(\n    \"account 1\"\n  );\n}\n",
          "exampleFunction": "exampleExternalDisplaysList",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "get",
          "signature": "externalDisplays.get(accountId: RailDeckIdentifier, externalDisplayId: RailDeckIdentifier): Promise<RailDeckExternalDisplay>",
          "description": "Loads one external display.",
          "returns": "Promise<RailDeckExternalDisplay>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the external display."
            },
            {
              "name": "externalDisplayId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "External display to load."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/external-displays.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls externalDisplays.get with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleExternalDisplaysGet(client: RailDeckDirectIntegrationClient) {\n  return client.externalDisplays.get(\n    \"account 1\",\n    \"display 1\"\n  );\n}\n",
          "exampleFunction": "exampleExternalDisplaysGet",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "getDiagnostics",
          "signature": "externalDisplays.getDiagnostics(accountId: RailDeckIdentifier, externalDisplayId: RailDeckIdentifier): Promise<RailDeckExternalDisplayDiagnostics>",
          "description": "Loads diagnostics for one external display.",
          "returns": "Promise<RailDeckExternalDisplayDiagnostics>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the external display."
            },
            {
              "name": "externalDisplayId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "External display to inspect."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/external-displays.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls externalDisplays.getDiagnostics with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleExternalDisplaysGetDiagnostics(client: RailDeckDirectIntegrationClient) {\n  return client.externalDisplays.getDiagnostics(\n    \"account 1\",\n    \"display 1\"\n  );\n}\n",
          "exampleFunction": "exampleExternalDisplaysGetDiagnostics",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "update",
          "signature": "externalDisplays.update(accountId: RailDeckIdentifier, externalDisplayId: RailDeckIdentifier, input: UpdateRailDeckExternalDisplayInput): Promise<RailDeckExternalDisplay>",
          "description": "Updates one external display.",
          "returns": "Promise<RailDeckExternalDisplay>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the external display."
            },
            {
              "name": "externalDisplayId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "External display to update."
            },
            {
              "name": "input",
              "type": "UpdateRailDeckExternalDisplayInput",
              "optional": false,
              "description": "Partial external display update."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/external-displays.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls externalDisplays.update with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleExternalDisplaysUpdate(client: RailDeckDirectIntegrationClient) {\n  return client.externalDisplays.update(\n    \"account 1\",\n    \"display 1\",\n    {\n      \"firmwareVersion\": \"0.1.1\"\n    }\n  );\n}\n",
          "exampleFunction": "exampleExternalDisplaysUpdate",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "revoke",
          "signature": "externalDisplays.revoke(accountId: RailDeckIdentifier, externalDisplayId: RailDeckIdentifier): Promise<RailDeckExternalDisplay>",
          "description": "Revokes one external display.",
          "returns": "Promise<RailDeckExternalDisplay>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the external display."
            },
            {
              "name": "externalDisplayId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "External display to revoke."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/external-displays.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls externalDisplays.revoke with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleExternalDisplaysRevoke(client: RailDeckDirectIntegrationClient) {\n  return client.externalDisplays.revoke(\n    \"account 1\",\n    \"display 1\"\n  );\n}\n",
          "exampleFunction": "exampleExternalDisplaysRevoke",
          "exampleEvidence": "Retained SDK transport fixture"
        },
        {
          "name": "replaceAssignments",
          "signature": "externalDisplays.replaceAssignments(accountId: RailDeckIdentifier, externalDisplayId: RailDeckIdentifier, input: ReplaceRailDeckExternalDisplayAssignmentsInput): Promise<RailDeckExternalDisplayAssignmentListResponse>",
          "description": "Replaces active assignments for one external display.",
          "returns": "Promise<RailDeckExternalDisplayAssignmentListResponse>",
          "parameters": [
            {
              "name": "accountId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "Account that owns the external display."
            },
            {
              "name": "externalDisplayId",
              "type": "RailDeckIdentifier",
              "optional": false,
              "description": "External display receiving assignments."
            },
            {
              "name": "input",
              "type": "ReplaceRailDeckExternalDisplayAssignmentsInput",
              "optional": false,
              "description": "Replacement assignment details."
            }
          ],
          "sourcePath": "packages/frontend-sdk/src/features/external-displays.ts",
          "example": "import type { RailDeckDirectIntegrationClient } from '@raildeck/frontend-sdk/direct-integration';\n\n/**\n * Calls externalDisplays.replaceAssignments with retained, non-production fixture values.\n * @param client - Configured source client; use an isolated development environment.\n * @returns The SDK result; failures propagate without automatic retry.\n */\nexport async function exampleExternalDisplaysReplaceAssignments(client: RailDeckDirectIntegrationClient) {\n  return client.externalDisplays.replaceAssignments(\n    \"account 1\",\n    \"display 1\",\n    {\n      \"assignments\": [\n        {\n          \"targetType\": \"event_qr_session\",\n          \"targetId\": \"qr 1\",\n          \"layoutId\": \"layout 1\",\n          \"eventId\": \"event 1\",\n          \"shareGroupId\": null,\n          \"presentationContext\": \"exhibition_information\",\n          \"position\": 1\n        }\n      ]\n    }\n  );\n}\n",
          "exampleFunction": "exampleExternalDisplaysReplaceAssignments",
          "exampleEvidence": "Retained SDK transport fixture"
        }
      ],
      "sources": [
        {
          "path": "packages/frontend-sdk/src/client-types.ts",
          "sha256": "ff9441490c3e0e5a54319a66a34142ca040d8c555c87da5a93cde966b5ad0c59"
        },
        {
          "path": "packages/frontend-sdk/src/features/external-displays.ts",
          "sha256": "44db7a675520e68c34fca2279c514bde74f81265e3344b50327df3fceca35f87"
        }
      ]
    }
  ]
}
