Download OpenAPI specification:Download
Cycle's Infrastructure Abstract Layer (IAL) API. Endpoints listed here should be implemented by the customer, and Cycle will call the various endpoints over the lifecycle of provisioning and decommissioning servers. For more information, check out the official Infrastructure Abstraction Layer Documentation.
For a Go implementation of the types, see the repo available here: https://github.com/cycleplatform/integrations
Cycle will utilize this endpoint to verify that user-specified credentials can properly authorize with the IAL integration.
Returns an object with a valid
property. Should be true if the authorization is successful.
{- "auth": {
- "client_id": "string",
- "subscription_id": "string",
- "namespace": "string",
- "region": "string",
- "api_key": "string",
- "secret": "string",
- "config": "string",
- "cycle": {
- "hub_name": "string",
- "hub_id": "string"
}
}, - "request": null
}
{- "valid": true
}
Cycle will utilize this call to learn which locations it is able to deploy servers to.
Returns a list of available server locations for this IAL.
{- "locations": [
- {
- "name": "string",
- "geographic": {
- "latitude": 0,
- "longitude": 0,
- "city": "string",
- "state": "string",
- "country": "string",
- "region": "string"
}, - "provider": {
- "location_id": "string",
- "code": "string",
- "availability_zones": [
- "string"
]
}, - "features": {
- "available": [
- "string"
], - "supported": [
- "string"
]
}, - "annotations": {
- "property1": "string",
- "property2": "string"
}, - "compatible": true
}
], - "extra": {
- "property1": null,
- "property2": null
}
}
Cycle will use this endpoint to learn which server types / models it is able to deploy (and which locations those servers can be deployed to).
Returns a list of available server models available via this IAL integration.
{- "models": [
- {
- "name": "string",
- "drivers": [
- "string"
], - "description": "string",
- "specs": {
- "cpu": {
- "count": 0,
- "cores": 0,
- "threads": 0,
- "type": "string",
- "shared": true,
- "extra": {
- "property1": "string",
- "property2": "string"
}
}, - "gpu": {
- "count": 0,
- "cores": 0,
- "vram_gb": 0,
- "type": "string",
- "shared": true,
- "extra": {
- "property1": "string",
- "property2": "string"
}
}, - "memory": {
- "size_gb": 0,
- "type": "string",
- "extra": {
- "property1": "string",
- "property2": "string"
}
}, - "storage": [
- {
- "count": 0,
- "size_gb": 0,
- "type": "string",
- "extra": {
- "property1": "string",
- "property2": "string"
}
}
], - "network": [
- {
- "scope": "string",
- "type": "string",
- "throughput": "string"
}
], - "features": {
- "raid": "string",
- "extra": { }
}
}, - "provider": {
- "category": "string",
- "class": "string",
- "model_id": "string",
- "locations": [
- "string"
], - "availability_zones": { }
}, - "pricing": {
- "hourly": 0,
- "monthly": 0
}, - "compatible": true
}
], - "extra": {
- "property1": null,
- "property2": null
}
}
Cycle will call this endpoint before every server provision to enable an IAL integration to make location-specific customizations prior to starting servers. For example, with Cycle's native integration with AWS, we utilize this call to configure subnets and VPCs.
object (Auth) The authorization object configured as part of the IAL integration on Cycle. All of these fields are custom, and can be interpreted by your API in any way desired. | |
required | object A request to update or configure the settings for a specific location. |
Returns the updated location configuration.
{- "auth": {
- "client_id": "string",
- "subscription_id": "string",
- "namespace": "string",
- "region": "string",
- "api_key": "string",
- "secret": "string",
- "config": "string",
- "cycle": {
- "hub_name": "string",
- "hub_id": "string"
}
}, - "request": {
- "location_id": "string",
- "version": "string",
- "configuration_current": { },
- "cycle": {
- "location_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795"
}
}
}
{- "configured": true,
- "version": "string",
- "configuration_latest": { }
}
Cycle will utilize this endpoint to start the provision of a server.
object (Auth) The authorization object configured as part of the IAL integration on Cycle. All of these fields are custom, and can be interpreted by your API in any way desired. | |
required | object Properties for initiating a server provision. |
Returns details about the server being provisioned.
{- "auth": {
- "client_id": "string",
- "subscription_id": "string",
- "namespace": "string",
- "region": "string",
- "api_key": "string",
- "secret": "string",
- "config": "string",
- "cycle": {
- "hub_name": "string",
- "hub_id": "string"
}
}, - "request": {
- "hostname": "string",
- "model_id": "string",
- "location_id": "string",
- "zone_id": "string",
- "model_features": {
- "raid": "string",
- "extra": { }
}, - "provision_options": { },
- "location_configuration": { },
- "cycle": {
- "server_id": "820efca4-4a15-4ab7-82fc-9e76f6d61325",
- "model_class": "string",
- "model_category": "string",
- "model_id": "f8ff2fb8-4acc-4e48-bd83-cbdac23e1224",
- "location_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795"
}
}
}
{- "server_id": "string",
- "extra": { }
}
Cycle will use this endpoint to track the status of a provision and, when complete, authorize a server to pull CycleOS via IPXE.
Returns the status of a server provisioning request, including server ID, provisioning status, authentication details, and any additional extra information.
{- "server_id": "string",
- "provisioned": true,
- "auth": {
- "uuid": "string",
- "initial_ips": [
- "string"
], - "mac_addr": "string"
}, - "extra": { }
}
Cycle will begin a decommission once a user initiates a 'delete' within the portal / API. This call will only occur after a server no longer has any IPs or instances assigned to it.
object (Auth) The authorization object configured as part of the IAL integration on Cycle. All of these fields are custom, and can be interpreted by your API in any way desired. | |
required | object Represents a request to decommission a server, including server identification details, location, and any extra information required by the provider or for internal processes. |
Returns a boolean of the success of the decommission.
{- "auth": {
- "client_id": "string",
- "subscription_id": "string",
- "namespace": "string",
- "region": "string",
- "api_key": "string",
- "secret": "string",
- "config": "string",
- "cycle": {
- "hub_name": "string",
- "hub_id": "string"
}
}, - "request": {
- "server_id": "string",
- "hostname": "string",
- "model_id": "string",
- "location_id": "string",
- "zone_id": "string",
- "extra": { },
- "cycle": {
- "server_id": "820efca4-4a15-4ab7-82fc-9e76f6d61325",
- "model_class": "string",
- "model_category": "string",
- "model_id": "f8ff2fb8-4acc-4e48-bd83-cbdac23e1224",
- "location_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795"
}
}
}
true
Cycle will call this endpoint whenever a request has been made via the platform to restart a server.
object (Auth) The authorization object configured as part of the IAL integration on Cycle. All of these fields are custom, and can be interpreted by your API in any way desired. | |
required | object Describes a request to restart a server. |
Returns a boolean of the success of the restart.
{- "auth": {
- "client_id": "string",
- "subscription_id": "string",
- "namespace": "string",
- "region": "string",
- "api_key": "string",
- "secret": "string",
- "config": "string",
- "cycle": {
- "hub_name": "string",
- "hub_id": "string"
}
}, - "request": {
- "server_id": "string",
- "hostname": "string",
- "model_id": "string",
- "location_id": "string",
- "zone_id": "string",
- "extra": { },
- "cycle": {
- "server_id": "820efca4-4a15-4ab7-82fc-9e76f6d61325",
- "model_class": "string",
- "model_category": "string",
- "model_id": "f8ff2fb8-4acc-4e48-bd83-cbdac23e1224",
- "location_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795"
}
}
}
true
Cycle will call this endpoint to allocate an IP address. Generally this is done when a new load balancer is created (during environment create, or scaling up).
object (Auth) The authorization object configured as part of the IAL integration on Cycle. All of these fields are custom, and can be interpreted by your API in any way desired. | |
required | object Represents a request to allocate an IP address, detailing the kind of IP, relevant server and location identifiers, and configuration details. |
Returns information about the allocated IP address.
{- "auth": {
- "client_id": "string",
- "subscription_id": "string",
- "namespace": "string",
- "region": "string",
- "api_key": "string",
- "secret": "string",
- "config": "string",
- "cycle": {
- "hub_name": "string",
- "hub_id": "string"
}
}, - "request": {
- "kind": "ipv4",
- "server_id": "string",
- "location_id": "string",
- "zone_id": "string",
- "location_configuration": { },
- "cycle": {
- "pool_id": "bd9ee216-b2f2-496a-bbe1-31b86a2c3c43",
- "server_id": "820efca4-4a15-4ab7-82fc-9e76f6d61325",
- "server_model_class": "string",
- "server_model_category": "string",
- "location_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795"
}
}
}
{- "ip_id": "string",
- "ip_assignment_id": "string",
- "cidr": "string",
- "gateway": "string",
- "netmask": "string",
- "network": "string",
- "nat_private_ip": "string"
}
When an IP is no longer needed, Cycle will release it using this API endpoint.
Returns a boolean of the success of the release.
{- "kind": "ipv4",
- "ip_id": "string",
- "ip_assignment_id": "string",
- "cidr": "string",
- "nat_private_ip": "string",
- "zone_id": "string",
- "server_id": "string",
- "location_id": "string",
- "location_configuration": { },
- "cycle": {
- "pool_id": "bd9ee216-b2f2-496a-bbe1-31b86a2c3c43",
- "server_id": "820efca4-4a15-4ab7-82fc-9e76f6d61325",
- "server_model_class": "string",
- "server_model_category": "string",
- "location_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795"
}
}
true