Using xeoServices: A Practical Example
This guide demonstrates how to use xeoServices in a Node.js project, using the xeoservices-example repository as a reference. The project provides a simple CLI built with yargs to interact with xeoServices APIs for 3D model conversion and storage.
Prerequisites
- Node.js and pnpm installed
- Access to xeoServices and a valid
XEO_SERVICES_ACCESS_TOKEN
(Contact Us)
Getting Started
-
Install dependencies:
pnpm install
-
Configure environment: Copy the example environment file and set your access token:
cp .env.example .env
# Edit .env to add your XEO_SERVICES_ACCESS_TOKEN -
Explore CLI options:
pnpm start --help
Available Commands
The CLI exposes several commands to interact with xeoServices:
1. Check Service Health
Check the status of xeoServices:
pnpm start health
This command calls the health endpoint and logs the status of the services at ./logs/health.log
.
2. Convert IFC to XKT
Register a conversion process for an IFC file:
pnpm start convert-ifc-xkt --input ./assets/Duplex.ifc
This will upload the IFC file and start a conversion process. The CLI will return a process_id
and store log at ./logs/Duplex.ifc-convert-request.log.json
3. Check Process Status
Check the status of a conversion process:
pnpm start check-process --process <process_id>
Replace <process_id>
with the ID returned from the previous step. This command will fetch the current status which will be saved as log at ./logs <process_di>-process-status.log.json
Project Structure
src/commands/
— Contains CLI command implementations (health check, conversion, process status)src/client.ts
— Handles API requests to xeoServicessrc/types/
— TypeScript types for API schemasassets/
— Example IFC file for testing
Example Workflow
- Check service health:
pnpm start health
- Start a conversion:
pnpm start convert-ifc-xkt --input ./assets/Duplex.ifc
- Check the process status using the returned process ID:
pnpm start check-process --process <process_id>
Understanding the Process Status Log
After running a conversion, the CLI generates saves process status response as log file (e.g., logs/<process_id>-process-status.log.json
) that details the process and its outputs. Here’s what you’ll find in such a log:
- timestamp: When the log was created.
- processResponse: Main object containing process details:
- id: Unique process identifier.
- processOutputs: Array of output files generated by the process. Each entry includes:
fileName
: Name of the output file (e.g.,output.xkt
,output.metadata.json
, logs, database files).fileType
: Type of file (e.g.,xkt
,json
,log
,db
).fileSize
: Size in bytes.url
: Direct download link to the file.createdAt
/updatedAt
: Timestamps for file creation and update.
- status: Current status of the process (e.g.,
process_completed
). - type: Type of conversion (e.g.,
ifc-xkt
). - viewerUrl: A ready-to-use link to view the converted model in the xeoServices web viewer.
- createdAt/updatedAt: Timestamps for the process itself.
Example Output Files
output.xkt
: The main converted 3D model file.output.metadata.json
: Metadata about the conversion.metadata.db
: Database file with additional data.glb-xkt.log
,ifc-glb.log
,metadata-db.log
: Log files for each conversion step.
Example Viewer Link
You can instantly preview the result in your browser using the viewerUrl
from the log:
https://xeo.vision/app/load?url=...&type=xkt
This makes it easy to validate and share conversion results.
By understanding the log structure, you can automate post-processing, download results, or integrate with other tools.
Conclusion
The xeoservices-example project provides a ready-to-use CLI for interacting with xeoServices, making it easy to automate 3D model conversions and monitor their status. For more details, see the xeoServices documentation.