xyOps defines three standardized data formats for portability, backup/restore, and inter-process communication.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/pixlcore/xyops/llms.txt
Use this file to discover all available pages before exploring further.
XYPDF - Portable Data Format
The xyOps Portable Data Format (XYPDF) enables export, transfer, and import of individual objects between xyOps installations.- Format: JSON (plain text
.jsonor gzip.json.gz) - Version: 1.1
- Use Case: Sharing plugins, workflows, alerts, and configurations
File Structure
XYPDF files contain a wrapper with metadata and an array of typed items:File format identifier, must be
xypdf.File format version, currently
1.0.Minimum supported xyOps version in semver format (added in XYPDF v1.1).
Human-readable description, typically
xyOps Portable Data.Array of objects to import. Each has
type and data properties.Supported Object Types
XYPDF can export/import the following object types:| Object Type | Type ID | Notes |
|---|---|---|
| Alert | alert | Alert definitions |
| API Key | api_key | API access keys |
| Bucket | bucket | Metadata only (not files) |
| Category | category | Job categories |
| Channel | channel | Notification channels |
| Event | event | Events and workflows |
| Group | group | Server groups |
| Monitor | monitor | Monitor definitions |
| Plugin | plugin | Plugin definitions |
| Role | role | User roles |
| Tag | tag | Tag definitions |
| WebHook | web_hook | Webhook configurations |
Export Example
Import Behavior
When importing XYPDF files:XYBK - Backup Format
The xyOps Backup Format (XYBK) supports bulk export/import of entire databases, lists, and files.- Format: NDJSON (newline-delimited JSON), optionally gzipped
- Version: 1.0
- Use Case: Full system backups, migrations, disaster recovery
File Structure
XYBK files are line-oriented with three types of lines:- Comments: Lines starting with
#(ignored) - Blank lines: Whitespace-only (ignored)
- Records: JSON objects (one per line)
Record Types
Storage Put
Storage Put
Write key/value pairs to storage:
- For binary keys,
valueis Base64-encoded - For JSON keys,
valueis the object itself
Storage Command
Storage Command
Execute storage API methods:Used to prepare state (e.g., delete lists before re-creating).
Database Record
Database Record
Insert records into Unbase indexes:Semantics: create or replace by ID.
Data Selection
Exports can include:Lists
Lists
Standard xyOps configuration lists:
alertsapi_keysbucketscategorieschannelseventsgroupsmonitorspluginsrolessecretstagsusersweb_hooks
users also triggers user account data export.Database Indexes
Database Indexes
Full Unbase indexes with optional query filters:
jobs- Job execution historyalerts- Alert eventstickets- Ticket systemservers- Server registrationsnapshots- System snapshotsactivity- Activity log
jobs?result=error&created:>2024-01-01Extras
Extras
Optional large datasets:
job_files- Job file uploadsjob_logs- Compressed job logsbucket_files- Bucket file payloadsticket_files- Ticket attachmentsmonitor_data- Monitor time-seriesstat_data- Statistics datauser_avatars- User avatar images
Example Export
Security Characteristics
- API Keys: Only salted SHA-256 hashes exported (no plaintext keys)
- Secrets: Encrypted blobs in Base64 (no plaintext)
- Passwords: Salted bcrypt hashes only
Import Process
Record execution
key/value→storage.put(key, value)cmd/args→ Execute storage methodindex/id/record→unbase.insert(index, id, record)
XYWP - Wire Protocol
The xyOps Wire Protocol (XYWP) defines communication between xyOps and plugins via STDIO pipes.- Format: NDJSON over STDIN/STDOUT
- Version: 1.0
- Use Case: Plugin execution, inter-process communication
Protocol Properties
All XYWP messages include:Wire protocol version, always
1.Request Messages
xyOps sends requests to plugins:Message type indicating intent (e.g.,
event for job execution).Response Messages
Plugins send responses back to xyOps:Progress Update
Progress Update
Intermediate updates without Plugin continues running after progress updates.
code property:Success Response
Success Response
Final response with Plugin exits after final response.
code: 0 indicates success:Error Response
Error Response
Non-zero Plugin exits after error response.
code indicates error:Passthrough JSON
JSON without thexy property (or with xy != 1) is treated as plain text and logged: