ApiFreeMaNDownload Desktop

11 - IPC Reference

This document lists the preload-exposed desktop API surface used by the renderer.

Bridge Entry Point

Preload exposes a single object on window:

  • desktopApi

All methods return promises.

Method Catalog

MethodPayloadReturnsPurpose
sendRequestRequestPayloadSendRequestResultExecute HTTP request in main process
getLibrarySnapshotnoneOperationResult<LibrarySnapshot>Read configured library tree
chooseLibraryRootnoneOperationResult<LibrarySnapshot>Open folder picker and set root
loadRequestrelativePath: stringOperationResult<LoadedRequestRecord>Load request YAML + body text
saveRequestSaveRequestInputOperationResult<SaveRequestResult>Save or duplicate request
createFolderparentFolderPath: string, name: stringOperationResult<LibraryMutationResult>Create new folder
renameEntryrelativePath: string, newName: stringOperationResult<LibraryMutationResult>Rename folder or request
deleteEntryrelativePath: stringOperationResult<LibraryMutationResult>Delete folder or request
pickOpenApiFilenonestring | nullOpen file picker for import source
previewOpenApiImportOpenApiImportInputOperationResult<OpenApiImportPreview>Build import preview only
importOpenApiOpenApiImportInput + modeOperationResult<OpenApiImportResult>Apply import mutation

Shared Result Wrappers

Most methods use:

  • OperationResult<T>
    • ok: true with data
    • ok: false with error

Request send uses dedicated result:

  • SendRequestResult
    • success: response payload
    • failure: error + duration

Error Shape

ResponseError contains:

  • message (always)
  • details (optional)

Request Execution Payload

RequestPayload fields:

  • method
  • url
  • contextFolderPath
  • headers
  • body
  • optional script fields

Response Execution Payload

ResponsePayload fields:

  • status, statusText
  • headers
  • body
  • durationMs
  • url
  • optional script test fields

Notes for Contributors

  1. Keep all cross-process contracts in src/lib/contracts.ts.
  2. Add handler in main process and preload bridge method together.
  3. Prefer OperationResult<T> for non-request commands.
  4. Return actionable error messages for UI feedback.