Skip to main content

@dougschaefer/appspace

v2026.04.27.1

Appspace Cloud v3 API administration toolkit — devices, reservations, users, visitors, and the custom card development lifecycle (scaffold, pull existing, validate, package, register instances). Walk-in workflows fire DropIn invitations through Appspace's native notification routing (Teams Passport, in-app push, Concierge) with no external webhook required.

Repository

https://github.com/dougschaefer6/swamp-appspace

Labels

appspaceavdigital-signageroom-reservationmeeting-roomsvisitor-managementcard-development

Contents

Quality score

How well-documented and verifiable this extension is.

100%

Grade A

  • Has README or module doc2/2earned
  • README has a code example1/1earned
  • README is substantive1/1earned
  • Most symbols documented1/1earned
  • No slow types1/1earned
  • Has description1/1earned
  • At least one platform tag (or universal)1/1earned
  • Two or more platform tags (or universal)1/1earned
  • License declared1/1earned
  • Verified public repository2/2earned

Install

$ swamp extension pull @dougschaefer/appspace

@dougschaefer/appspace-cardv1.0.0appspace/card.ts
scaffoldCreate a new Appspace card project at the given path with manifest.json, schema.json, model.json, index.html, and a placeholder thumbnail. Defaults to a plain HTML/JS template (zero build step) — extend with React/Angular as needed.
ArgumentTypeDescription
pathstringDestination directory (created if missing). Should be empty.
idstringReverse-DNS card identifier (e.g., 'com.example.lobby.welcome')
namestringHuman-readable card name
developerstringDeveloper/author name for the manifest (your company or org)
validateValidate a card project's Big Three (manifest.json, schema.json, model.json) for required fields and consistency. Returns warnings without modifying files.
ArgumentTypeDescription
pathstringPath to card project directory
buildRun a build command in the card project directory (e.g., 'npm run build'). Skip for plain-HTML cards that need no build.
ArgumentTypeDescription
pathstringPath to card project directory
commandstringBuild executable
argsarrayBuild command arguments
packagePackage a card project into a .zip ready for upload to Appspace. Handles the 'zip contents not folder' gotcha by archiving entries with paths relative to the source dir. Run validate first.
ArgumentTypeDescription
sourceDirstringDirectory whose contents to package (typically build/ or the project root for plain cards)
outputZipstringPath where the .zip should be written (e.g., 'dist/my-card.zip')
excludeGlobsarrayTop-level entries to skip (matched against the entry name, not full path)
listTemplateTypesList all card template types installed on the Appspace tenant. Use the returned 'id' as cardTemplateTypeId when creating new template instances.
listTemplatesList configured card template instances in the Appspace library.
ArgumentTypeDescription
maxItems?number
getTemplateGet a single card template by ID.
ArgumentTypeDescription
idstringCard template ID
createTemplateCreate a new configured card template instance from a registered template type. The 'model' and 'schema' fields override the template type's defaults for this instance.
ArgumentTypeDescription
cardTemplateTypeIdstringID of the template type to instantiate (from listTemplateTypes)
namestringDisplay name for the instance
model?recordPer-instance model.json overrides
schema?recordPer-instance schema.json overrides
permissions?array
theme?record
pullCardDownload a card's source files from its templateUrl on the Appspace tenant. Fetches manifest/schema/model/index.html plus every script and stylesheet referenced from index.html (preserving the relative directory structure). Use this to stage an existing card for customization.
ArgumentTypeDescription
templateIdstringCard template instance ID (UUID). Find via listTemplates.
destDirstringDestination directory. Created if missing; existing files are overwritten.
includeAssetsbooleanWhen true (default), follow JS/CSS references from index.html and download those too. When false, only fetches root files (manifest, schema, model, index.html, thumbnail.svg).
updateTemplateUpdate a configured card template instance (name, model overrides, schema overrides, theme).
ArgumentTypeDescription
idstringCard template instance ID
name?string
model?record
schema?record
theme?record

Resources

