Initial BinaryLane v2 API client

This commit is contained in:
2026-08-16 21:52:42 +10:00
commit fcd0d22b0d
91 changed files with 18691 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
# BinaryLane API contract
`binarylane-v2.openapi.yaml` is an unmodified snapshot of BinaryLane's published
OpenAPI document. Its provenance and digest are recorded in `contract.json`.
The provider currently describes the API as a developer preview, so an upstream
version number alone must not be used as a compatibility guarantee. The contract
monitor compares the document digest as well as its declared version.
## Normalization rule
The document has 52 routable paths and 42 additional paths such as
`/v2/servers/{server_id}/actions#PowerOn`. The latter are documentation aliases
for payload variants of `POST /v2/servers/{server_id}/actions`; URI fragments do
not reach an HTTP server. They must be removed before an OpenAPI generator is
asked to create a route surface. `normalization.json` records the exact rule and
each affected path.
Public SDK DTOs deliberately model all provider enum values as strings. This is
forward-compatible with a preview API that may add a value before a new SDK
release is available.
File diff suppressed because it is too large Load Diff
+6
View File
@@ -0,0 +1,6 @@
{
"source": "https://api.binarylane.com.au/reference/openapi.yaml",
"upstreamVersion": "0.39.1",
"sha256": "947b62c1649f68e8b0688d113f4fa3b5037b7c514b7e9cd33613e40574f854b1",
"retrievedUtc": "2026-08-16T09:22:01Z"
}
+64
View File
@@ -0,0 +1,64 @@
{
"input": "binarylane-v2.openapi.yaml",
"normalizationRules": [
{
"kind": "exclude-paths-containing",
"value": "#",
"reason": "The upstream document uses fragment-bearing paths to document variants of the one real server actions endpoint. A URI fragment is never sent in an HTTP request."
},
{
"kind": "preserve-discriminator",
"schema": "ServerAction",
"property": "type",
"reason": "The action body is a discriminated union. Do not flatten or silently discard the discriminator mapping when generating test fixtures or internal wire code."
},
{
"kind": "open-enum",
"reason": "Provider enum values are represented as strings in public DTOs so new upstream values remain readable by existing SDK versions."
}
],
"excludedPaths": [
"/v2/servers/{server_id}/actions#AddDisk",
"/v2/servers/{server_id}/actions#AttachBackup",
"/v2/servers/{server_id}/actions#ChangeAdvancedFeatures",
"/v2/servers/{server_id}/actions#ChangeAdvancedFirewallRules",
"/v2/servers/{server_id}/actions#ChangeBackupSchedule",
"/v2/servers/{server_id}/actions#ChangeIpv6",
"/v2/servers/{server_id}/actions#ChangeIpv6ReverseNameservers",
"/v2/servers/{server_id}/actions#ChangeKernel",
"/v2/servers/{server_id}/actions#ChangeManageOffsiteBackupCopies",
"/v2/servers/{server_id}/actions#ChangeNetwork",
"/v2/servers/{server_id}/actions#ChangeOffsiteBackupLocation",
"/v2/servers/{server_id}/actions#ChangePartner",
"/v2/servers/{server_id}/actions#ChangePortBlocking",
"/v2/servers/{server_id}/actions#ChangeRegion",
"/v2/servers/{server_id}/actions#ChangeReverseName",
"/v2/servers/{server_id}/actions#ChangeSeparatePrivateNetworkInterface",
"/v2/servers/{server_id}/actions#ChangeSourceAndDestinationCheck",
"/v2/servers/{server_id}/actions#ChangeThresholdAlerts",
"/v2/servers/{server_id}/actions#ChangeVpcIpv4",
"/v2/servers/{server_id}/actions#CloneUsingBackup",
"/v2/servers/{server_id}/actions#DeleteDisk",
"/v2/servers/{server_id}/actions#DetachBackup",
"/v2/servers/{server_id}/actions#DisableBackups",
"/v2/servers/{server_id}/actions#DisableSelinux",
"/v2/servers/{server_id}/actions#EnableBackups",
"/v2/servers/{server_id}/actions#EnableIpv6",
"/v2/servers/{server_id}/actions#IsRunning",
"/v2/servers/{server_id}/actions#PasswordReset",
"/v2/servers/{server_id}/actions#Ping",
"/v2/servers/{server_id}/actions#PowerCycle",
"/v2/servers/{server_id}/actions#PowerOff",
"/v2/servers/{server_id}/actions#PowerOn",
"/v2/servers/{server_id}/actions#Reboot",
"/v2/servers/{server_id}/actions#Rebuild",
"/v2/servers/{server_id}/actions#Rename",
"/v2/servers/{server_id}/actions#Resize",
"/v2/servers/{server_id}/actions#ResizeDisk",
"/v2/servers/{server_id}/actions#Restore",
"/v2/servers/{server_id}/actions#Shutdown",
"/v2/servers/{server_id}/actions#TakeBackup",
"/v2/servers/{server_id}/actions#Uncancel",
"/v2/servers/{server_id}/actions#Uptime"
]
}