Files
terraform-provider-virtfusion/endpoint-manifest.json
Andrew 6b7430b67b Overhaul VirtFusion provider: 20 resources, 30 data sources, multipage pagination
Complete rewrite of the VirtFusion Terraform provider with full API coverage:

- 20 managed resources (server, build, SSH key, user, firewall, IP blocks, etc.)
- 30 data sources (hypervisors, packages, servers, IP blocks, self-service, etc.)
- New HTTP client with proper error handling, query parameter support, and
  automatic multipage pagination via GetAllPages (fetches all pages from
  Laravel-style paginated endpoints and merges into a single response)
- Fixed type mismatches against live API: ServerData.Suspended (int→bool),
  IPBlockData.Type (string→int), PackageData json tags (primaryStorage, etc.),
  ServerData nested CPU/Settings/Resources structure, HypervisorGroupResources
  array response
- Configurable results-per-page (default 300) on all list data sources
- Migrated CI from GitHub Actions to Gitea Actions
- Updated goreleaser config, go.mod dependencies, and examples

Verified against live VirtFusion instance at cp.vps.ezscale.tech:
all data sources return correct data with full pagination support.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 02:01:16 -04:00

507 lines
13 KiB
JSON

[
{
"method": "GET",
"path": "/backups/server/{serverId}",
"summary": "Retrieve a server backups",
"tag": "Backups"
},
{
"method": "GET",
"path": "/compute/hypervisors",
"summary": "Retrieve hypervisors",
"tag": "Hypervisors"
},
{
"method": "GET",
"path": "/compute/hypervisors/{hypervisorId}",
"summary": "Retrive a Hypervisor",
"tag": "Hypervisors"
},
{
"method": "GET",
"path": "/compute/hypervisors/groups",
"summary": "Retrieve hypervisor groups",
"tag": "Hypervisor Groups"
},
{
"method": "GET",
"path": "/compute/hypervisors/groups/{hypervisorGroupId}",
"summary": "Retrieve a hypervisor group",
"tag": "Hypervisor Groups"
},
{
"method": "GET",
"path": "/compute/hypervisors/groups/{hypervisorGroupId}/resources",
"summary": "Retrieve a hypervisor groups resources",
"tag": "Hypervisor Groups"
},
{
"method": "GET",
"path": "/connect",
"summary": "Test connection",
"tag": "General"
},
{
"method": "GET",
"path": "/connectivity/ipblocks",
"summary": "Retrieve IP blocks",
"tag": "IP Blocks"
},
{
"method": "GET",
"path": "/connectivity/ipblocks/{blockId}",
"summary": "Retrieve an IP block",
"tag": "IP Blocks"
},
{
"method": "POST",
"path": "/connectivity/ipblocks/{blockId}/ipv4",
"summary": "Add an IPv4 range to an IP block",
"tag": "IP Blocks"
},
{
"method": "GET",
"path": "/dns/services/{serviceId}",
"summary": "Retrieve a DNS service",
"tag": "DNS"
},
{
"method": "GET",
"path": "/media/iso/{isoId}",
"summary": "Retrieve an ISO",
"tag": "Media"
},
{
"method": "GET",
"path": "/media/templates/fromServerPackageSpec/{serverPackageId}",
"summary": "Retrieve operating system templates that are available for a package",
"tag": "Media"
},
{
"method": "GET",
"path": "/packages",
"summary": "Retrieve packages",
"tag": "Packages"
},
{
"method": "GET",
"path": "/packages/{packageId}",
"summary": "Retrieve a packge",
"tag": "Packages"
},
{
"method": "GET",
"path": "/queue/{queueId}",
"summary": "Retrieve a queue item",
"tag": "Queue & Tasks"
},
{
"method": "PUT",
"path": "/selfService/access/byUserExtRelationId/{extRelationId}",
"summary": "Modify user access",
"tag": "Self Service/External Relational ID"
},
{
"method": "DELETE",
"path": "/selfService/credit/{creditId}",
"summary": "Cancel credit that was applied to a user",
"tag": "Self Service"
},
{
"method": "POST",
"path": "/selfService/credit/byUserExtRelationId/{extRelationId}",
"summary": "Add credit to user",
"tag": "Self Service/External Relational ID"
},
{
"method": "GET",
"path": "/selfService/currencies",
"summary": "Retrieve currencies",
"tag": "Self Service"
},
{
"method": "DELETE",
"path": "/selfService/hourlyGroupProfile/{profileId}/byUserExtRelationId/{extRelationId}",
"summary": "Remove hourly group profile from a user",
"tag": "Self Service/External Relational ID"
},
{
"method": "POST",
"path": "/selfService/hourlyGroupProfile/byUserExtRelationId/{extRelationId}",
"summary": "Add an hourly group profile to a user",
"tag": "Self Service/External Relational ID"
},
{
"method": "PUT",
"path": "/selfService/hourlyResourcePack/byUserExtRelationId/{extRelationId}",
"summary": "Set an hourly resource pack",
"tag": "Self Service/External Relational ID"
},
{
"method": "GET",
"path": "/selfService/hourlyStats/byUserExtRelationId/{extRelationId}",
"summary": "Retrieve hourly statistics",
"tag": "Self Service/External Relational ID"
},
{
"method": "GET",
"path": "/selfService/report/byUserExtRelationId/{extRelationId}",
"summary": "Generate a report",
"tag": "Self Service/External Relational ID"
},
{
"method": "DELETE",
"path": "/selfService/resourceGroupProfile/{profileId}/byUserExtRelationId/{extRelationId}",
"summary": "Remove resource group from a user",
"tag": "Self Service/External Relational ID"
},
{
"method": "POST",
"path": "/selfService/resourceGroupProfile/byUserExtRelationId/{extRelationId}",
"summary": "Add a resource group profile to a user",
"tag": "Self Service/External Relational ID"
},
{
"method": "DELETE",
"path": "/selfService/resourcePack/{packId}",
"summary": "Delete a user resource pack",
"tag": "Self Service"
},
{
"method": "GET",
"path": "/selfService/resourcePack/{packId}",
"summary": "Retrieve a user resource pack",
"tag": "Self Service"
},
{
"method": "PUT",
"path": "/selfService/resourcePack/{packId}",
"summary": "Modify user resource pack",
"tag": "Self Service"
},
{
"method": "POST",
"path": "/selfService/resourcePack/byUserExtRelationId/{extRelationId}",
"summary": "Add a resource pack to a user",
"tag": "Self Service/External Relational ID"
},
{
"method": "DELETE",
"path": "/selfService/resourcePackServers/{packId}",
"summary": "Delete all servers attached to a pack ID",
"tag": "Self Service"
},
{
"method": "POST",
"path": "/selfService/resourcePackServers/{packId}/suspend",
"summary": "Suspend all servers assigned to a reosurce pack",
"tag": "Self Service"
},
{
"method": "POST",
"path": "/selfService/resourcePackServers/{packId}/unsuspend",
"summary": "Unsuspend all servers assigned to a reosurce pack",
"tag": "Self Service"
},
{
"method": "GET",
"path": "/selfService/usage/byUserExtRelationId/{extRelationId}",
"summary": "Retrieve a users usage",
"tag": "Self Service/External Relational ID"
},
{
"method": "GET",
"path": "/servers",
"summary": "Retrieve servers",
"tag": "Servers"
},
{
"method": "POST",
"path": "/servers",
"summary": "Create a server",
"tag": "Servers"
},
{
"method": "DELETE",
"path": "/servers/{serverId}",
"summary": "Delete a server",
"tag": "Servers"
},
{
"method": "GET",
"path": "/servers/{serverId}",
"summary": "Retrieve a server",
"tag": "Servers"
},
{
"method": "PUT",
"path": "/servers/{serverId}/backups/plan/{planId}",
"summary": "Add, remove or modify a backup plan",
"tag": "Servers"
},
{
"method": "POST",
"path": "/servers/{serverId}/build",
"summary": "Build a server",
"tag": "Servers"
},
{
"method": "POST",
"path": "/servers/{serverId}/customXML",
"summary": "Set custom XML",
"tag": "Servers"
},
{
"method": "GET",
"path": "/servers/{serverId}/firewall/{interface}",
"summary": "Retrieve firewall",
"tag": "Servers/Network/Firewall"
},
{
"method": "POST",
"path": "/servers/{serverId}/firewall/{interface}/disable",
"summary": "Disable firewall",
"tag": "Servers/Network/Firewall"
},
{
"method": "POST",
"path": "/servers/{serverId}/firewall/{interface}/enable",
"summary": "Enable firewall",
"tag": "Servers/Network/Firewall"
},
{
"method": "POST",
"path": "/servers/{serverId}/firewall/{interface}/rules",
"summary": "Apply firewall rulesets",
"tag": "Servers/Network/Firewall"
},
{
"method": "DELETE",
"path": "/servers/{serverId}/ipv4",
"summary": "Remove an array of IPv4 addresses",
"tag": "Servers/Network"
},
{
"method": "POST",
"path": "/servers/{serverId}/ipv4",
"summary": "Add an array of IPv4 addresses",
"tag": "Servers/Network"
},
{
"method": "POST",
"path": "/servers/{serverId}/ipv4Qty",
"summary": "Add a quantity of IPv4 addresses",
"tag": "Servers/Network"
},
{
"method": "PUT",
"path": "/servers/{serverId}/modify/cpuCores",
"summary": "Modify CPU cores",
"tag": "Servers"
},
{
"method": "PUT",
"path": "/servers/{serverId}/modify/cpuThrottle",
"summary": "Throttle a servers CPU",
"tag": "Servers"
},
{
"method": "PUT",
"path": "/servers/{serverId}/modify/memory",
"summary": "Modify memory",
"tag": "Servers"
},
{
"method": "PUT",
"path": "/servers/{serverId}/modify/name",
"summary": "Modify name",
"tag": "Servers"
},
{
"method": "PUT",
"path": "/servers/{serverId}/modify/traffic",
"summary": "Modify primary traffic allowance",
"tag": "Servers/Network/Traffic"
},
{
"method": "DELETE",
"path": "/servers/{serverId}/networkWhitelist",
"summary": "Remove an address from the whitelist",
"tag": "Servers/Network"
},
{
"method": "POST",
"path": "/servers/{serverId}/networkWhitelist",
"summary": "Add an address to the whitelist",
"tag": "Servers/Network"
},
{
"method": "PUT",
"path": "/servers/{serverId}/owner/{newOwnerId}",
"summary": "Change owner",
"tag": "Servers"
},
{
"method": "PUT",
"path": "/servers/{serverId}/package/{packageId}",
"summary": "Change a server package",
"tag": "Servers"
},
{
"method": "POST",
"path": "/servers/{serverId}/power/boot",
"summary": "Boot a server",
"tag": "Servers/Power"
},
{
"method": "POST",
"path": "/servers/{serverId}/power/poweroff",
"summary": "Poweroff a server",
"tag": "Servers/Power"
},
{
"method": "POST",
"path": "/servers/{serverId}/power/restart",
"summary": "Restart a server",
"tag": "Servers/Power"
},
{
"method": "POST",
"path": "/servers/{serverId}/power/shutdown",
"summary": "Shutdown a server",
"tag": "Servers/Power"
},
{
"method": "POST",
"path": "/servers/{serverId}/resetPassword",
"summary": "Reset a server password",
"tag": "Servers"
},
{
"method": "POST",
"path": "/servers/{serverId}/suspend",
"summary": "Suspend a server",
"tag": "Servers"
},
{
"method": "GET",
"path": "/servers/{serverId}/templates",
"summary": "Retrieve OS templates available to a server",
"tag": "Servers"
},
{
"method": "GET",
"path": "/servers/{serverId}/traffic",
"summary": "Retrieve a servers traffic statistics",
"tag": "Servers"
},
{
"method": "GET",
"path": "/servers/{serverId}/traffic/blocks",
"summary": "Retrieve a servers traffic blocks",
"tag": "Servers/Network/Traffic"
},
{
"method": "POST",
"path": "/servers/{serverId}/traffic/blocks",
"summary": "Add a traffic block to a server",
"tag": "Servers/Network/Traffic"
},
{
"method": "DELETE",
"path": "/servers/{serverId}/traffic/blocks/{blockId}",
"summary": "Remove a traffic block from a server",
"tag": "Servers/Network/Traffic"
},
{
"method": "POST",
"path": "/servers/{serverId}/unsuspend",
"summary": "Unsuspend a server",
"tag": "Servers"
},
{
"method": "GET",
"path": "/servers/{serverId}/vnc",
"summary": "Retrive VNC details",
"tag": "Servers"
},
{
"method": "POST",
"path": "/servers/{serverId}/vnc",
"summary": "Enable or disable VNC",
"tag": "Servers"
},
{
"method": "GET",
"path": "/servers/user/{userId}",
"summary": "Retrieve a users servers",
"tag": "Servers"
},
{
"method": "POST",
"path": "/ssh_keys",
"summary": "Add an SSH key to a user account",
"tag": "SSH Keys"
},
{
"method": "DELETE",
"path": "/ssh_keys/{keyId}",
"summary": "Delete an SSH key from a user",
"tag": "SSH Keys"
},
{
"method": "GET",
"path": "/ssh_keys/{keyId}",
"summary": "Retrieve an SSH key",
"tag": "SSH Keys"
},
{
"method": "GET",
"path": "/ssh_keys/user/{userId}",
"summary": "Retrieve a users SSH keys",
"tag": "SSH Keys"
},
{
"method": "POST",
"path": "/users",
"summary": "Create a user",
"tag": "Users"
},
{
"method": "POST",
"path": "/users/{extRelationId}/authenticationTokens",
"summary": "Generate a set of login tokens",
"tag": "Users/External Rel ID & Rel Str"
},
{
"method": "DELETE",
"path": "/users/{extRelationId}/byExtRelation",
"summary": "Delete a user",
"tag": "Users/External Rel ID & Rel Str"
},
{
"method": "GET",
"path": "/users/{extRelationId}/byExtRelation",
"summary": "Retrieve a user",
"tag": "Users/External Rel ID & Rel Str"
},
{
"method": "PUT",
"path": "/users/{extRelationId}/byExtRelation",
"summary": "Modify a user",
"tag": "Users/External Rel ID & Rel Str"
},
{
"method": "POST",
"path": "/users/{extRelationId}/byExtRelation/resetPassword",
"summary": "Change a user passowrd",
"tag": "Users/External Rel ID & Rel Str"
},
{
"method": "POST",
"path": "/users/{extRelationId}/serverAuthenticationTokens/{serverId}",
"summary": "Generate a set of loging tokens using a server ID",
"tag": "Users/External Rel ID & Rel Str"
}
]