cardTemplateType(infinite)— Registered card template type — the developer-uploaded card 'class' that instances are created from
cardTemplate(infinite)— Configured card template instance — references a cardTemplateType and stores the per-instance schema/model overrides
cardProject(infinite)— Local card project on disk — directory containing manifest.json, schema.json, model.json, and the card's web app
cardPackage(infinite)— Built and zipped card ready to upload to Appspace
cardPull(infinite)— Source files pulled from a card's templateUrl on the Appspace tenant — manifest, schema, model, index.html, and all referenced JS/CSS/asset bundles
@dougschaefer/appspace-devicev2026.04.27.1appspace/device.ts
listQuery devices with optional filtering. Pages through results automatically.
ArgumentTypeDescription
locationId?stringFilter by location ID
groupId?stringFilter by device group ID
status?stringFilter by status (Online, Offline, etc.)
maxItems?numberMaximum devices to return
getGet details for a specific device by ID.
ArgumentTypeDescription
idstringDevice ID (UUID)
getStatusesQuery live status for devices (online/offline, sync state, etc.).
ArgumentTypeDescription
deviceIds?arrayOptional list of device IDs to filter on
getPropertiesGet all Player Properties for a device. These are key/value pairs used to override card configuration per device (e.g., API credentials, datasourceurl).
ArgumentTypeDescription
deviceIdstringDevice ID
setPropertiesUpsert one or more Player Properties on a device. Property names must be lowercase and case-sensitive.
ArgumentTypeDescription
deviceIdstringDevice ID
propertiesrecordMap of property name (lowercase) → value
deletePropertiesRemove specific Player Properties from a device.
ArgumentTypeDescription
deviceIdstringDevice ID
propertyNamesarrayProperty names to delete
sendCommandSend a command to a device (restart, reload, screenshot, etc.). Available commands depend on device type.
ArgumentTypeDescription
deviceIdstringDevice ID
commandstringCommand name (e.g., 'restart', 'reload', 'screenshot')
parameters?recordOptional command parameters
getConfigurationGet the runtime configuration for a device.
ArgumentTypeDescription
deviceIdstringDevice ID
screenCaptureGet the latest screen capture URL for a device (only available for devices with screencapture capability).
ArgumentTypeDescription
deviceIdstringDevice ID
listGroupsList all device groups.
syncTrigger a content sync on one or more devices (push channel/playlist updates).
ArgumentTypeDescription
deviceIdsarrayDevice IDs to sync
listIntegrationsList third-party device integrations configured for the account (e.g., Crestron Fusion, Cisco Webex).
listTaskDeploymentsQuery task deployments (firmware updates, configuration pushes, etc.) by location, device, or group.
ArgumentTypeDescription
locationId?string
deviceId?string
deviceGroupId?string
createTaskDeploymentDeploy a task (firmware update, configuration, command) to one or more targets.
ArgumentTypeDescription
taskTemplateIdstringTask template ID to deploy
targetTypeenumWhat to target
targetIdsarrayIDs of targets
scheduledAt?stringISO 8601 datetime to schedule the deployment (defaults to immediate)
getTaskResponsesGet task execution responses for a device (results of firmware updates, command executions, etc.).
ArgumentTypeDescription
deviceIdstringDevice ID
taskClass?stringOptional task class filter

Resources

device(infinite)— Appspace-managed display device with location, group, channel, and runtime status
deviceGroup(infinite)— Group of Appspace devices for batch operations
deviceProperties(infinite)— Player Properties for a specific device (used for per-device card overrides like API credentials)
taskDeployment(infinite)— Task deployed to a device, group, or location (firmware update, command, etc.)
@dougschaefer/appspace-reservationv2026.04.27.1appspace/reservation.ts
listEventsList reservation events with optional date and resource filtering. Pages automatically.
ArgumentTypeDescription
startAt?stringISO 8601 — return events at or after this time
endAt?stringISO 8601 — return events at or before this time
resourceId?stringFilter by resource ID (room, desk, etc.)
maxItems?number
getEventGet details for a specific event.
ArgumentTypeDescription
eventIdstring
cancelEventCancel an event.
ArgumentTypeDescription
eventIdstring
reason?string
endEventEnd an event early (releases the resource for the remaining duration).
ArgumentTypeDescription
eventIdstring
extendEventExtend an event's end time.
ArgumentTypeDescription
eventIdstring
endAtstringNew end time (ISO 8601)
releaseEventRelease resources from an event without cancelling it.
ArgumentTypeDescription
eventIdstring
checkinEventCheck in to an event (confirm occupancy).
ArgumentTypeDescription
eventIdstring
listReservationsQuery reservations with optional filtering. Pages automatically.
ArgumentTypeDescription
startAt?string
endAt?string
resourceId?string
organizer?stringFilter by organizer email
maxItems?number
getReservationGet details for a specific reservation.
ArgumentTypeDescription
reservationIdstring
createReservationCreate a new reservation.
ArgumentTypeDescription
titlestringReservation title
startAtstringStart time (ISO 8601)
endAtstringEnd time (ISO 8601)
resourceIdsarrayReservable resource IDs (rooms, desks, etc.)
organizerEmail?stringOrganizer email (defaults to token user)
attendees?arrayAttendee emails
notes?string
isAllDay?boolean
updateReservationUpdate one or more properties of an existing reservation.
ArgumentTypeDescription
reservationIdstring
title?string
startAt?string
endAt?string
notes?string
deleteReservationDelete a reservation.
ArgumentTypeDescription
reservationIdstring
listReservableResourcesList resources (rooms, desks, equipment) that can be reserved.
ArgumentTypeDescription
resourceType?stringFilter by type (e.g., 'Room', 'Desk')
buildingId?string
maxItems?number
getMyEventsGet events related to the current user (the Service Account behind the token).
ArgumentTypeDescription
startAt?string
endAt?string
checkUserAvailabilityCheck whether one or more users are available during a given time window.
ArgumentTypeDescription
attendeesarrayList of attendee emails
startAtstringStart time (ISO 8601)
endAtstringEnd time (ISO 8601)
getScheduleGet a schedule view across resources for a given time window.
ArgumentTypeDescription
resourceIdsarrayResources to include
startAtstring
endAtstring

Resources

event(infinite)— Reservation event — a scheduled instance bound to one or more resources, possibly synced from an external calendar provider
reservation(infinite)— Reservation record — the booking abstraction that owns one or more events and tracks attendees, checkpoints, and resources
reservableResource(infinite)— Resource (room, desk, equipment) that can be reserved
@dougschaefer/appspace-userv2026.04.27.1appspace/user.ts
listQuery users with pagination. Returns the full user directory by default; pass maxItems to cap.
ArgumentTypeDescription
maxItems?numberMaximum users to return
userType?stringFilter by user type (e.g. 'User', 'Visitor')
getGet a specific user by ID.
ArgumentTypeDescription
idstringUser UUID
findByEmailFind users by email — workaround for the missing email-filter on /users. Pages through the directory and matches case-insensitively. Returns the matched user(s) as data; logs a warning if directory exceeds maxScan.
ArgumentTypeDescription
emailstringEmail to find (case-insensitive). Substring match by default.
exactbooleanWhen true, match exact email; when false, substring match.
maxScan?numberMaximum directory entries to scan before giving up
meGet the current user (the Service Account behind the API token). Useful for confirming token identity and inspecting account context.
listGroupsList all user groups in the account.
ArgumentTypeDescription
maxItems?number
getGroupMembersList members of a specific user group.
ArgumentTypeDescription
groupIdstringUser group UUID
maxItems?number

Resources

user(infinite)— Appspace user — directory record with email, location, roles, group memberships
userGroup(infinite)— Appspace user group with role assignments and network
me(1d)— Current user (the Service Account behind the API token); useful to confirm token identity
@dougschaefer/appspace-visitorv2026.04.27.1appspace/visitor.ts
listQuery the visitor list with optional filtering.
ArgumentTypeDescription
maxItems?number
getGet a specific visitor by ID.
ArgumentTypeDescription
idstringVisitor UUID
createCreate a visitor record. Required: firstName, lastName, email, visitorType. customFields must be empty array unless the account has custom visitor fields configured. Note: bare visitor creation does NOT trigger the host-notification chain — pair with createDropInInvitation for walk-in workflows.
ArgumentTypeDescription
firstNamestring
lastNamestring
emailstring
visitorTypestringVisitor type label — free-form string. Defaults to 'Guest'.
customFieldsarrayCustom field values. Field IDs must be pre-configured in /visitormanagement/configurations/me/visitorfields.
deleteDelete a visitor by ID.
ArgumentTypeDescription
idstringVisitor UUID
getConfigurationGet the account's Visitor Management configuration — required fields, custom field definitions, visit purposes, visitor types, retention, and the notification config block that controls Teams Passport / Appspace app push / email routing.
createDropInInvitationCreate a walk-in visitor + DropIn invitation in a single call. Mirrors the kiosk's `visitorsKioskCreateDropin` flow: creates the visitor record, then POSTs an invitation tied to the host. Appspace's configured Notifications fan out from there.
ArgumentTypeDescription
firstNamestring
lastNamestring
emailstring
company?string
notes?string
hostUserIdstringAppspace user UUID who hosts the drop-in (receives notification)
hostEmailstringSame user's email
resourceId?stringOptional reservation resource UUID (routes to that resource's Concierges)
durationMinutesnumberLength of the drop-in invitation in minutes
visitorTypestring
purposestring
timezonestringIANA timezone for the invitation (e.g. 'America/New_York'). Default 'UTC'.
listEventsQuery visitor events (the runtime instances of invitations — when visitors are actually checking in/out).
ArgumentTypeDescription
startAt?string
endAt?string
maxItems?number
checkinCheck a visitor in to an event.
ArgumentTypeDescription
eventIdstring
visitorIdstring
checkoutCheck a visitor out of an event.
ArgumentTypeDescription
eventIdstring
visitorIdstring

Resources

visitor(infinite)— Visitor record in the Appspace Visitor Management system
visitorConfiguration(1d)— Visitor Management configuration for the account — required fields, custom field definitions, visit purposes, types, retention, and notification settings (the rules that drive Teams Passport / push / email routing)
invitation(infinite)— Visitor invitation — links visitors to hosts/resources and triggers Appspace's notification chain (Teams Passport bot, in-app push, Concierge, email)