NAME
Net::Async::WebService::lxd - REST client (asynchronous) for lxd Linux containers
SYNOPSIS
use IO::Async::Loop;
my $loop = IO::Async::Loop->new;
use Net::Async::WebService::lxd;
my $lxd = Net::Async::WebService::lxd->new( loop => $loop,
endpoint => 'https://192.168.0.50:8443',
SSL_cert_file => "t/client.crt",
SSL_key_file => "t/client.key",
SSL_fingerprint => 'sha1$92:DD:63:F8:99:C4:5F:82:59:52:82:A9:09:C8:57:F0:67:56:B0:1B',
);
$lxd->create_instance(
body => {
architecture => 'x86_64',
profiles => [ 'default' ],
name => 'test1',
source => { type => 'image',
fingerprint => '6dc6aa7c8c00' }, # image already exists in image store
config => {},
} )->get; # wait for it
# container is still stopped
$lxd->instance_state( name => 'test1',
body => {
action => "start",
force => JSON::false,
stateful => JSON::false,
timeout => 30,
} )->get; # wait for it
INTERFACE
Constructor
The constructor returns a handle to one LXD server. It's address is specified via an endpoint parameter, be it of an HTTPS or of a UNIX socket kind.
If you are working with a non-default LXD project in mind, then you should also provide that project's name with the project parameter. Background operation polling will make use of that. Note, that when invoking any of the methods here, you will still have to specify that project, unless it is the default
one, of course.
As we are operating under an IO::Async regime here, the handle also needs a loop parameter to the central event loop. The handle will also regularily poll autonomously the server which operations are still running or have completed. The optional parameter polling_time controls how often that will occur; it will default to 1 sec, if not provided.
As LXD can be accessed remotely only via HTTPS, TLS (SSL) parameters must be provided. These will be forwarded directly to IO::Socket::SSL. But, specifically, one should consider to provide:
client certificate, via a proper subset of
SSL_cert_file
,SSL_key_file
,SSL_cert
andSSL_key
. (Look at the "HINTS" section to generate such a certificate for LXD.)server fingerprint, via
SSL_fingerprint
(Look at the "HINTS" section how to figure this out.)
Methods
All methods below are automatically generated from the LXD REST API Spec. They should work with API version 1.0.
Let's dissect method invocations with this example:
my $f = $lxd->instance_state( name => 'test1' );
my $r = $f->get;
All invocations return a Future. Thus they can be combined, sequenced, run in "parallel", etc. If you need to wait for a definite result, then you will block the flow with
->get
.Polling is done behind the scenes and will watch for all operations which either succeeded or failed. Those will mark the associated future as
done
orfailed
. Normally, you will never need to use the methods for 'Operations' yourself; they are still offered as fallback.The result of each fully completed invocation is either
the string
success
, ora Perl HASH ref which reflects the JSON data sent from the LXD server. Note, that Booleans have to be treated special, by using
JSON::false
andJSON::true
. Otherwise, they follow exactly the structure in the specification.or a HASH ref with keys
stdin
andstdout
if this is a result of theexecute_in_instance
method.
If an operation failed, then the associated future will be failed, together with the reason of the failure from the server. If you do not cater with that, then this will - as usual with
IO::Async
- raise an exception, with the failure as string.Methods named like the type of server object (e.g.
cluster
,certificate
,image
) are normally "getter/setter" methods. The getter obviously returns the state of the object. The method becomes a setter, if the additionalbody
field together with a Perl HASH ref is passed:my $f = $lxd->instance_state( name => 'test1', body => { action => "start", force => JSON::false, stateful => JSON::false, timeout => 30, } );
That HASH ref also follows the structure outlined in the specification for that particular endpoint.
How a specific object is addressed, is detailed in each method below; usually you provide a
name
,id
,fingerprint
, or similar. You may also have to provide aproject
, if not being the default project.Methods named like a plural of type of server object (e.g.
certificates
) normally return a list of identifiers for such objects.Many methods request changes in the LXD server. The names are taken from the specification, but are adapted to better reflect what is intended:
Methods which change the state of the remote object usually are called
modify
_something.Methods which add a new object to a collection are usually called
add
_something, orcreate
_something, depending on how it sounds better.Methods which remove an object from a collection are usually called
delete
_something.
};
foreach my $tag (sort @tags) {
my $Tag = ucfirst( $tag );
$Tag =~ s/-/ /g;
$Tag =~ s/acl/ACL/;
$Tag =~ s/( \S)/ uc($1)/ge;
$pod .= qq{=head2 $Tag
};
foreach my $method (sort { $a->{name} cmp $b->{name} }
grep { $_->{tags}->[0] eq $tag } # this chapter
values %$META ) { # all
$pod .= qq{=item * B<$method->{name}>
}; #$pod .= Dumper $method; if ($method->{method} eq 'GETPUT') { $pod .= $method->{op}->[0]->{description}; # $pod .= qq{ [L <Spec|${SPEC_base}/$method->{tags}->[0]/$method->{opid}->[0]> ]}; $pod .= "\n\n"; $pod .= $method->{op}->[1]->{description}; # $pod .= qq{ [L <Spec|${SPEC_base}/$method->{tags}->[0]/$method->{opid}->[1]> ]}; $pod .= "\n\n"; } else { $pod .= $method->{op}->{ lc( $method->{method} ) }->{description};
$log->debug( "XXXX $method->{opid} ") unless $method->{tags}->[0]; $log->debug( "YYYY $method->{opid} ".Dumper $method) unless $method->{opid};
# $pod .= qq{ [L <Spec|${SPEC_base}/$method->{tags}->[0]/$method->{opid}> ]}; $pod .= "\n\n"; } $pod .= q{=over
}; foreach my $p (sort @{ $method->{fields} }) { $pod .= qq{=item $p
: string, required
}; } foreach my $p (sort keys %{ $method->{params} }) { # my $params = ref($method->{op}) eq 'ARRAY' ? $method->{op}->[1]->{parameters} : $method->{op}->{parameters}; #$pod .= Dumper $params; my $docp = $method->{params}->{$p}; #$pod .= Dumper $docp; $pod .= qq{=item $p
: } . ($docp->{type} ? $docp->{type} : "see Spec") . ', ' . ($docp->{required} ? "required" : "optional") . q{
}; } #warn "xxxx".Dumper $method->{body}; foreach my $p (sort keys %{ $method->{body} }) { #warn "\\_ $p"; # my $params = ref($method->{op}) eq 'ARRAY' ? $method->{op}->[1]->{parameters} : $method->{op}->{parameters}; #$pod .= Dumper $params; my $docp = $method->{body}->{$p}; #warn "\\_ ".Dumper $docp; #$pod .= Dumper $docp; $pod .= qq{=item body
: $p}; $pod .= ', ' . ($docp->{required} ? "required" : "optional"); if ($docp->{type}) { $pod .= ", ".$docp->{type}; } elsif ($docp->{schema}) { if (my $s = $docp->{schema}->{'$ref'}) { $s =~ s{\#/definitions/}{};
sub _format_yaml_pod { my $h = shift; use YAML qw(Dump); return "\n\n" # ."=begin text\n" .( join "\n", map { " $_" } grep { $_ !~ /x-go-/ } grep { $_ !~ /---/ } split /\n/, Dump ($h) ) # ."\n=end text\n" ; }
$pod .= _format_yaml_pod( $rest_api->{definitions}->{$s} );
} else {
$pod .= _format_yaml_pod( $docp->{schema} );
}
} else {
$pod .= "see Spec";
}
$pod .= "\n\n";
}
$pod .= q{
}; }
$pod .= q{
};
}
$pod .= q{
PSEUDO OBJECT ORIENTATION
Just for the sake of experimentation, I added a sub-package lxd::instance
. To add OO-flavour, you simply bless the instance HASH with it:
my $r = $lxd->instance( name => "my-container" )->get;
my $i = bless $r, 'lxd::instance';
From then on, the following methods can operate on it:
restart
start
freeze
unfreeze
stop
state
Well, I'm not a big fan of objects.
EXAMPLES
I encourage you to look at the 02_instances.t
test suite. It will show a complete life cycle for containers.
SEE ALSO
-
uses actually the existing lxc client to get the information
https://github.com/jipipayo/Linux-REST-LXD
pretty old, never persued
HINTS
How to generate an SSL client certificate for LXD
First, I found one client certificate (plus the key) in my installation at:
/root/snap/lxd/common/config/
Alternatively, you can run your own small CA, generate a .crt and .key for a client, and then add it to lxd to trust it.
More on this topic is here
How to find the SSL fingerprint for an LXD server
With recent versions of LXD this is fairly easy:
$ lxc info|grep fingerprint
It is a SHA256 hash, so you will have to prefix it with
sha256$
(no blanks) when you pass it toSSL_fingerprint
.Alternatively, you can try to find the server certificate and use
openssl
to derive a fingerprint of your choice.
ISSUES
Open issues are probably best put onto Github
AUTHOR
Robert Barta, <rho at devc.at>
CREDITS
IO::Async, Net::Async::HTTP, IO::Socket::SSL and friends are amazing.
LICENSE AND COPYRIGHT
Copyright 2022 Robert Barta.
} . read_file("LICENSE") ; print $pod; }
1; # End of Net::Async::WebService::lxd
__DATA__ definitions: Certificate: description: Certificate represents a LXD certificate properties: certificate: description: The certificate itself, as PEM encoded X509 example: X509 PEM certificate type: string x-go-name: Certificate fingerprint: description: SHA256 fingerprint of the certificate example: fd200419b271f1dc2a5591b693cc5774b7f234e1ff8c6b78ad703b6888fe2b69 readOnly: true type: string x-go-name: Fingerprint name: description: Name associated with the certificate example: castiana type: string x-go-name: Name projects: description: List of allowed projects (applies when restricted) example: - default - foo - bar items: type: string type: array x-go-name: Projects restricted: description: Whether to limit the certificate to listed projects example: true type: boolean x-go-name: Restricted type: description: Usage type for the certificate (only client currently) example: client type: string x-go-name: Type type: object x-go-package: github.com/lxc/lxd/shared/api CertificateAddToken: properties: addresses: description: The addresses of the server example: - 10.98.30.229:8443 items: type: string type: array x-go-name: Addresses client_name: description: The name of the new client example: user@host type: string x-go-name: ClientName fingerprint: description: The fingerprint of the network certificate example: 57bb0ff4340b5bb28517e062023101adf788c37846dc8b619eb2c3cb4ef29436 type: string x-go-name: Fingerprint secret: description: The random join secret example: 2b2284d44db32675923fe0d2020477e0e9be11801ff70c435e032b97028c35cd type: string x-go-name: Secret title: CertificateAddToken represents the fields contained within an encoded certificate add token. type: object x-go-package: github.com/lxc/lxd/shared/api CertificatePut: description: CertificatePut represents the modifiable fields of a LXD certificate properties: certificate: description: The certificate itself, as PEM encoded X509 example: X509 PEM certificate type: string x-go-name: Certificate name: description: Name associated with the certificate example: castiana type: string x-go-name: Name projects: description: List of allowed projects (applies when restricted) example: - default - foo - bar items: type: string type: array x-go-name: Projects restricted: description: Whether to limit the certificate to listed projects example: true type: boolean x-go-name: Restricted type: description: Usage type for the certificate (only client currently) example: client type: string x-go-name: Type type: object x-go-package: github.com/lxc/lxd/shared/api CertificatesPost: description: CertificatesPost represents the fields of a new LXD certificate properties: certificate: description: The certificate itself, as PEM encoded X509 example: X509 PEM certificate type: string x-go-name: Certificate name: description: Name associated with the certificate example: castiana type: string x-go-name: Name password: description: Server trust password (used to add an untrusted client) example: blah type: string x-go-name: Password projects: description: List of allowed projects (applies when restricted) example: - default - foo - bar items: type: string type: array x-go-name: Projects restricted: description: Whether to limit the certificate to listed projects example: true type: boolean x-go-name: Restricted token: description: Whether to create a certificate add token example: true type: boolean x-go-name: Token type: description: Usage type for the certificate (only client currently) example: client type: string x-go-name: Type type: object x-go-package: github.com/lxc/lxd/shared/api Cluster: properties: enabled: description: Whether clustering is enabled example: true type: boolean x-go-name: Enabled member_config: description: List of member configuration keys (used during join) example: [] items: $ref: '#/definitions/ClusterMemberConfigKey' type: array x-go-name: MemberConfig server_name: description: Name of the cluster member answering the request example: lxd01 type: string x-go-name: ServerName title: Cluster represents high-level information about a LXD cluster. type: object x-go-package: github.com/lxc/lxd/shared/api ClusterCertificatePut: description: ClusterCertificatePut represents the certificate and key pair for all members in a LXD Cluster properties: cluster_certificate: description: The new certificate (X509 PEM encoded) for the cluster example: X509 PEM certificate type: string x-go-name: ClusterCertificate cluster_certificate_key: description: The new certificate key (X509 PEM encoded) for the cluster example: X509 PEM certificate key type: string x-go-name: ClusterCertificateKey type: object x-go-package: github.com/lxc/lxd/shared/api ClusterGroup: properties: description: description: The description of the cluster group example: amd64 servers type: string x-go-name: Description members: description: List of members in this group example: - node1 - node3 items: type: string type: array x-go-name: Members name: description: The new name of the cluster group example: group1 type: string x-go-name: Name title: ClusterGroup represents a cluster group. type: object x-go-package: github.com/lxc/lxd/shared/api ClusterGroupPost: properties: name: description: The new name of the cluster group example: group1 type: string x-go-name: Name title: ClusterGroupPost represents the fields required to rename a cluster group. type: object x-go-package: github.com/lxc/lxd/shared/api ClusterGroupPut: properties: description: description: The description of the cluster group example: amd64 servers type: string x-go-name: Description members: description: List of members in this group example: - node1 - node3 items: type: string type: array x-go-name: Members title: ClusterGroupPut represents the modifiable fields of a cluster group. type: object x-go-package: github.com/lxc/lxd/shared/api ClusterGroupsPost: properties: description: description: The description of the cluster group example: amd64 servers type: string x-go-name: Description members: description: List of members in this group example: - node1 - node3 items: type: string type: array x-go-name: Members name: description: The new name of the cluster group example: group1 type: string x-go-name: Name title: ClusterGroupsPost represents the fields available for a new cluster group. type: object x-go-package: github.com/lxc/lxd/shared/api ClusterMember: properties: architecture: description: The primary architecture of the cluster member example: x86_64 type: string x-go-name: Architecture config: additionalProperties: type: string description: Additional configuration information example: scheduler.instance: all type: object x-go-name: Config database: description: Whether the cluster member is a database server example: true type: boolean x-go-name: Database description: description: Cluster member description example: AMD Epyc 32c/64t type: string x-go-name: Description failure_domain: description: Name of the failure domain for this cluster member example: rack1 type: string x-go-name: FailureDomain groups: description: List of cluster groups this member belongs to example: - group1 - group2 items: type: string type: array x-go-name: Groups message: description: Additional status information example: fully operational type: string x-go-name: Message roles: description: List of roles held by this cluster member example: - database items: type: string type: array x-go-name: Roles server_name: description: Name of the cluster member example: lxd01 type: string x-go-name: ServerName status: description: Current status example: Online type: string x-go-name: Status url: description: URL at which the cluster member can be reached example: https://10.0.0.1:8443 type: string x-go-name: URL title: ClusterMember represents the a LXD node in the cluster. type: object x-go-package: github.com/lxc/lxd/shared/api ClusterMemberConfigKey: description: |- The Value field is empty when getting clustering information with GET 1.0/cluster, and should be filled by the joining node when performing a PUT 1.0/cluster join request. properties: description: description: A human friendly description key example: '"source" property for storage pool "local"' type: string x-go-name: Description entity: description: The kind of configuration key (network, storage-pool, ...) example: storage-pool type: string x-go-name: Entity key: description: The name of the key example: source type: string x-go-name: Key name: description: The name of the object requiring this key example: local type: string x-go-name: Name value: description: The value on the answering cluster member example: /dev/sdb type: string x-go-name: Value title: |- ClusterMemberConfigKey represents a single config key that a new member of the cluster is required to provide when joining. type: object x-go-package: github.com/lxc/lxd/shared/api ClusterMemberJoinToken: properties: addresses: description: The addresses of existing online cluster members example: - 10.98.30.229:8443 items: type: string type: array x-go-name: Addresses fingerprint: description: The fingerprint of the network certificate example: 57bb0ff4340b5bb28517e062023101adf788c37846dc8b619eb2c3cb4ef29436 type: string x-go-name: Fingerprint secret: description: The random join secret. example: 2b2284d44db32675923fe0d2020477e0e9be11801ff70c435e032b97028c35cd type: string x-go-name: Secret server_name: description: The name of the new cluster member example: lxd02 type: string x-go-name: ServerName title: ClusterMemberJoinToken represents the fields contained within an encoded cluster member join token. type: object x-go-package: github.com/lxc/lxd/shared/api ClusterMemberPost: properties: server_name: description: The new name of the cluster member example: lxd02 type: string x-go-name: ServerName title: ClusterMemberPost represents the fields required to rename a LXD node. type: object x-go-package: github.com/lxc/lxd/shared/api ClusterMemberPut: description: ClusterMemberPut represents the the modifiable fields of a LXD cluster member properties: config: additionalProperties: type: string description: Additional configuration information example: scheduler.instance: all type: object x-go-name: Config description: description: Cluster member description example: AMD Epyc 32c/64t type: string x-go-name: Description failure_domain: description: Name of the failure domain for this cluster member example: rack1 type: string x-go-name: FailureDomain groups: description: List of cluster groups this member belongs to example: - group1 - group2 items: type: string type: array x-go-name: Groups roles: description: List of roles held by this cluster member example: - database items: type: string type: array x-go-name: Roles type: object x-go-package: github.com/lxc/lxd/shared/api ClusterMemberStatePost: properties: action: description: The action to be performed. Valid actions are "evacuate" and "restore". example: evacuate type: string x-go-name: Action title: ClusterMemberStatePost represents the fields required to evacuate a cluster member. type: object x-go-package: github.com/lxc/lxd/shared/api ClusterMembersPost: properties: server_name: description: The name of the new cluster member example: lxd02 type: string x-go-name: ServerName title: ClusterMembersPost represents the fields required to request a join token to add a member to the cluster. type: object x-go-package: github.com/lxc/lxd/shared/api ClusterPut: description: |- ClusterPut represents the fields required to bootstrap or join a LXD cluster. properties: cluster_address: description: The address of the cluster you wish to join example: 10.0.0.1:8443 type: string x-go-name: ClusterAddress cluster_certificate: description: The expected certificate (X509 PEM encoded) for the cluster example: X509 PEM certificate type: string x-go-name: ClusterCertificate cluster_password: description: The trust password of the cluster you're trying to join example: blah type: string x-go-name: ClusterPassword enabled: description: Whether clustering is enabled example: true type: boolean x-go-name: Enabled member_config: description: List of member configuration keys (used during join) example: [] items: $ref: '#/definitions/ClusterMemberConfigKey' type: array x-go-name: MemberConfig server_address: description: The local address to use for cluster communication example: 10.0.0.2:8443 type: string x-go-name: ServerAddress server_name: description: Name of the cluster member answering the request example: lxd01 type: string x-go-name: ServerName type: object x-go-package: github.com/lxc/lxd/shared/api Event: description: Event represents an event entry (over websocket) properties: location: description: Originating cluster member example: lxd01 type: string x-go-name: Location metadata: description: JSON encoded metadata (see EventLogging, EventLifecycle or Operation) example: action: instance-started context: {} source: /1.0/instances/c1 type: object x-go-name: Metadata project: description: Project the event belongs to. example: default type: string x-go-name: Project timestamp: description: Time at which the event was sent example: "2021-02-24T19:00:45.452649098-05:00" format: date-time type: string x-go-name: Timestamp type: description: Event type (one of operation, logging or lifecycle) example: lifecycle type: string x-go-name: Type type: object x-go-package: github.com/lxc/lxd/shared/api Image: description: Image represents a LXD image properties: aliases: description: List of aliases items: $ref: '#/definitions/ImageAlias' type: array x-go-name: Aliases architecture: description: Architecture example: x86_64 type: string x-go-name: Architecture auto_update: description: Whether the image should auto-update when a new build is available example: true type: boolean x-go-name: AutoUpdate cached: description: Whether the image is an automatically cached remote image example: true type: boolean x-go-name: Cached created_at: description: When the image was originally created example: "2021-03-23T20:00:00-04:00" format: date-time type: string x-go-name: CreatedAt expires_at: description: When the image becomes obsolete example: "2025-03-23T20:00:00-04:00" format: date-time type: string x-go-name: ExpiresAt filename: description: Original filename example: 06b86454720d36b20f94e31c6812e05ec51c1b568cf3a8abd273769d213394bb.rootfs type: string x-go-name: Filename fingerprint: description: Full SHA-256 fingerprint example: 06b86454720d36b20f94e31c6812e05ec51c1b568cf3a8abd273769d213394bb type: string x-go-name: Fingerprint last_used_at: description: Last time the image was used example: "2021-03-22T20:39:00.575185384-04:00" format: date-time type: string x-go-name: LastUsedAt profiles: description: List of profiles to use when creating from this image (if none provided by user) example: - default items: type: string type: array x-go-name: Profiles properties: additionalProperties: type: string description: Descriptive properties example: os: Ubuntu release: focal variant: cloud type: object x-go-name: Properties public: description: Whether the image is available to unauthenticated users example: false type: boolean x-go-name: Public size: description: Size of the image in bytes example: 272237676 format: int64 type: integer x-go-name: Size type: description: Type of image (container or virtual-machine) example: container type: string x-go-name: Type update_source: $ref: '#/definitions/ImageSource' uploaded_at: description: When the image was added to this LXD server example: "2021-03-24T14:18:15.115036787-04:00" format: date-time type: string x-go-name: UploadedAt type: object x-go-package: github.com/lxc/lxd/shared/api ImageAlias: description: ImageAlias represents an alias from the alias list of a LXD image properties: description: description: Description of the alias example: Our preferred Ubuntu image type: string x-go-name: Description name: description: Name of the alias example: ubuntu-20.04 type: string x-go-name: Name type: object x-go-package: github.com/lxc/lxd/shared/api ImageAliasesEntry: description: ImageAliasesEntry represents a LXD image alias properties: description: description: Alias description example: Our preferred Ubuntu image type: string x-go-name: Description name: description: Alias name example: ubuntu-20.04 type: string x-go-name: Name target: description: Target fingerprint for the alias example: 06b86454720d36b20f94e31c6812e05ec51c1b568cf3a8abd273769d213394bb type: string x-go-name: Target type: description: Alias type (container or virtual-machine) example: container type: string x-go-name: Type type: object x-go-package: github.com/lxc/lxd/shared/api ImageAliasesEntryPost: description: ImageAliasesEntryPost represents the required fields to rename a LXD image alias properties: name: description: Alias name example: ubuntu-20.04 type: string x-go-name: Name type: object x-go-package: github.com/lxc/lxd/shared/api ImageAliasesEntryPut: description: ImageAliasesEntryPut represents the modifiable fields of a LXD image alias properties: description: description: Alias description example: Our preferred Ubuntu image type: string x-go-name: Description target: description: Target fingerprint for the alias example: 06b86454720d36b20f94e31c6812e05ec51c1b568cf3a8abd273769d213394bb type: string x-go-name: Target type: object x-go-package: github.com/lxc/lxd/shared/api ImageAliasesPost: description: ImageAliasesPost represents a new LXD image alias properties: description: description: Alias description example: Our preferred Ubuntu image type: string x-go-name: Description name: description: Alias name example: ubuntu-20.04 type: string x-go-name: Name target: description: Target fingerprint for the alias example: 06b86454720d36b20f94e31c6812e05ec51c1b568cf3a8abd273769d213394bb type: string x-go-name: Target type: description: Alias type (container or virtual-machine) example: container type: string x-go-name: Type type: object x-go-package: github.com/lxc/lxd/shared/api ImageExportPost: description: ImageExportPost represents the fields required to export a LXD image properties: aliases: description: List of aliases to set on the image items: $ref: '#/definitions/ImageAlias' type: array x-go-name: Aliases certificate: description: Remote server certificate example: X509 PEM certificate type: string x-go-name: Certificate secret: description: Image receive secret example: RANDOM-STRING type: string x-go-name: Secret target: description: Target server URL example: https://1.2.3.4:8443 type: string x-go-name: Target type: object x-go-package: github.com/lxc/lxd/shared/api ImageMetadata: description: ImageMetadata represents LXD image metadata (used in image tarball) properties: architecture: description: Architecture name example: x86_64 type: string x-go-name: Architecture creation_date: description: Image creation data (as UNIX epoch) example: 1620655439 format: int64 type: integer x-go-name: CreationDate expiry_date: description: Image expiry data (as UNIX epoch) example: 1620685757 format: int64 type: integer x-go-name: ExpiryDate properties: additionalProperties: type: string description: Descriptive properties example: os: Ubuntu release: focal variant: cloud type: object x-go-name: Properties templates: additionalProperties: $ref: '#/definitions/ImageMetadataTemplate' description: Template for files in the image type: object x-go-name: Templates type: object x-go-package: github.com/lxc/lxd/shared/api ImageMetadataTemplate: description: ImageMetadataTemplate represents a template entry in image metadata (used in image tarball) properties: create_only: description: Whether to trigger only if the file is missing example: false type: boolean x-go-name: CreateOnly properties: additionalProperties: type: string description: Key/value properties to pass to the template example: foo: bar type: object x-go-name: Properties template: description: The template itself as a valid pongo2 template example: pongo2-template type: string x-go-name: Template when: description: When to trigger the template (create, copy or start) example: create items: type: string type: array x-go-name: When type: object x-go-package: github.com/lxc/lxd/shared/api ImagePut: description: ImagePut represents the modifiable fields of a LXD image properties: auto_update: description: Whether the image should auto-update when a new build is available example: true type: boolean x-go-name: AutoUpdate expires_at: description: When the image becomes obsolete example: "2025-03-23T20:00:00-04:00" format: date-time type: string x-go-name: ExpiresAt profiles: description: List of profiles to use when creating from this image (if none provided by user) example: - default items: type: string type: array x-go-name: Profiles properties: additionalProperties: type: string description: Descriptive properties example: os: Ubuntu release: focal variant: cloud type: object x-go-name: Properties public: description: Whether the image is available to unauthenticated users example: false type: boolean x-go-name: Public type: object x-go-package: github.com/lxc/lxd/shared/api ImageSource: description: ImageSource represents the source of a LXD image properties: alias: description: Source alias to download from example: focal type: string x-go-name: Alias certificate: description: Source server certificate (if not trusted by system CA) example: X509 PEM certificate type: string x-go-name: Certificate image_type: description: Type of image (container or virtual-machine) example: container type: string x-go-name: ImageType protocol: description: Source server protocol example: simplestreams type: string x-go-name: Protocol server: description: URL of the source server example: https://images.linuxcontainers.org type: string x-go-name: Server type: object x-go-package: github.com/lxc/lxd/shared/api ImagesPost: description: ImagesPost represents the fields available for a new LXD image properties: aliases: description: Aliases to add to the image example: - name: foo - name: bar items: $ref: '#/definitions/ImageAlias' type: array x-go-name: Aliases auto_update: description: Whether the image should auto-update when a new build is available example: true type: boolean x-go-name: AutoUpdate compression_algorithm: description: Compression algorithm to use when turning an instance into an image example: gzip type: string x-go-name: CompressionAlgorithm expires_at: description: When the image becomes obsolete example: "2025-03-23T20:00:00-04:00" format: date-time type: string x-go-name: ExpiresAt filename: description: Original filename of the image example: lxd.tar.xz type: string x-go-name: Filename profiles: description: List of profiles to use when creating from this image (if none provided by user) example: - default items: type: string type: array x-go-name: Profiles properties: additionalProperties: type: string description: Descriptive properties example: os: Ubuntu release: focal variant: cloud type: object x-go-name: Properties public: description: Whether the image is available to unauthenticated users example: false type: boolean x-go-name: Public source: $ref: '#/definitions/ImagesPostSource' type: object x-go-package: github.com/lxc/lxd/shared/api ImagesPostSource: description: ImagesPostSource represents the source of a new LXD image properties: alias: description: Source alias to download from example: focal type: string x-go-name: Alias certificate: description: Source server certificate (if not trusted by system CA) example: X509 PEM certificate type: string x-go-name: Certificate fingerprint: description: Source image fingerprint (for type "image") example: 8ae945c52bb2f2df51c923b04022312f99bbb72c356251f54fa89ea7cf1df1d0 type: string x-go-name: Fingerprint image_type: description: Type of image (container or virtual-machine) example: container type: string x-go-name: ImageType mode: description: Transfer mode (push or pull) example: pull type: string x-go-name: Mode name: description: Instance name (for type "instance" or "snapshot") example: c1/snap0 type: string x-go-name: Name project: description: Source project name example: project1 type: string x-go-name: Project protocol: description: Source server protocol example: simplestreams type: string x-go-name: Protocol secret: description: Source image server secret token (when downloading private images) example: RANDOM-STRING type: string x-go-name: Secret server: description: URL of the source server example: https://images.linuxcontainers.org type: string x-go-name: Server type: description: Type of image source (instance, snapshot, image or url) example: instance type: string x-go-name: Type url: description: Source URL (for type "url") example: https://some-server.com/some-directory/ type: string x-go-name: URL type: object x-go-package: github.com/lxc/lxd/shared/api Instance: properties: architecture: description: Architecture name example: x86_64 type: string x-go-name: Architecture config: additionalProperties: type: string description: Instance configuration (see doc/instances.md) example: security.nesting: "true" type: object x-go-name: Config created_at: description: Instance creation timestamp example: "2021-03-23T20:00:00-04:00" format: date-time type: string x-go-name: CreatedAt description: description: Instance description example: My test instance type: string x-go-name: Description devices: additionalProperties: additionalProperties: type: string type: object description: Instance devices (see doc/instances.md) example: root: path: / pool: default type: disk type: object x-go-name: Devices ephemeral: description: Whether the instance is ephemeral (deleted on shutdown) example: false type: boolean x-go-name: Ephemeral expanded_config: additionalProperties: type: string description: Expanded configuration (all profiles and local config merged) example: security.nesting: "true" type: object x-go-name: ExpandedConfig expanded_devices: additionalProperties: additionalProperties: type: string type: object description: Expanded devices (all profiles and local devices merged) example: root: path: / pool: default type: disk type: object x-go-name: ExpandedDevices last_used_at: description: Last start timestamp example: "2021-03-23T20:00:00-04:00" format: date-time type: string x-go-name: LastUsedAt location: description: What cluster member this instance is located on example: lxd01 type: string x-go-name: Location name: description: Instance name example: foo type: string x-go-name: Name profiles: description: List of profiles applied to the instance example: - default items: type: string type: array x-go-name: Profiles project: description: Instance project name example: foo type: string x-go-name: Project restore: description: If set, instance will be restored to the provided snapshot name example: snap0 type: string x-go-name: Restore stateful: description: Whether the instance currently has saved state on disk example: false type: boolean x-go-name: Stateful status: description: Instance status (see instance_state) example: Running type: string x-go-name: Status status_code: $ref: '#/definitions/StatusCode' type: description: The type of instance (container or virtual-machine) example: container type: string x-go-name: Type title: Instance represents a LXD instance. type: object x-go-package: github.com/lxc/lxd/shared/api InstanceBackup: properties: container_only: description: Whether to ignore snapshots (deprecated, use instance_only) example: false type: boolean x-go-name: ContainerOnly created_at: description: When the backup was cerated example: "2021-03-23T16:38:37.753398689-04:00" format: date-time type: string x-go-name: CreatedAt expires_at: description: When the backup expires (gets auto-deleted) example: "2021-03-23T17:38:37.753398689-04:00" format: date-time type: string x-go-name: ExpiresAt instance_only: description: Whether to ignore snapshots example: false type: boolean x-go-name: InstanceOnly name: description: Backup name example: backup0 type: string x-go-name: Name optimized_storage: description: Whether to use a pool-optimized binary format (instead of plain tarball) example: true type: boolean x-go-name: OptimizedStorage title: InstanceBackup represents a LXD instance backup. type: object x-go-package: github.com/lxc/lxd/shared/api InstanceBackupPost: properties: name: description: New backup name example: backup1 type: string x-go-name: Name title: InstanceBackupPost represents the fields available for the renaming of a instance backup. type: object x-go-package: github.com/lxc/lxd/shared/api InstanceBackupsPost: properties: compression_algorithm: description: What compression algorithm to use example: gzip type: string x-go-name: CompressionAlgorithm container_only: description: Whether to ignore snapshots (deprecated, use instance_only) example: false type: boolean x-go-name: ContainerOnly expires_at: description: When the backup expires (gets auto-deleted) example: "2021-03-23T17:38:37.753398689-04:00" format: date-time type: string x-go-name: ExpiresAt instance_only: description: Whether to ignore snapshots example: false type: boolean x-go-name: InstanceOnly name: description: Backup name example: backup0 type: string x-go-name: Name optimized_storage: description: Whether to use a pool-optimized binary format (instead of plain tarball) example: true type: boolean x-go-name: OptimizedStorage title: InstanceBackupsPost represents the fields available for a new LXD instance backup. type: object x-go-package: github.com/lxc/lxd/shared/api InstanceConsolePost: properties: height: description: Console height in rows (console type only) example: 24 format: int64 type: integer x-go-name: Height type: description: Type of console to attach to (console or vga) example: console type: string x-go-name: Type width: description: Console width in columns (console type only) example: 80 format: int64 type: integer x-go-name: Width title: InstanceConsolePost represents a LXD instance console request. type: object x-go-package: github.com/lxc/lxd/shared/api InstanceExecPost: properties: command: description: Command and its arguments example: - bash items: type: string type: array x-go-name: Command cwd: description: Current working directory for the command example: /home/foo/ type: string x-go-name: Cwd environment: additionalProperties: type: string description: Additional environment to pass to the command example: FOO: BAR type: object x-go-name: Environment group: description: GID of the user to spawn the command as example: 1000 format: uint32 type: integer x-go-name: Group height: description: Terminal height in rows (for interactive) example: 24 format: int64 type: integer x-go-name: Height interactive: description: Whether the command is to be spawned in interactive mode (singled PTY instead of 3 PIPEs) example: true type: boolean x-go-name: Interactive record-output: description: Whether to capture the output for later download (requires non-interactive) type: boolean x-go-name: RecordOutput user: description: UID of the user to spawn the command as example: 1000 format: uint32 type: integer x-go-name: User wait-for-websocket: description: Whether to wait for all websockets to be connected before spawning the command example: true type: boolean x-go-name: WaitForWS width: description: Terminal width in characters (for interactive) example: 80 format: int64 type: integer x-go-name: Width title: InstanceExecPost represents a LXD instance exec request. type: object x-go-package: github.com/lxc/lxd/shared/api InstanceFull: properties: architecture: description: Architecture name example: x86_64 type: string x-go-name: Architecture backups: description: List of backups. items: $ref: '#/definitions/InstanceBackup' type: array x-go-name: Backups config: additionalProperties: type: string description: Instance configuration (see doc/instances.md) example: security.nesting: "true" type: object x-go-name: Config created_at: description: Instance creation timestamp example: "2021-03-23T20:00:00-04:00" format: date-time type: string x-go-name: CreatedAt description: description: Instance description example: My test instance type: string x-go-name: Description devices: additionalProperties: additionalProperties: type: string type: object description: Instance devices (see doc/instances.md) example: root: path: / pool: default type: disk type: object x-go-name: Devices ephemeral: description: Whether the instance is ephemeral (deleted on shutdown) example: false type: boolean x-go-name: Ephemeral expanded_config: additionalProperties: type: string description: Expanded configuration (all profiles and local config merged) example: security.nesting: "true" type: object x-go-name: ExpandedConfig expanded_devices: additionalProperties: additionalProperties: type: string type: object description: Expanded devices (all profiles and local devices merged) example: root: path: / pool: default type: disk type: object x-go-name: ExpandedDevices last_used_at: description: Last start timestamp example: "2021-03-23T20:00:00-04:00" format: date-time type: string x-go-name: LastUsedAt location: description: What cluster member this instance is located on example: lxd01 type: string x-go-name: Location name: description: Instance name example: foo type: string x-go-name: Name profiles: description: List of profiles applied to the instance example: - default items: type: string type: array x-go-name: Profiles project: description: Instance project name example: foo type: string x-go-name: Project restore: description: If set, instance will be restored to the provided snapshot name example: snap0 type: string x-go-name: Restore snapshots: description: List of snapshots. items: $ref: '#/definitions/InstanceSnapshot' type: array x-go-name: Snapshots state: $ref: '#/definitions/InstanceState' stateful: description: Whether the instance currently has saved state on disk example: false type: boolean x-go-name: Stateful status: description: Instance status (see instance_state) example: Running type: string x-go-name: Status status_code: $ref: '#/definitions/StatusCode' type: description: The type of instance (container or virtual-machine) example: container type: string x-go-name: Type title: InstanceFull is a combination of Instance, InstanceBackup, InstanceState and InstanceSnapshot. type: object x-go-package: github.com/lxc/lxd/shared/api InstancePost: properties: container_only: description: Whether snapshots should be discarded (migration only, deprecated, use instance_only) example: false type: boolean x-go-name: ContainerOnly instance_only: description: Whether snapshots should be discarded (migration only) example: false type: boolean x-go-name: InstanceOnly live: description: Whether to perform a live migration (migration only) example: false type: boolean x-go-name: Live migration: description: Whether the instance is being migrated to another server example: false type: boolean x-go-name: Migration name: description: New name for the instance example: bar type: string x-go-name: Name pool: description: Target pool for local cross-pool move example: baz type: string x-go-name: Pool project: description: Target project for local cross-project move example: foo type: string x-go-name: Project target: $ref: '#/definitions/InstancePostTarget' title: InstancePost represents the fields required to rename/move a LXD instance. type: object x-go-package: github.com/lxc/lxd/shared/api InstancePostTarget: properties: certificate: description: The certificate of the migration target example: X509 PEM certificate type: string x-go-name: Certificate operation: description: The operation URL on the remote target example: https://1.2.3.4:8443/1.0/operations/5e8e1638-5345-4c2d-bac9-2c79c8577292 type: string x-go-name: Operation secrets: additionalProperties: type: string description: Migration websockets credentials example: criu: random-string migration: random-string type: object x-go-name: Websockets title: InstancePostTarget represents the migration target host and operation. type: object x-go-package: github.com/lxc/lxd/shared/api InstancePut: properties: architecture: description: Architecture name example: x86_64 type: string x-go-name: Architecture config: additionalProperties: type: string description: Instance configuration (see doc/instances.md) example: security.nesting: "true" type: object x-go-name: Config description: description: Instance description example: My test instance type: string x-go-name: Description devices: additionalProperties: additionalProperties: type: string type: object description: Instance devices (see doc/instances.md) example: root: path: / pool: default type: disk type: object x-go-name: Devices ephemeral: description: Whether the instance is ephemeral (deleted on shutdown) example: false type: boolean x-go-name: Ephemeral profiles: description: List of profiles applied to the instance example: - default items: type: string type: array x-go-name: Profiles restore: description: If set, instance will be restored to the provided snapshot name example: snap0 type: string x-go-name: Restore stateful: description: Whether the instance currently has saved state on disk example: false type: boolean x-go-name: Stateful title: InstancePut represents the modifiable fields of a LXD instance. type: object x-go-package: github.com/lxc/lxd/shared/api InstanceSnapshot: properties: architecture: description: Architecture name example: x86_64 type: string x-go-name: Architecture config: additionalProperties: type: string description: Instance configuration (see doc/instances.md) example: security.nesting: "true" type: object x-go-name: Config created_at: description: Instance creation timestamp example: "2021-03-23T20:00:00-04:00" format: date-time type: string x-go-name: CreatedAt devices: additionalProperties: additionalProperties: type: string type: object description: Instance devices (see doc/instances.md) example: root: path: / pool: default type: disk type: object x-go-name: Devices ephemeral: description: Whether the instance is ephemeral (deleted on shutdown) example: false type: boolean x-go-name: Ephemeral expanded_config: additionalProperties: type: string description: Expanded configuration (all profiles and local config merged) example: security.nesting: "true" type: object x-go-name: ExpandedConfig expanded_devices: additionalProperties: additionalProperties: type: string type: object description: Expanded devices (all profiles and local devices merged) example: root: path: / pool: default type: disk type: object x-go-name: ExpandedDevices expires_at: description: When the snapshot expires (gets auto-deleted) example: "2021-03-23T17:38:37.753398689-04:00" format: date-time type: string x-go-name: ExpiresAt last_used_at: description: Last start timestamp example: "2021-03-23T20:00:00-04:00" format: date-time type: string x-go-name: LastUsedAt name: description: Snapshot name example: foo type: string x-go-name: Name profiles: description: List of profiles applied to the instance example: - default items: type: string type: array x-go-name: Profiles size: description: Size of the snapshot in bytes example: 143360 format: int64 type: integer x-go-name: Size stateful: description: Whether the instance currently has saved state on disk example: false type: boolean x-go-name: Stateful title: InstanceSnapshot represents a LXD instance snapshot. type: object x-go-package: github.com/lxc/lxd/shared/api InstanceSnapshotPost: properties: live: description: Whether to perform a live migration (requires migration) example: false type: boolean x-go-name: Live migration: description: Whether this is a migration request example: false type: boolean x-go-name: Migration name: description: New name for the snapshot example: foo type: string x-go-name: Name target: $ref: '#/definitions/InstancePostTarget' title: InstanceSnapshotPost represents the fields required to rename/move a LXD instance snapshot. type: object x-go-package: github.com/lxc/lxd/shared/api InstanceSnapshotPut: properties: expires_at: description: When the snapshot expires (gets auto-deleted) example: "2021-03-23T17:38:37.753398689-04:00" format: date-time type: string x-go-name: ExpiresAt title: InstanceSnapshotPut represents the modifiable fields of a LXD instance snapshot. type: object x-go-package: github.com/lxc/lxd/shared/api InstanceSnapshotsPost: properties: expires_at: description: When the snapshot expires (gets auto-deleted) example: "2021-03-23T17:38:37.753398689-04:00" format: date-time type: string x-go-name: ExpiresAt name: description: Snapshot name example: snap0 type: string x-go-name: Name stateful: description: Whether the snapshot should include runtime state example: false type: boolean x-go-name: Stateful title: InstanceSnapshotsPost represents the fields available for a new LXD instance snapshot. type: object x-go-package: github.com/lxc/lxd/shared/api InstanceSource: properties: alias: description: Image alias name (for image source) example: ubuntu/20.04 type: string x-go-name: Alias allow_inconsistent: description: Whether to ignore errors when copying (e.g. for volatile files) example: false type: boolean x-go-name: AllowInconsistent base-image: description: Base image fingerprint (for faster migration) example: ed56997f7c5b48e8d78986d2467a26109be6fb9f2d92e8c7b08eb8b6cec7629a type: string x-go-name: BaseImage certificate: description: Certificate (for remote images or migration) example: X509 PEM certificate type: string x-go-name: Certificate container_only: description: Whether the copy should skip the snapshots (for copy, deprecated, use instance_only) example: false type: boolean x-go-name: ContainerOnly fingerprint: description: Image fingerprint (for image source) example: ed56997f7c5b48e8d78986d2467a26109be6fb9f2d92e8c7b08eb8b6cec7629a type: string x-go-name: Fingerprint instance_only: description: Whether the copy should skip the snapshots (for copy) example: false type: boolean x-go-name: InstanceOnly live: description: Whether this is a live migration (for migration) example: false type: boolean x-go-name: Live mode: description: Whether to use pull or push mode (for migration) example: pull type: string x-go-name: Mode operation: description: Remote operation URL (for migration) example: https://1.2.3.4:8443/1.0/operations/1721ae08-b6a8-416a-9614-3f89302466e1 type: string x-go-name: Operation project: description: Source project name (for copy and local image) example: blah type: string x-go-name: Project properties: additionalProperties: type: string description: Image filters (for image source) example: os: Ubuntu release: focal variant: cloud type: object x-go-name: Properties protocol: description: Protocol name (for remote image) example: simplestreams type: string x-go-name: Protocol refresh: description: Whether this is refreshing an existing instance (for migration and copy) example: false type: boolean x-go-name: Refresh secret: description: Remote server secret (for remote private images) example: RANDOM-STRING type: string x-go-name: Secret secrets: additionalProperties: type: string description: Map of migration websockets (for migration) example: criu: RANDOM-STRING rsync: RANDOM-STRING type: object x-go-name: Websockets server: description: Remote server URL (for remote images) example: https://images.linuxcontainers.org type: string x-go-name: Server source: description: Existing instance name or snapshot (for copy) example: foo/snap0 type: string x-go-name: Source type: description: Source type example: image type: string x-go-name: Type title: InstanceSource represents the creation source for a new instance. type: object x-go-package: github.com/lxc/lxd/shared/api InstanceState: properties: cpu: $ref: '#/definitions/InstanceStateCPU' disk: additionalProperties: $ref: '#/definitions/InstanceStateDisk' description: Dict of disk usage type: object x-go-name: Disk memory: $ref: '#/definitions/InstanceStateMemory' network: additionalProperties: $ref: '#/definitions/InstanceStateNetwork' description: Dict of network usage type: object x-go-name: Network pid: description: PID of the runtime example: 7281 format: int64 type: integer x-go-name: Pid processes: description: Number of processes in the instance example: 50 format: int64 type: integer x-go-name: Processes status: description: Current status (Running, Stopped, Frozen or Error) example: Running type: string x-go-name: Status status_code: $ref: '#/definitions/StatusCode' title: InstanceState represents a LXD instance's state. type: object x-go-package: github.com/lxc/lxd/shared/api InstanceStateCPU: properties: usage: description: CPU usage in nanoseconds example: 3637691016 format: int64 type: integer x-go-name: Usage title: InstanceStateCPU represents the cpu information section of a LXD instance's state. type: object x-go-package: github.com/lxc/lxd/shared/api InstanceStateDisk: properties: usage: description: Disk usage in bytes example: 502239232 format: int64 type: integer x-go-name: Usage title: InstanceStateDisk represents the disk information section of a LXD instance's state. type: object x-go-package: github.com/lxc/lxd/shared/api InstanceStateMemory: properties: swap_usage: description: SWAP usage in bytes example: 12297557 format: int64 type: integer x-go-name: SwapUsage swap_usage_peak: description: Peak SWAP usage in bytes example: 12297557 format: int64 type: integer x-go-name: SwapUsagePeak usage: description: Memory usage in bytes example: 73248768 format: int64 type: integer x-go-name: Usage usage_peak: description: Peak memory usage in bytes example: 73785344 format: int64 type: integer x-go-name: UsagePeak title: InstanceStateMemory represents the memory information section of a LXD instance's state. type: object x-go-package: github.com/lxc/lxd/shared/api InstanceStateNetwork: properties: addresses: description: List of IP addresses items: $ref: '#/definitions/InstanceStateNetworkAddress' type: array x-go-name: Addresses counters: $ref: '#/definitions/InstanceStateNetworkCounters' host_name: description: Name of the interface on the host example: vethbbcd39c7 type: string x-go-name: HostName hwaddr: description: MAC address example: 00:16:3e:0c:ee:dd type: string x-go-name: Hwaddr mtu: description: MTU (maximum transmit unit) for the interface example: 1500 format: int64 type: integer x-go-name: Mtu state: description: Administrative state of the interface (up/down) example: up type: string x-go-name: State type: description: Type of interface (broadcast, loopback, point-to-point, ...) example: broadcast type: string x-go-name: Type title: InstanceStateNetwork represents the network information section of a LXD instance's state. type: object x-go-package: github.com/lxc/lxd/shared/api InstanceStateNetworkAddress: description: |- InstanceStateNetworkAddress represents a network address as part of the network section of a LXD instance's state. properties: address: description: IP address example: fd42:4c81:5770:1eaf:216:3eff:fe0c:eedd type: string x-go-name: Address family: description: Network family (inet or inet6) example: inet6 type: string x-go-name: Family netmask: description: Network mask example: "64" type: string x-go-name: Netmask scope: description: Address scope (local, link or global) example: global type: string x-go-name: Scope type: object x-go-package: github.com/lxc/lxd/shared/api InstanceStateNetworkCounters: description: |- InstanceStateNetworkCounters represents packet counters as part of the network section of a LXD instance's state. properties: bytes_received: description: Number of bytes received example: 192021 format: int64 type: integer x-go-name: BytesReceived bytes_sent: description: Number of bytes sent example: 10888579 format: int64 type: integer x-go-name: BytesSent errors_received: description: Number of errors received example: 14 format: int64 type: integer x-go-name: ErrorsReceived errors_sent: description: Number of errors sent example: 41 format: int64 type: integer x-go-name: ErrorsSent packets_dropped_inbound: description: Number of inbound packets dropped example: 179 format: int64 type: integer x-go-name: PacketsDroppedInbound packets_dropped_outbound: description: Number of outbound packets dropped example: 541 format: int64 type: integer x-go-name: PacketsDroppedOutbound packets_received: description: Number of packets received example: 1748 format: int64 type: integer x-go-name: PacketsReceived packets_sent: description: Number of packets sent example: 964 format: int64 type: integer x-go-name: PacketsSent type: object x-go-package: github.com/lxc/lxd/shared/api InstanceStatePut: properties: action: description: State change action (start, stop, restart, freeze, unfreeze) example: start type: string x-go-name: Action force: description: Whether to force the action (for stop and restart) example: false type: boolean x-go-name: Force stateful: description: Whether to store the runtime state (for stop) example: false type: boolean x-go-name: Stateful timeout: description: How long to wait (in s) before giving up (when force isn't set) example: 30 format: int64 type: integer x-go-name: Timeout title: InstanceStatePut represents the modifiable fields of a LXD instance's state. type: object x-go-package: github.com/lxc/lxd/shared/api InstanceType: title: InstanceType represents the type if instance being returned or requested via the API. type: string x-go-package: github.com/lxc/lxd/shared/api InstancesPost: properties: architecture: description: Architecture name example: x86_64 type: string x-go-name: Architecture config: additionalProperties: type: string description: Instance configuration (see doc/instances.md) example: security.nesting: "true" type: object x-go-name: Config description: description: Instance description example: My test instance type: string x-go-name: Description devices: additionalProperties: additionalProperties: type: string type: object description: Instance devices (see doc/instances.md) example: root: path: / pool: default type: disk type: object x-go-name: Devices ephemeral: description: Whether the instance is ephemeral (deleted on shutdown) example: false type: boolean x-go-name: Ephemeral instance_type: description: Cloud instance type (AWS, GCP, Azure, ...) to emulate with limits example: t1.micro type: string x-go-name: InstanceType name: description: Instance name example: foo type: string x-go-name: Name profiles: description: List of profiles applied to the instance example: - default items: type: string type: array x-go-name: Profiles restore: description: If set, instance will be restored to the provided snapshot name example: snap0 type: string x-go-name: Restore source: $ref: '#/definitions/InstanceSource' stateful: description: Whether the instance currently has saved state on disk example: false type: boolean x-go-name: Stateful type: $ref: '#/definitions/InstanceType' title: InstancesPost represents the fields available for a new LXD instance. type: object x-go-package: github.com/lxc/lxd/shared/api InstancesPut: properties: state: $ref: '#/definitions/InstanceStatePut' title: InstancesPut represents the fields available for a mass update. type: object x-go-package: github.com/lxc/lxd/shared/api Network: description: Network represents a LXD network properties: config: additionalProperties: type: string description: Network configuration map (refer to doc/networks.md) example: ipv4.address: 10.0.0.1/24 ipv4.nat: "true" ipv6.address: none type: object x-go-name: Config description: description: Description of the profile example: My new LXD bridge type: string x-go-name: Description locations: description: Cluster members on which the network has been defined example: - lxd01 - lxd02 - lxd03 items: type: string readOnly: true type: array x-go-name: Locations managed: description: Whether this is a LXD managed network example: true readOnly: true type: boolean x-go-name: Managed name: description: The network name example: lxdbr0 readOnly: true type: string x-go-name: Name status: description: The state of the network (for managed network in clusters) example: Created readOnly: true type: string x-go-name: Status type: description: The network type example: bridge readOnly: true type: string x-go-name: Type used_by: description: List of URLs of objects using this profile example: - /1.0/profiles/default - /1.0/instances/c1 items: type: string readOnly: true type: array x-go-name: UsedBy type: object x-go-package: github.com/lxc/lxd/shared/api NetworkACL: properties: config: additionalProperties: type: string description: ACL configuration map (refer to doc/network-acls.md) example: user.mykey: foo type: object x-go-name: Config description: description: Description of the ACL example: Web servers type: string x-go-name: Description egress: description: List of egress rules (order independent) items: $ref: '#/definitions/NetworkACLRule' type: array x-go-name: Egress ingress: description: List of ingress rules (order independent) items: $ref: '#/definitions/NetworkACLRule' type: array x-go-name: Ingress name: description: The new name for the ACL example: bar type: string x-go-name: Name used_by: description: List of URLs of objects using this profile example: - /1.0/instances/c1 - /1.0/instances/v1 - /1.0/networks/lxdbr0 items: type: string readOnly: true type: array x-go-name: UsedBy title: NetworkACL used for displaying an ACL. type: object x-go-package: github.com/lxc/lxd/shared/api NetworkACLPost: properties: name: description: The new name for the ACL example: bar type: string x-go-name: Name title: NetworkACLPost used for renaming an ACL. type: object x-go-package: github.com/lxc/lxd/shared/api NetworkACLPut: properties: config: additionalProperties: type: string description: ACL configuration map (refer to doc/network-acls.md) example: user.mykey: foo type: object x-go-name: Config description: description: Description of the ACL example: Web servers type: string x-go-name: Description egress: description: List of egress rules (order independent) items: $ref: '#/definitions/NetworkACLRule' type: array x-go-name: Egress ingress: description: List of ingress rules (order independent) items: $ref: '#/definitions/NetworkACLRule' type: array x-go-name: Ingress title: NetworkACLPut used for updating an ACL. type: object x-go-package: github.com/lxc/lxd/shared/api NetworkACLRule: description: Refer to doc/network-acls.md for details. properties: action: description: Action to perform on rule match example: allow type: string x-go-name: Action description: description: Description of the rule example: Allow DNS queries to Google DNS type: string x-go-name: Description destination: description: Destination address example: 8.8.8.8/32,8.8.4.4/32 type: string x-go-name: Destination destination_port: description: Destination port example: "53" type: string x-go-name: DestinationPort icmp_code: description: ICMP message code (for ICMP protocol) example: "0" type: string x-go-name: ICMPCode icmp_type: description: Type of ICMP message (for ICMP protocol) example: "8" type: string x-go-name: ICMPType protocol: description: Protocol example: udp type: string x-go-name: Protocol source: description: Source address example: '@internal' type: string x-go-name: Source source_port: description: Source port example: "1234" type: string x-go-name: SourcePort state: description: State of the rule example: enabled type: string x-go-name: State title: NetworkACLRule represents a single rule in an ACL ruleset. type: object x-go-package: github.com/lxc/lxd/shared/api NetworkACLsPost: properties: config: additionalProperties: type: string description: ACL configuration map (refer to doc/network-acls.md) example: user.mykey: foo type: object x-go-name: Config description: description: Description of the ACL example: Web servers type: string x-go-name: Description egress: description: List of egress rules (order independent) items: $ref: '#/definitions/NetworkACLRule' type: array x-go-name: Egress ingress: description: List of ingress rules (order independent) items: $ref: '#/definitions/NetworkACLRule' type: array x-go-name: Ingress name: description: The new name for the ACL example: bar type: string x-go-name: Name title: NetworkACLsPost used for creating an ACL. type: object x-go-package: github.com/lxc/lxd/shared/api NetworkForward: properties: config: additionalProperties: type: string description: Forward configuration map (refer to doc/network-forwards.md) example: user.mykey: foo type: object x-go-name: Config description: description: Description of the forward listen IP example: My public IP forward type: string x-go-name: Description listen_address: description: The listen address of the forward example: 192.0.2.1 type: string x-go-name: ListenAddress location: description: What cluster member this record was found on example: lxd01 type: string x-go-name: Location ports: description: Port forwards (optional) items: $ref: '#/definitions/NetworkForwardPort' type: array x-go-name: Ports title: NetworkForward used for displaying an network address forward. type: object x-go-package: github.com/lxc/lxd/shared/api NetworkForwardPort: description: NetworkForwardPort represents a port specification in a network address forward properties: description: description: Description of the forward port example: My web server forward type: string x-go-name: Description listen_port: description: ListenPort(s) to forward (comma delimited ranges) example: 80,81,8080-8090 type: string x-go-name: ListenPort protocol: description: Protocol for port forward (either tcp or udp) example: tcp type: string x-go-name: Protocol target_address: description: TargetAddress to forward ListenPorts to example: 198.51.100.2 type: string x-go-name: TargetAddress target_port: description: TargetPort(s) to forward ListenPorts to (allows for many-to-one) example: 80,81,8080-8090 type: string x-go-name: TargetPort type: object x-go-package: github.com/lxc/lxd/shared/api NetworkForwardPut: description: NetworkForwardPut represents the modifiable fields of a LXD network address forward properties: config: additionalProperties: type: string description: Forward configuration map (refer to doc/network-forwards.md) example: user.mykey: foo type: object x-go-name: Config description: description: Description of the forward listen IP example: My public IP forward type: string x-go-name: Description ports: description: Port forwards (optional) items: $ref: '#/definitions/NetworkForwardPort' type: array x-go-name: Ports type: object x-go-package: github.com/lxc/lxd/shared/api NetworkForwardsPost: description: NetworkForwardsPost represents the fields of a new LXD network address forward properties: config: additionalProperties: type: string description: Forward configuration map (refer to doc/network-forwards.md) example: user.mykey: foo type: object x-go-name: Config description: description: Description of the forward listen IP example: My public IP forward type: string x-go-name: Description listen_address: description: The listen address of the forward example: 192.0.2.1 type: string x-go-name: ListenAddress ports: description: Port forwards (optional) items: $ref: '#/definitions/NetworkForwardPort' type: array x-go-name: Ports type: object x-go-package: github.com/lxc/lxd/shared/api NetworkLease: description: NetworkLease represents a DHCP lease properties: address: description: The IP address example: 10.0.0.98 type: string x-go-name: Address hostname: description: The hostname associated with the record example: c1 type: string x-go-name: Hostname hwaddr: description: The MAC address example: 00:16:3e:2c:89:d9 type: string x-go-name: Hwaddr location: description: What cluster member this record was found on example: lxd01 type: string x-go-name: Location type: description: The type of record (static or dynamic) example: dynamic type: string x-go-name: Type type: object x-go-package: github.com/lxc/lxd/shared/api NetworkPeer: properties: config: additionalProperties: type: string description: Peer configuration map (refer to doc/network-peers.md) example: user.mykey: foo type: object x-go-name: Config description: description: Description of the peer example: Peering with network1 in project1 type: string x-go-name: Description name: description: Name of the peer example: project1-network1 readOnly: true type: string x-go-name: Name status: description: The state of the peering example: Pending readOnly: true type: string x-go-name: Status target_network: description: Name of the target network example: network1 readOnly: true type: string x-go-name: TargetNetwork target_project: description: Name of the target project example: project1 readOnly: true type: string x-go-name: TargetProject used_by: description: List of URLs of objects using this network peering example: - /1.0/network-acls/test - /1.0/network-acls/foo items: type: string readOnly: true type: array x-go-name: UsedBy title: NetworkPeer used for displaying a LXD network peering. type: object x-go-package: github.com/lxc/lxd/shared/api NetworkPeerPut: description: NetworkPeerPut represents the modifiable fields of a LXD network peering properties: config: additionalProperties: type: string description: Peer configuration map (refer to doc/network-peers.md) example: user.mykey: foo type: object x-go-name: Config description: description: Description of the peer example: Peering with network1 in project1 type: string x-go-name: Description type: object x-go-package: github.com/lxc/lxd/shared/api NetworkPeersPost: description: NetworkPeersPost represents the fields of a new LXD network peering properties: config: additionalProperties: type: string description: Peer configuration map (refer to doc/network-peers.md) example: user.mykey: foo type: object x-go-name: Config description: description: Description of the peer example: Peering with network1 in project1 type: string x-go-name: Description name: description: Name of the peer example: project1-network1 type: string x-go-name: Name target_network: description: Name of the target network example: network1 type: string x-go-name: TargetNetwork target_project: description: Name of the target project example: project1 type: string x-go-name: TargetProject type: object x-go-package: github.com/lxc/lxd/shared/api NetworkPost: description: NetworkPost represents the fields required to rename a LXD network properties: name: description: The new name for the network example: lxdbr1 type: string x-go-name: Name type: object x-go-package: github.com/lxc/lxd/shared/api NetworkPut: description: NetworkPut represents the modifiable fields of a LXD network properties: config: additionalProperties: type: string description: Network configuration map (refer to doc/networks.md) example: ipv4.address: 10.0.0.1/24 ipv4.nat: "true" ipv6.address: none type: object x-go-name: Config description: description: Description of the profile example: My new LXD bridge type: string x-go-name: Description type: object x-go-package: github.com/lxc/lxd/shared/api NetworkState: description: NetworkState represents the network state properties: addresses: description: List of addresses items: $ref: '#/definitions/NetworkStateAddress' type: array x-go-name: Addresses bond: $ref: '#/definitions/NetworkStateBond' bridge: $ref: '#/definitions/NetworkStateBridge' counters: $ref: '#/definitions/NetworkStateCounters' hwaddr: description: MAC address example: 00:16:3e:5a:83:57 type: string x-go-name: Hwaddr mtu: description: MTU example: 1500 format: int64 type: integer x-go-name: Mtu ovn: $ref: '#/definitions/NetworkStateOVN' state: description: Link state example: up type: string x-go-name: State type: description: Interface type example: broadcast type: string x-go-name: Type vlan: $ref: '#/definitions/NetworkStateVLAN' type: object x-go-package: github.com/lxc/lxd/shared/api NetworkStateAddress: description: NetworkStateAddress represents a network address properties: address: description: IP address example: 10.0.0.1 type: string x-go-name: Address family: description: Address family example: inet type: string x-go-name: Family netmask: description: IP netmask (CIDR) example: "24" type: string x-go-name: Netmask scope: description: Address scope example: global type: string x-go-name: Scope type: object x-go-package: github.com/lxc/lxd/shared/api NetworkStateBond: description: NetworkStateBond represents bond specific state properties: down_delay: description: Delay on link down (ms) example: 0 format: uint64 type: integer x-go-name: DownDelay lower_devices: description: List of devices that are part of the bond example: - eth0 - eth1 items: type: string type: array x-go-name: LowerDevices mii_frequency: description: How often to check for link state (ms) example: 100 format: uint64 type: integer x-go-name: MIIFrequency mii_state: description: Bond link state example: up type: string x-go-name: MIIState mode: description: Bonding mode example: 802.3ad type: string x-go-name: Mode transmit_policy: description: Transmit balancing policy example: layer3+4 type: string x-go-name: TransmitPolicy up_delay: description: Delay on link up (ms) example: 0 format: uint64 type: integer x-go-name: UpDelay type: object x-go-package: github.com/lxc/lxd/shared/api NetworkStateBridge: description: NetworkStateBridge represents bridge specific state properties: forward_delay: description: Delay on port join (ms) example: 1500 format: uint64 type: integer x-go-name: ForwardDelay id: description: Bridge ID example: 8000.0a0f7c6edbd9 type: string x-go-name: ID stp: description: Whether STP is enabled example: false type: boolean x-go-name: STP upper_devices: description: List of devices that are in the bridge example: - eth0 - eth1 items: type: string type: array x-go-name: UpperDevices vlan_default: description: Default VLAN ID example: 1 format: uint64 type: integer x-go-name: VLANDefault vlan_filtering: description: Whether VLAN filtering is enabled example: false type: boolean x-go-name: VLANFiltering type: object x-go-package: github.com/lxc/lxd/shared/api NetworkStateCounters: description: NetworkStateCounters represents packet counters properties: bytes_received: description: Number of bytes received example: 250542118 format: int64 type: integer x-go-name: BytesReceived bytes_sent: description: Number of bytes sent example: 17524040140 format: int64 type: integer x-go-name: BytesSent packets_received: description: Number of packets received example: 1182515 format: int64 type: integer x-go-name: PacketsReceived packets_sent: description: Number of packets sent example: 1567934 format: int64 type: integer x-go-name: PacketsSent type: object x-go-package: github.com/lxc/lxd/shared/api NetworkStateOVN: description: NetworkStateOVN represents OVN specific state properties: chassis: description: OVN network chassis name type: string x-go-name: Chassis type: object x-go-package: github.com/lxc/lxd/shared/api NetworkStateVLAN: description: NetworkStateVLAN represents VLAN specific state properties: lower_device: description: Parent device example: eth0 type: string x-go-name: LowerDevice vid: description: VLAN ID example: 100 format: uint64 type: integer x-go-name: VID type: object x-go-package: github.com/lxc/lxd/shared/api NetworkZone: properties: config: additionalProperties: type: string description: Zone configuration map (refer to doc/network-zones.md) example: user.mykey: foo type: object x-go-name: Config description: description: Description of the network zone example: Internal domain type: string x-go-name: Description name: description: The name of the zone (DNS domain name) example: example.net type: string x-go-name: Name used_by: description: List of URLs of objects using this network zone example: - /1.0/networks/foo - /1.0/networks/bar items: type: string readOnly: true type: array x-go-name: UsedBy title: NetworkZone represents a network zone (DNS). type: object x-go-package: github.com/lxc/lxd/shared/api NetworkZonePut: description: NetworkZonePut represents the modifiable fields of a LXD network zone properties: config: additionalProperties: type: string description: Zone configuration map (refer to doc/network-zones.md) example: user.mykey: foo type: object x-go-name: Config description: description: Description of the network zone example: Internal domain type: string x-go-name: Description type: object x-go-package: github.com/lxc/lxd/shared/api NetworkZoneRecord: properties: config: additionalProperties: type: string description: Advanced configuration for the record example: user.mykey: foo type: object x-go-name: Config description: description: Description of the record example: SPF record type: string x-go-name: Description entries: description: Entries in the record items: $ref: '#/definitions/NetworkZoneRecordEntry' type: array x-go-name: Entries name: description: The name of the record example: '@' type: string x-go-name: Name title: NetworkZoneRecord represents a network zone (DNS) record. type: object x-go-package: github.com/lxc/lxd/shared/api NetworkZoneRecordEntry: description: NetworkZoneRecordEntry represents the fields in a record entry properties: ttl: description: TTL for the entry example: 3600 format: uint64 type: integer x-go-name: TTL type: description: Type of DNS entry example: TXT type: string x-go-name: Type value: description: Value for the record example: v=spf1 mx ~all type: string x-go-name: Value type: object x-go-package: github.com/lxc/lxd/shared/api NetworkZoneRecordPut: description: NetworkZoneRecordPut represents the modifiable fields of a LXD network zone record properties: config: additionalProperties: type: string description: Advanced configuration for the record example: user.mykey: foo type: object x-go-name: Config description: description: Description of the record example: SPF record type: string x-go-name: Description entries: description: Entries in the record items: $ref: '#/definitions/NetworkZoneRecordEntry' type: array x-go-name: Entries type: object x-go-package: github.com/lxc/lxd/shared/api NetworkZoneRecordsPost: description: NetworkZoneRecordsPost represents the fields of a new LXD network zone record properties: config: additionalProperties: type: string description: Advanced configuration for the record example: user.mykey: foo type: object x-go-name: Config description: description: Description of the record example: SPF record type: string x-go-name: Description entries: description: Entries in the record items: $ref: '#/definitions/NetworkZoneRecordEntry' type: array x-go-name: Entries name: description: The record name in the zone example: '@' type: string x-go-name: Name type: object x-go-package: github.com/lxc/lxd/shared/api NetworkZonesPost: description: NetworkZonesPost represents the fields of a new LXD network zone properties: config: additionalProperties: type: string description: Zone configuration map (refer to doc/network-zones.md) example: user.mykey: foo type: object x-go-name: Config description: description: Description of the network zone example: Internal domain type: string x-go-name: Description name: description: The name of the zone (DNS domain name) example: example.net type: string x-go-name: Name type: object x-go-package: github.com/lxc/lxd/shared/api NetworksPost: description: NetworksPost represents the fields of a new LXD network properties: config: additionalProperties: type: string description: Network configuration map (refer to doc/networks.md) example: ipv4.address: 10.0.0.1/24 ipv4.nat: "true" ipv6.address: none type: object x-go-name: Config description: description: Description of the profile example: My new LXD bridge type: string x-go-name: Description name: description: The name of the new network example: lxdbr1 type: string x-go-name: Name type: description: The network type (refer to doc/networks.md) example: bridge type: string x-go-name: Type type: object x-go-package: github.com/lxc/lxd/shared/api Operation: description: Operation represents a LXD background operation properties: class: description: Type of operation (task, token or websocket) example: websocket type: string x-go-name: Class created_at: description: Operation creation time example: "2021-03-23T17:38:37.753398689-04:00" format: date-time type: string x-go-name: CreatedAt description: description: Description of the operation example: Executing command type: string x-go-name: Description err: description: Operation error mesage example: Some error message type: string x-go-name: Err id: description: UUID of the operation example: 6916c8a6-9b7d-4abd-90b3-aedfec7ec7da type: string x-go-name: ID location: description: What cluster member this record was found on example: lxd01 type: string x-go-name: Location may_cancel: description: Whether the operation can be canceled example: false type: boolean x-go-name: MayCancel metadata: additionalProperties: type: object description: Operation specific metadata example: command: - bash environment: HOME: /root LANG: C.UTF-8 PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin TERM: xterm USER: root fds: "0": da3046cf02c0116febf4ef3fe4eaecdf308e720c05e5a9c730ce1a6f15417f66 "1": 05896879d8692607bd6e4a09475667da3b5f6714418ab0ee0e5720b4c57f754b interactive: true type: object x-go-name: Metadata resources: additionalProperties: items: type: string type: array description: Affected resourcs example: containers: - /1.0/containers/foo instances: - /1.0/instances/foo type: object x-go-name: Resources status: description: Status name example: Running type: string x-go-name: Status status_code: $ref: '#/definitions/StatusCode' updated_at: description: Operation last change example: "2021-03-23T17:38:37.753398689-04:00" format: date-time type: string x-go-name: UpdatedAt type: object x-go-package: github.com/lxc/lxd/shared/api Profile: description: Profile represents a LXD profile properties: config: additionalProperties: type: string description: Instance configuration map (refer to doc/instances.md) example: limits.cpu: "4" limits.memory: 4GiB type: object x-go-name: Config description: description: Description of the profile example: Medium size instances type: string x-go-name: Description devices: additionalProperties: additionalProperties: type: string type: object description: List of devices example: eth0: name: eth0 network: lxdbr0 type: nic root: path: / pool: default type: disk type: object x-go-name: Devices name: description: The profile name example: foo readOnly: true type: string x-go-name: Name used_by: description: List of URLs of objects using this profile example: - /1.0/instances/c1 - /1.0/instances/v1 items: type: string readOnly: true type: array x-go-name: UsedBy type: object x-go-package: github.com/lxc/lxd/shared/api ProfilePost: description: ProfilePost represents the fields required to rename a LXD profile properties: name: description: The new name for the profile example: bar type: string x-go-name: Name type: object x-go-package: github.com/lxc/lxd/shared/api ProfilePut: description: ProfilePut represents the modifiable fields of a LXD profile properties: config: additionalProperties: type: string description: Instance configuration map (refer to doc/instances.md) example: limits.cpu: "4" limits.memory: 4GiB type: object x-go-name: Config description: description: Description of the profile example: Medium size instances type: string x-go-name: Description devices: additionalProperties: additionalProperties: type: string type: object description: List of devices example: eth0: name: eth0 network: lxdbr0 type: nic root: path: / pool: default type: disk type: object x-go-name: Devices type: object x-go-package: github.com/lxc/lxd/shared/api ProfilesPost: description: ProfilesPost represents the fields of a new LXD profile properties: config: additionalProperties: type: string description: Instance configuration map (refer to doc/instances.md) example: limits.cpu: "4" limits.memory: 4GiB type: object x-go-name: Config description: description: Description of the profile example: Medium size instances type: string x-go-name: Description devices: additionalProperties: additionalProperties: type: string type: object description: List of devices example: eth0: name: eth0 network: lxdbr0 type: nic root: path: / pool: default type: disk type: object x-go-name: Devices name: description: The name of the new profile example: foo type: string x-go-name: Name type: object x-go-package: github.com/lxc/lxd/shared/api Project: description: Project represents a LXD project properties: config: additionalProperties: type: string description: Project configuration map (refer to doc/projects.md) example: features.networks: "false" features.profiles: "true" type: object x-go-name: Config description: description: Description of the project example: My new project type: string x-go-name: Description name: description: The project name example: foo readOnly: true type: string x-go-name: Name used_by: description: List of URLs of objects using this project example: - /1.0/images/0e60015346f06627f10580d56ac7fffd9ea775f6d4f25987217d5eed94910a20 - /1.0/instances/c1 - /1.0/networks/lxdbr0 - /1.0/profiles/default - /1.0/storage-pools/default/volumes/custom/blah items: type: string readOnly: true type: array x-go-name: UsedBy type: object x-go-package: github.com/lxc/lxd/shared/api ProjectPost: description: ProjectPost represents the fields required to rename a LXD project properties: name: description: The new name for the project example: bar type: string x-go-name: Name type: object x-go-package: github.com/lxc/lxd/shared/api ProjectPut: description: ProjectPut represents the modifiable fields of a LXD project properties: config: additionalProperties: type: string description: Project configuration map (refer to doc/projects.md) example: features.networks: "false" features.profiles: "true" type: object x-go-name: Config description: description: Description of the project example: My new project type: string x-go-name: Description type: object x-go-package: github.com/lxc/lxd/shared/api ProjectState: description: ProjectState represents the current running state of a LXD project properties: resources: additionalProperties: $ref: '#/definitions/ProjectStateResource' description: Allocated and used resources example: containers: limit: 10 usage: 4 cpu: limit: 20 usage: 16 readOnly: true type: object x-go-name: Resources type: object x-go-package: github.com/lxc/lxd/shared/api ProjectStateResource: description: ProjectStateResource represents the state of a particular resource in a LXD project properties: Limit: description: Limit for the resource (-1 if none) example: 10 format: int64 type: integer Usage: description: Current usage for the resource example: 4 format: int64 type: integer type: object x-go-package: github.com/lxc/lxd/shared/api ProjectsPost: description: ProjectsPost represents the fields of a new LXD project properties: config: additionalProperties: type: string description: Project configuration map (refer to doc/projects.md) example: features.networks: "false" features.profiles: "true" type: object x-go-name: Config description: description: Description of the project example: My new project type: string x-go-name: Description name: description: The name of the new project example: foo type: string x-go-name: Name type: object x-go-package: github.com/lxc/lxd/shared/api Resources: description: Resources represents the system resources available for LXD properties: cpu: $ref: '#/definitions/ResourcesCPU' gpu: $ref: '#/definitions/ResourcesGPU' memory: $ref: '#/definitions/ResourcesMemory' network: $ref: '#/definitions/ResourcesNetwork' pci: $ref: '#/definitions/ResourcesPCI' storage: $ref: '#/definitions/ResourcesStorage' system: $ref: '#/definitions/ResourcesSystem' usb: $ref: '#/definitions/ResourcesUSB' type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesCPU: description: ResourcesCPU represents the cpu resources available on the system properties: architecture: description: Architecture name example: x86_64 type: string x-go-name: Architecture sockets: description: List of CPU sockets items: $ref: '#/definitions/ResourcesCPUSocket' type: array x-go-name: Sockets total: description: Total number of CPU threads (from all sockets and cores) example: 1 format: uint64 type: integer x-go-name: Total type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesCPUCache: description: ResourcesCPUCache represents a CPU cache properties: level: description: Cache level (usually a number from 1 to 3) example: 1 format: uint64 type: integer x-go-name: Level size: description: Size of the cache (in bytes) example: 32768 format: uint64 type: integer x-go-name: Size type: description: Type of cache (Data, Instruction, Unified, ...) example: Data type: string x-go-name: Type type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesCPUCore: description: ResourcesCPUCore represents a CPU core on the system properties: core: description: Core identifier within the socket example: 0 format: uint64 type: integer x-go-name: Core die: description: What die the CPU is a part of (for chiplet designs) example: 0 format: uint64 type: integer x-go-name: Die frequency: description: Current frequency example: 3500 format: uint64 type: integer x-go-name: Frequency threads: description: List of threads items: $ref: '#/definitions/ResourcesCPUThread' type: array x-go-name: Threads type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesCPUSocket: description: ResourcesCPUSocket represents a CPU socket on the system properties: cache: description: List of CPU caches items: $ref: '#/definitions/ResourcesCPUCache' type: array x-go-name: Cache cores: description: List of CPU cores items: $ref: '#/definitions/ResourcesCPUCore' type: array x-go-name: Cores frequency: description: Current CPU frequency (Mhz) example: 3499 format: uint64 type: integer x-go-name: Frequency frequency_minimum: description: Minimum CPU frequency (Mhz) example: 400 format: uint64 type: integer x-go-name: FrequencyMinimum frequency_turbo: description: Maximum CPU frequency (Mhz) example: 3500 format: uint64 type: integer x-go-name: FrequencyTurbo name: description: Product name example: Intel(R) Core(TM) i5-7300U CPU @ 2.60GHz type: string x-go-name: Name socket: description: Socket number example: 0 format: uint64 type: integer x-go-name: Socket vendor: description: Vendor name example: GenuineIntel type: string x-go-name: Vendor type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesCPUThread: description: ResourcesCPUThread represents a CPU thread on the system properties: id: description: Thread ID (used for CPU pinning) example: 0 format: int64 type: integer x-go-name: ID isolated: description: Whether the thread has been isolated (outside of normal scheduling) example: false type: boolean x-go-name: Isolated numa_node: description: NUMA node the thread is a part of example: 0 format: uint64 type: integer x-go-name: NUMANode online: description: Whether the thread is online (enabled) example: true type: boolean x-go-name: Online thread: description: Thread identifier within the core example: 0 format: uint64 type: integer x-go-name: Thread type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesGPU: description: ResourcesGPU represents the GPU resources available on the system properties: cards: description: List of GPUs items: $ref: '#/definitions/ResourcesGPUCard' type: array x-go-name: Cards total: description: Total number of GPUs example: 1 format: uint64 type: integer x-go-name: Total type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesGPUCard: description: ResourcesGPUCard represents a GPU card on the system properties: driver: description: Kernel driver currently associated with the GPU example: i915 type: string x-go-name: Driver driver_version: description: Version of the kernel driver example: 5.8.0-36-generic type: string x-go-name: DriverVersion drm: $ref: '#/definitions/ResourcesGPUCardDRM' mdev: additionalProperties: $ref: '#/definitions/ResourcesGPUCardMdev' description: Map of available mediated device profiles example: null type: object x-go-name: Mdev numa_node: description: NUMA node the GPU is a part of example: 0 format: uint64 type: integer x-go-name: NUMANode nvidia: $ref: '#/definitions/ResourcesGPUCardNvidia' pci_address: description: PCI address example: "0000:00:02.0" type: string x-go-name: PCIAddress product: description: Name of the product example: HD Graphics 620 type: string x-go-name: Product product_id: description: PCI ID of the product example: "5916" type: string x-go-name: ProductID sriov: $ref: '#/definitions/ResourcesGPUCardSRIOV' usb_address: description: USB address (for USB cards) example: "2:7" type: string x-go-name: USBAddress vendor: description: Name of the vendor example: Intel Corporation type: string x-go-name: Vendor vendor_id: description: PCI ID of the vendor example: "8086" type: string x-go-name: VendorID type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesGPUCardDRM: description: ResourcesGPUCardDRM represents the Linux DRM configuration of the GPU properties: card_device: description: Card device number example: "226:0" type: string x-go-name: CardDevice card_name: description: Card device name example: card0 type: string x-go-name: CardName control_device: description: Control device number example: "226:0" type: string x-go-name: ControlDevice control_name: description: Control device name example: controlD64 type: string x-go-name: ControlName id: description: DRM card ID example: 0 format: uint64 type: integer x-go-name: ID render_device: description: Render device number example: 226:128 type: string x-go-name: RenderDevice render_name: description: Render device name example: renderD128 type: string x-go-name: RenderName type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesGPUCardMdev: description: ResourcesGPUCardMdev represents the mediated devices configuration of the GPU properties: api: description: The mechanism used by this device example: vfio-pci type: string x-go-name: API available: description: Number of available devices of this profile example: 2 format: uint64 type: integer x-go-name: Available description: description: Profile description example: 'low_gm_size: 128MB\nhigh_gm_size: 512MB\nfence: 4\nresolution: 1920x1200\nweight: 4' type: string x-go-name: Description devices: description: List of active devices (UUIDs) example: - 42200aac-0977-495c-8c9e-6c51b9092a01 - b4950c00-1437-41d9-88f6-28d61cf9b9ef items: type: string type: array x-go-name: Devices name: description: Profile name example: i915-GVTg_V5_8 type: string x-go-name: Name type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesGPUCardNvidia: description: ResourcesGPUCardNvidia represents additional information for NVIDIA GPUs properties: architecture: description: Architecture (generation) example: "3.5" type: string x-go-name: Architecture brand: description: Brand name example: GeForce type: string x-go-name: Brand card_device: description: Card device number example: "195:0" type: string x-go-name: CardDevice card_name: description: Card device name example: nvidia0 type: string x-go-name: CardName cuda_version: description: Version of the CUDA API example: "11.0" type: string x-go-name: CUDAVersion model: description: Model name example: GeForce GT 730 type: string x-go-name: Model nvrm_version: description: Version of the NVRM (usually driver version) example: 450.102.04 type: string x-go-name: NVRMVersion uuid: description: GPU UUID example: GPU-6ddadebd-dafe-2db9-f10f-125719770fd3 type: string x-go-name: UUID type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesGPUCardSRIOV: description: ResourcesGPUCardSRIOV represents the SRIOV configuration of the GPU properties: current_vfs: description: Number of VFs currently configured example: 0 format: uint64 type: integer x-go-name: CurrentVFs maximum_vfs: description: Maximum number of supported VFs example: 0 format: uint64 type: integer x-go-name: MaximumVFs vfs: description: List of VFs (as additional GPU devices) example: null items: $ref: '#/definitions/ResourcesGPUCard' type: array x-go-name: VFs type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesMemory: description: ResourcesMemory represents the memory resources available on the system properties: hugepages_size: description: Size of memory huge pages (bytes) example: 2097152 format: uint64 type: integer x-go-name: HugepagesSize hugepages_total: description: Total of memory huge pages (bytes) example: 429284917248 format: uint64 type: integer x-go-name: HugepagesTotal hugepages_used: description: Used memory huge pages (bytes) example: 429284917248 format: uint64 type: integer x-go-name: HugepagesUsed nodes: description: List of NUMA memory nodes example: null items: $ref: '#/definitions/ResourcesMemoryNode' type: array x-go-name: Nodes total: description: Total system memory (bytes) example: 687194767360 format: uint64 type: integer x-go-name: Total used: description: Used system memory (bytes) example: 557450502144 format: uint64 type: integer x-go-name: Used type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesMemoryNode: description: ResourcesMemoryNode represents the node-specific memory resources available on the system properties: hugepages_total: description: Total of memory huge pages (bytes) example: 214536552448 format: uint64 type: integer x-go-name: HugepagesTotal hugepages_used: description: Used memory huge pages (bytes) example: 214536552448 format: uint64 type: integer x-go-name: HugepagesUsed numa_node: description: NUMA node identifier example: 0 format: uint64 type: integer x-go-name: NUMANode total: description: Total system memory (bytes) example: 343597383680 format: uint64 type: integer x-go-name: Total used: description: Used system memory (bytes) example: 264880439296 format: uint64 type: integer x-go-name: Used type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesNetwork: description: ResourcesNetwork represents the network cards available on the system properties: cards: description: List of network cards items: $ref: '#/definitions/ResourcesNetworkCard' type: array x-go-name: Cards total: description: Total number of network cards example: 1 format: uint64 type: integer x-go-name: Total type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesNetworkCard: description: ResourcesNetworkCard represents a network card on the system properties: driver: description: Kernel driver currently associated with the card example: atlantic type: string x-go-name: Driver driver_version: description: Version of the kernel driver example: 5.8.0-36-generic type: string x-go-name: DriverVersion firmware_version: description: Current firmware version example: 3.1.100 type: string x-go-name: FirmwareVersion numa_node: description: NUMA node the card is a part of example: 0 format: uint64 type: integer x-go-name: NUMANode pci_address: description: PCI address (for PCI cards) example: 0000:0d:00.0 type: string x-go-name: PCIAddress ports: description: List of ports on the card items: $ref: '#/definitions/ResourcesNetworkCardPort' type: array x-go-name: Ports product: description: Name of the product example: AQC107 NBase-T/IEEE type: string x-go-name: Product product_id: description: PCI ID of the product example: 87b1 type: string x-go-name: ProductID sriov: $ref: '#/definitions/ResourcesNetworkCardSRIOV' usb_address: description: USB address (for USB cards) example: "2:7" type: string x-go-name: USBAddress vendor: description: Name of the vendor example: Aquantia Corp. type: string x-go-name: Vendor vendor_id: description: PCI ID of the vendor example: 1d6a type: string x-go-name: VendorID type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesNetworkCardPort: description: ResourcesNetworkCardPort represents a network port on the system properties: address: description: MAC address example: 00:23:a4:01:01:6f type: string x-go-name: Address auto_negotiation: description: Whether auto negotiation is used example: true type: boolean x-go-name: AutoNegotiation id: description: Port identifier (interface name) example: eth0 type: string x-go-name: ID infiniband: $ref: '#/definitions/ResourcesNetworkCardPortInfiniband' link_detected: description: Whether a link was detected example: true type: boolean x-go-name: LinkDetected link_duplex: description: Duplex type example: full type: string x-go-name: LinkDuplex link_speed: description: Current speed (Mbit/s) example: 10000 format: uint64 type: integer x-go-name: LinkSpeed port: description: Port number example: 0 format: uint64 type: integer x-go-name: Port port_type: description: Current port type example: twisted pair type: string x-go-name: PortType protocol: description: Transport protocol example: ethernet type: string x-go-name: Protocol supported_modes: description: List of supported modes example: - 100baseT/Full - 1000baseT/Full - 2500baseT/Full - 5000baseT/Full - 10000baseT/Full items: type: string type: array x-go-name: SupportedModes supported_ports: description: List of supported port types example: - twisted pair items: type: string type: array x-go-name: SupportedPorts transceiver_type: description: Type of transceiver used example: internal type: string x-go-name: TransceiverType type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesNetworkCardPortInfiniband: description: ResourcesNetworkCardPortInfiniband represents the Linux Infiniband configuration for the port properties: issm_device: description: ISSM device number example: 231:64 type: string x-go-name: IsSMDevice issm_name: description: ISSM device name example: issm0 type: string x-go-name: IsSMName mad_device: description: MAD device number example: "231:0" type: string x-go-name: MADDevice mad_name: description: MAD device name example: umad0 type: string x-go-name: MADName verb_device: description: Verb device number example: 231:192 type: string x-go-name: VerbDevice verb_name: description: Verb device name example: uverbs0 type: string x-go-name: VerbName type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesNetworkCardSRIOV: description: ResourcesNetworkCardSRIOV represents the SRIOV configuration of the network card properties: current_vfs: description: Number of VFs currently configured example: 0 format: uint64 type: integer x-go-name: CurrentVFs maximum_vfs: description: Maximum number of supported VFs example: 0 format: uint64 type: integer x-go-name: MaximumVFs vfs: description: List of VFs (as additional Network devices) example: null items: $ref: '#/definitions/ResourcesNetworkCard' type: array x-go-name: VFs type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesPCI: description: ResourcesPCI represents the PCI devices available on the system properties: devices: description: List of PCI devices items: $ref: '#/definitions/ResourcesPCIDevice' type: array x-go-name: Devices total: description: Total number of PCI devices example: 1 format: uint64 type: integer x-go-name: Total type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesPCIDevice: description: ResourcesPCIDevice represents a PCI device properties: driver: description: Kernel driver currently associated with the GPU example: mgag200 type: string x-go-name: Driver driver_version: description: Version of the kernel driver example: 5.8.0-36-generic type: string x-go-name: DriverVersion iommu_group: description: IOMMU group number example: 20 format: uint64 type: integer x-go-name: IOMMUGroup numa_node: description: NUMA node the card is a part of example: 0 format: uint64 type: integer x-go-name: NUMANode pci_address: description: PCI address example: "0000:07:03.0" type: string x-go-name: PCIAddress product: description: Name of the product example: MGA G200eW WPCM450 type: string x-go-name: Product product_id: description: PCI ID of the product example: "0532" type: string x-go-name: ProductID vendor: description: Name of the vendor example: Matrox Electronics Systems Ltd. type: string x-go-name: Vendor vendor_id: description: PCI ID of the vendor example: 102b type: string x-go-name: VendorID type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesStorage: description: ResourcesStorage represents the local storage properties: disks: description: List of disks items: $ref: '#/definitions/ResourcesStorageDisk' type: array x-go-name: Disks total: description: Total number of partitions example: 1 format: uint64 type: integer x-go-name: Total type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesStorageDisk: description: ResourcesStorageDisk represents a disk properties: block_size: description: Block size example: 512 format: uint64 type: integer x-go-name: BlockSize device: description: Device number example: "259:0" type: string x-go-name: Device device_id: description: Device by-id identifier example: nvme-eui.0000000001000000e4d25cafae2e4c00 type: string x-go-name: DeviceID device_path: description: Device by-path identifier example: pci-0000:05:00.0-nvme-1 type: string x-go-name: DevicePath firmware_version: description: Current firmware version example: PSF121C type: string x-go-name: FirmwareVersion id: description: ID of the disk (device name) example: nvme0n1 type: string x-go-name: ID model: description: Disk model name example: INTEL SSDPEKKW256G7 type: string x-go-name: Model numa_node: description: NUMA node the disk is a part of example: 0 format: uint64 type: integer x-go-name: NUMANode partitions: description: List of partitions items: $ref: '#/definitions/ResourcesStorageDiskPartition' type: array x-go-name: Partitions pci_address: description: PCI address example: "0000:05:00.0" type: string x-go-name: PCIAddress read_only: description: Whether the disk is read-only example: false type: boolean x-go-name: ReadOnly removable: description: Whether the disk is removable (hot-plug) example: false type: boolean x-go-name: Removable rpm: description: Rotation speed (RPM) example: 0 format: uint64 type: integer x-go-name: RPM serial: description: Serial number example: BTPY63440ARH256D type: string x-go-name: Serial size: description: Total size of the disk (bytes) example: 256060514304 format: uint64 type: integer x-go-name: Size type: description: Storage type example: nvme type: string x-go-name: Type usb_address: description: USB address example: "3:5" type: string x-go-name: USBAddress wwn: description: WWN identifier example: eui.0000000001000000e4d25cafae2e4c00 type: string x-go-name: WWN type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesStorageDiskPartition: description: ResourcesStorageDiskPartition represents a partition on a disk properties: device: description: Device number example: "259:1" type: string x-go-name: Device id: description: ID of the partition (device name) example: nvme0n1p1 type: string x-go-name: ID partition: description: Partition number example: 1 format: uint64 type: integer x-go-name: Partition read_only: description: Whether the partition is read-only example: false type: boolean x-go-name: ReadOnly size: description: Size of the partition (bytes) example: 254933278208 format: uint64 type: integer x-go-name: Size type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesStoragePool: description: ResourcesStoragePool represents the resources available to a given storage pool properties: inodes: $ref: '#/definitions/ResourcesStoragePoolInodes' space: $ref: '#/definitions/ResourcesStoragePoolSpace' type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesStoragePoolInodes: description: ResourcesStoragePoolInodes represents the inodes available to a given storage pool properties: total: description: Total inodes example: 30709993797 format: uint64 type: integer x-go-name: Total used: description: Used inodes example: 23937695 format: uint64 type: integer x-go-name: Used type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesStoragePoolSpace: description: ResourcesStoragePoolSpace represents the space available to a given storage pool properties: total: description: Total disk space (bytes) example: 420100937728 format: uint64 type: integer x-go-name: Total used: description: Used disk space (bytes) example: 343537419776 format: uint64 type: integer x-go-name: Used type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesSystem: description: ResourcesSystem represents the system properties: chassis: $ref: '#/definitions/ResourcesSystemChassis' family: description: System family example: ThinkPad X1 Carbon 5th type: string x-go-name: Family firmware: $ref: '#/definitions/ResourcesSystemFirmware' motherboard: $ref: '#/definitions/ResourcesSystemMotherboard' product: description: System model example: 20HRCTO1WW type: string x-go-name: Product serial: description: System serial number example: PY3DD4X9 type: string x-go-name: Serial sku: description: |- System nanufacturer SKU LENOVO_MT_20HR_BU_Think_FM_ThinkPad X1 Carbon 5th type: string x-go-name: Sku type: description: System type (unknown, physical, virtual-machine, container, ...) example: physical type: string x-go-name: Type uuid: description: System UUID example: 7fa1c0cc-2271-11b2-a85c-aab32a05d71a type: string x-go-name: UUID vendor: description: System vendor example: LENOVO type: string x-go-name: Vendor version: description: System version example: ThinkPad X1 Carbon 5th type: string x-go-name: Version type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesSystemChassis: description: ResourcesSystemChassis represents the system chassis properties: serial: description: Chassis serial number example: PY3DD4X9 type: string x-go-name: Serial type: description: Chassis type example: Notebook type: string x-go-name: Type vendor: description: Chassis vendor example: Lenovo type: string x-go-name: Vendor version: description: Chassis version/revision example: None type: string x-go-name: Version type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesSystemFirmware: description: ResourcesSystemFirmware represents the system firmware properties: date: description: Firmware build date example: 10/14/2020 type: string x-go-name: Date vendor: description: Firmware vendor example: Lenovo type: string x-go-name: Vendor version: description: Firmware version example: N1MET64W (1.49) type: string x-go-name: Version type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesSystemMotherboard: description: ResourcesSystemMotherboard represents the motherboard properties: product: description: Motherboard model example: 20HRCTO1WW type: string x-go-name: Product serial: description: Motherboard serial number example: L3CF4FX003A type: string x-go-name: Serial vendor: description: Motherboard vendor example: Lenovo type: string x-go-name: Vendor version: description: Motherboard version/revision example: None type: string x-go-name: Version type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesUSB: description: ResourcesUSB represents the USB devices available on the system properties: devices: description: List of USB devices items: $ref: '#/definitions/ResourcesUSBDevice' type: array x-go-name: Devices total: description: Total number of USB devices example: 1 format: uint64 type: integer x-go-name: Total type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesUSBDevice: description: ResourcesUSBDevice represents a USB device properties: bus_address: description: USB address (bus) example: 1 format: uint64 type: integer x-go-name: BusAddress device_address: description: USB address (device) example: 3 format: uint64 type: integer x-go-name: DeviceAddress interfaces: description: List of USB interfaces items: $ref: '#/definitions/ResourcesUSBDeviceInterface' type: array x-go-name: Interfaces product: description: Name of the product example: Hermon USB hidmouse Device type: string x-go-name: Product product_id: description: USB ID of the product example: "2221" type: string x-go-name: ProductID speed: description: Transfer speed (Mbit/s) example: 12 format: double type: number x-go-name: Speed vendor: description: Name of the vendor example: ATEN International Co., Ltd type: string x-go-name: Vendor vendor_id: description: USB ID of the vendor example: "0557" type: string x-go-name: VendorID type: object x-go-package: github.com/lxc/lxd/shared/api ResourcesUSBDeviceInterface: description: ResourcesUSBDeviceInterface represents a USB device interface properties: class: description: Class of USB interface example: Human Interface Device type: string x-go-name: Class class_id: description: ID of the USB interface class example: 3 format: uint64 type: integer x-go-name: ClassID driver: description: Kernel driver currently associated with the device example: usbhid type: string x-go-name: Driver driver_version: description: Version of the kernel driver example: 5.8.0-36-generic type: string x-go-name: DriverVersion number: description: Interface number example: 0 format: uint64 type: integer x-go-name: Number subclass: description: Sub class of the interface example: Boot Interface Subclass type: string x-go-name: SubClass subclass_id: description: ID of the USB interface sub class example: 1 format: uint64 type: integer x-go-name: SubClassID type: object x-go-package: github.com/lxc/lxd/shared/api Server: description: Server represents a LXD server properties: api_extensions: description: List of supported API extensions example: - etag - patch - network - storage items: type: string readOnly: true type: array x-go-name: APIExtensions api_status: description: Support status of the current API (one of "devel", "stable" or "deprecated") example: stable readOnly: true type: string x-go-name: APIStatus api_version: description: API version number example: "1.0" readOnly: true type: string x-go-name: APIVersion auth: description: Whether the client is trusted (one of "trusted" or "untrusted") example: untrusted readOnly: true type: string x-go-name: Auth auth_methods: description: List of supported authentication methods example: - tls - candid items: type: string readOnly: true type: array x-go-name: AuthMethods config: additionalProperties: type: object description: Server configuration map (refer to doc/server.md) example: core.https_address: :8443 core.trust_password: true type: object x-go-name: Config environment: $ref: '#/definitions/ServerEnvironment' public: description: Whether the server is public-only (only public endpoints are implemented) example: false readOnly: true type: boolean x-go-name: Public type: object x-go-package: github.com/lxc/lxd/shared/api ServerEnvironment: description: ServerEnvironment represents the read-only environment fields of a LXD server properties: addresses: description: List of addresses the server is listening on example: - :8443 items: type: string type: array x-go-name: Addresses architectures: description: List of architectures supported by the server example: - x86_64 - i686 items: type: string type: array x-go-name: Architectures certificate: description: Server certificate as PEM encoded X509 example: X509 PEM certificate type: string x-go-name: Certificate certificate_fingerprint: description: Server certificate fingerprint as SHA256 example: fd200419b271f1dc2a5591b693cc5774b7f234e1ff8c6b78ad703b6888fe2b69 type: string x-go-name: CertificateFingerprint driver: description: List of supported instance drivers (separate by " | ") example: lxc | qemu type: string x-go-name: Driver driver_version: description: List of supported instance driver versions (separate by " | ") example: 4.0.7 | 5.2.0 type: string x-go-name: DriverVersion firewall: description: Current firewall driver example: nftables type: string x-go-name: Firewall kernel: description: OS kernel name example: Linux type: string x-go-name: Kernel kernel_architecture: description: OS kernel architecture example: x86_64 type: string x-go-name: KernelArchitecture kernel_features: additionalProperties: type: string description: Map of kernel features that were tested on startup example: netnsid_getifaddrs: "true" seccomp_listener: "true" type: object x-go-name: KernelFeatures kernel_version: description: Kernel version example: 5.4.0-36-generic type: string x-go-name: KernelVersion lxc_features: additionalProperties: type: string description: Map of LXC features that were tested on startup example: cgroup2: "true" devpts_fd: "true" pidfd: "true" type: object x-go-name: LXCFeatures os_name: description: Name of the operating system (Linux distribution) example: Ubuntu type: string x-go-name: OSName os_version: description: Version of the operating system (Linux distribution) example: "20.04" type: string x-go-name: OSVersion project: description: Current project name example: default type: string x-go-name: Project server: description: Server implementation name example: lxd type: string x-go-name: Server server_clustered: description: Whether the server is part of a cluster example: false type: boolean x-go-name: ServerClustered server_name: description: Server hostname example: castiana type: string x-go-name: ServerName server_pid: description: PID of the LXD process example: 1453969 format: int64 type: integer x-go-name: ServerPid server_version: description: Server version example: "4.11" type: string x-go-name: ServerVersion storage: description: List of active storage drivers (separate by " | ") example: dir | zfs type: string x-go-name: Storage storage_supported_drivers: description: List of supported storage drivers items: $ref: '#/definitions/ServerStorageDriverInfo' type: array x-go-name: StorageSupportedDrivers storage_version: description: List of active storage driver versions (separate by " | ") example: 1 | 0.8.4-1ubuntu11 type: string x-go-name: StorageVersion type: object x-go-package: github.com/lxc/lxd/shared/api ServerPut: description: ServerPut represents the modifiable fields of a LXD server configuration properties: config: additionalProperties: type: object description: Server configuration map (refer to doc/server.md) example: core.https_address: :8443 core.trust_password: true type: object x-go-name: Config type: object x-go-package: github.com/lxc/lxd/shared/api ServerStorageDriverInfo: description: ServerStorageDriverInfo represents the read-only info about a storage driver properties: Name: description: Name of the driver example: zfs type: string Remote: description: Whether the driver has remote volumes example: false type: boolean Version: description: Version of the driver example: 0.8.4-1ubuntu11 type: string type: object x-go-package: github.com/lxc/lxd/shared/api ServerUntrusted: description: ServerUntrusted represents a LXD server for an untrusted client properties: api_extensions: description: List of supported API extensions example: - etag - patch - network - storage items: type: string readOnly: true type: array x-go-name: APIExtensions api_status: description: Support status of the current API (one of "devel", "stable" or "deprecated") example: stable readOnly: true type: string x-go-name: APIStatus api_version: description: API version number example: "1.0" readOnly: true type: string x-go-name: APIVersion auth: description: Whether the client is trusted (one of "trusted" or "untrusted") example: untrusted readOnly: true type: string x-go-name: Auth auth_methods: description: List of supported authentication methods example: - tls - candid items: type: string readOnly: true type: array x-go-name: AuthMethods public: description: Whether the server is public-only (only public endpoints are implemented) example: false readOnly: true type: boolean x-go-name: Public type: object x-go-package: github.com/lxc/lxd/shared/api StatusCode: description: StatusCode represents a valid LXD operation and container status format: int64 type: integer x-go-package: github.com/lxc/lxd/shared/api StoragePool: properties: config: additionalProperties: type: string description: Storage pool configuration map (refer to doc/storage.md) example: volume.block.filesystem: ext4 volume.size: 50GiB type: object x-go-name: Config description: description: Description of the storage pool example: Local SSD pool type: string x-go-name: Description driver: description: Storage pool driver (btrfs, ceph, cephfs, dir, lvm or zfs) example: zfs type: string x-go-name: Driver locations: description: Cluster members on which the storage pool has been defined example: - lxd01 - lxd02 - lxd03 items: type: string readOnly: true type: array x-go-name: Locations name: description: Storage pool name example: local type: string x-go-name: Name status: description: Pool status (Pending, Created, Errored or Unknown) example: Created readOnly: true type: string x-go-name: Status used_by: description: List of URLs of objects using this storage pool example: - /1.0/profiles/default - /1.0/instances/c1 items: type: string type: array x-go-name: UsedBy title: StoragePool represents the fields of a LXD storage pool. type: object x-go-package: github.com/lxc/lxd/shared/api StoragePoolPut: properties: config: additionalProperties: type: string description: Storage pool configuration map (refer to doc/storage.md) example: volume.block.filesystem: ext4 volume.size: 50GiB type: object x-go-name: Config description: description: Description of the storage pool example: Local SSD pool type: string x-go-name: Description title: StoragePoolPut represents the modifiable fields of a LXD storage pool. type: object x-go-package: github.com/lxc/lxd/shared/api StoragePoolVolumeBackup: description: StoragePoolVolumeBackup represents a LXD volume backup properties: created_at: description: When the backup was cerated example: "2021-03-23T16:38:37.753398689-04:00" format: date-time type: string x-go-name: CreatedAt expires_at: description: When the backup expires (gets auto-deleted) example: "2021-03-23T17:38:37.753398689-04:00" format: date-time type: string x-go-name: ExpiresAt name: description: Backup name example: backup0 type: string x-go-name: Name optimized_storage: description: Whether to use a pool-optimized binary format (instead of plain tarball) example: true type: boolean x-go-name: OptimizedStorage volume_only: description: Whether to ignore snapshots example: false type: boolean x-go-name: VolumeOnly type: object x-go-package: github.com/lxc/lxd/shared/api StoragePoolVolumeBackupPost: description: StoragePoolVolumeBackupPost represents the fields available for the renaming of a volume backup properties: name: description: New backup name example: backup1 type: string x-go-name: Name type: object x-go-package: github.com/lxc/lxd/shared/api StoragePoolVolumeBackupsPost: description: StoragePoolVolumeBackupsPost represents the fields available for a new LXD volume backup properties: compression_algorithm: description: What compression algorithm to use example: gzip type: string x-go-name: CompressionAlgorithm expires_at: description: When the backup expires (gets auto-deleted) example: "2021-03-23T17:38:37.753398689-04:00" format: date-time type: string x-go-name: ExpiresAt name: description: Backup name example: backup0 type: string x-go-name: Name optimized_storage: description: Whether to use a pool-optimized binary format (instead of plain tarball) example: true type: boolean x-go-name: OptimizedStorage volume_only: description: Whether to ignore snapshots example: false type: boolean x-go-name: VolumeOnly type: object x-go-package: github.com/lxc/lxd/shared/api StoragePoolsPost: description: StoragePoolsPost represents the fields of a new LXD storage pool properties: config: additionalProperties: type: string description: Storage pool configuration map (refer to doc/storage.md) example: volume.block.filesystem: ext4 volume.size: 50GiB type: object x-go-name: Config description: description: Description of the storage pool example: Local SSD pool type: string x-go-name: Description driver: description: Storage pool driver (btrfs, ceph, cephfs, dir, lvm or zfs) example: zfs type: string x-go-name: Driver name: description: Storage pool name example: local type: string x-go-name: Name type: object x-go-package: github.com/lxc/lxd/shared/api StorageVolume: properties: config: additionalProperties: type: string description: Storage volume configuration map (refer to doc/storage.md) example: size: 50GiB zfs.remove_snapshots: "true" type: object x-go-name: Config content_type: description: Volume content type (filesystem or block) example: filesystem type: string x-go-name: ContentType description: description: Description of the storage volume example: My custom volume type: string x-go-name: Description location: description: What cluster member this record was found on example: lxd01 type: string x-go-name: Location name: description: Volume name example: foo type: string x-go-name: Name restore: description: Name of a snapshot to restore example: snap0 type: string x-go-name: Restore type: description: Volume type example: custom type: string x-go-name: Type used_by: description: List of URLs of objects using this storage volume example: - /1.0/instances/blah items: type: string type: array x-go-name: UsedBy title: StorageVolume represents the fields of a LXD storage volume. type: object x-go-package: github.com/lxc/lxd/shared/api StorageVolumePost: description: StorageVolumePost represents the fields required to rename a LXD storage pool volume properties: migration: description: Initiate volume migration example: false type: boolean x-go-name: Migration name: description: New volume name example: foo type: string x-go-name: Name pool: description: New storage pool example: remote type: string x-go-name: Pool project: description: New project name example: foo type: string x-go-name: Project target: $ref: '#/definitions/StorageVolumePostTarget' volume_only: description: Whether snapshots should be discarded (migration only) example: false type: boolean x-go-name: VolumeOnly type: object x-go-package: github.com/lxc/lxd/shared/api StorageVolumePostTarget: description: StorageVolumePostTarget represents the migration target host and operation properties: certificate: description: The certificate of the migration target example: X509 PEM certificate type: string x-go-name: Certificate operation: description: Remote operation URL (for migration) example: https://1.2.3.4:8443/1.0/operations/1721ae08-b6a8-416a-9614-3f89302466e1 type: string x-go-name: Operation secrets: additionalProperties: type: string description: Migration websockets credentials example: migration: random-string type: object x-go-name: Websockets type: object x-go-package: github.com/lxc/lxd/shared/api StorageVolumePut: description: StorageVolumePut represents the modifiable fields of a LXD storage volume properties: config: additionalProperties: type: string description: Storage volume configuration map (refer to doc/storage.md) example: size: 50GiB zfs.remove_snapshots: "true" type: object x-go-name: Config description: description: Description of the storage volume example: My custom volume type: string x-go-name: Description restore: description: Name of a snapshot to restore example: snap0 type: string x-go-name: Restore type: object x-go-package: github.com/lxc/lxd/shared/api StorageVolumeSnapshot: description: StorageVolumeSnapshot represents a LXD storage volume snapshot properties: config: additionalProperties: type: string description: Storage volume configuration map (refer to doc/storage.md) example: size: 50GiB zfs.remove_snapshots: "true" type: object x-go-name: Config content_type: description: The content type (filesystem or block) example: filesystem type: string x-go-name: ContentType description: description: Description of the storage volume example: My custom volume type: string x-go-name: Description expires_at: description: When the snapshot expires (gets auto-deleted) example: "2021-03-23T17:38:37.753398689-04:00" format: date-time type: string x-go-name: ExpiresAt name: description: Snapshot name example: snap0 type: string x-go-name: Name type: object x-go-package: github.com/lxc/lxd/shared/api StorageVolumeSnapshotPost: description: StorageVolumeSnapshotPost represents the fields required to rename/move a LXD storage volume snapshot properties: name: description: New snapshot name example: snap1 type: string x-go-name: Name type: object x-go-package: github.com/lxc/lxd/shared/api StorageVolumeSnapshotPut: description: StorageVolumeSnapshotPut represents the modifiable fields of a LXD storage volume properties: description: description: Description of the storage volume example: My custom volume type: string x-go-name: Description expires_at: description: When the snapshot expires (gets auto-deleted) example: "2021-03-23T17:38:37.753398689-04:00" format: date-time type: string x-go-name: ExpiresAt type: object x-go-package: github.com/lxc/lxd/shared/api StorageVolumeSnapshotsPost: description: StorageVolumeSnapshotsPost represents the fields available for a new LXD storage volume snapshot properties: expires_at: description: When the snapshot expires (gets auto-deleted) example: "2021-03-23T17:38:37.753398689-04:00" format: date-time type: string x-go-name: ExpiresAt name: description: Snapshot name example: snap0 type: string x-go-name: Name type: object x-go-package: github.com/lxc/lxd/shared/api StorageVolumeSource: description: StorageVolumeSource represents the creation source for a new storage volume properties: certificate: description: Certificate (for migration) example: X509 PEM certificate type: string x-go-name: Certificate mode: description: Whether to use pull or push mode (for migration) example: pull type: string x-go-name: Mode name: description: Source volume name (for copy) example: foo type: string x-go-name: Name operation: description: Remote operation URL (for migration) example: https://1.2.3.4:8443/1.0/operations/1721ae08-b6a8-416a-9614-3f89302466e1 type: string x-go-name: Operation pool: description: Source storage pool (for copy) example: local type: string x-go-name: Pool project: description: Source project name example: foo type: string x-go-name: Project refresh: description: Whether existing destination volume should be refreshed example: false type: boolean x-go-name: Refresh secrets: additionalProperties: type: string description: Map of migration websockets (for migration) example: rsync: RANDOM-STRING type: object x-go-name: Websockets type: description: Source type (copy or migration) example: copy type: string x-go-name: Type volume_only: description: Whether snapshots should be discarded (for migration) example: false type: boolean x-go-name: VolumeOnly type: object x-go-package: github.com/lxc/lxd/shared/api StorageVolumeState: description: StorageVolumeState represents the live state of the volume properties: usage: $ref: '#/definitions/StorageVolumeStateUsage' type: object x-go-package: github.com/lxc/lxd/shared/api StorageVolumeStateUsage: description: StorageVolumeStateUsage represents the disk usage of a volume properties: used: description: Used space in bytes example: 1693552640 format: uint64 type: integer x-go-name: Used type: object x-go-package: github.com/lxc/lxd/shared/api StorageVolumesPost: description: StorageVolumesPost represents the fields of a new LXD storage pool volume properties: config: additionalProperties: type: string description: Storage volume configuration map (refer to doc/storage.md) example: size: 50GiB zfs.remove_snapshots: "true" type: object x-go-name: Config content_type: description: Volume content type (filesystem or block) example: filesystem type: string x-go-name: ContentType description: description: Description of the storage volume example: My custom volume type: string x-go-name: Description name: description: Volume name example: foo type: string x-go-name: Name restore: description: Name of a snapshot to restore example: snap0 type: string x-go-name: Restore source: $ref: '#/definitions/StorageVolumeSource' type: description: Volume type (container, custom, image or virtual-machine) example: custom type: string x-go-name: Type type: object x-go-package: github.com/lxc/lxd/shared/api Warning: properties: count: description: The number of times this warning occurred example: 1 format: int64 type: integer x-go-name: Count entity_url: description: The entity affected by this warning example: /1.0/instances/c1?project=default type: string x-go-name: EntityURL first_seen_at: description: The first time this warning occurred example: "2021-03-23T17:38:37.753398689-04:00" format: date-time type: string x-go-name: FirstSeenAt last_message: description: The warning message example: Couldn't find the CGroup blkio.weight, disk priority will be ignored type: string x-go-name: LastMessage last_seen_at: description: The last time this warning occurred example: "2021-03-23T17:38:37.753398689-04:00" format: date-time type: string x-go-name: LastSeenAt location: description: What cluster member this warning occurred on example: node1 type: string x-go-name: Location project: description: The project the warning occurred in example: default type: string x-go-name: Project severity: description: The severity of this warning example: low type: string x-go-name: Severity status: description: Status of the warning (new, acknowledged, or resolved) example: new type: string x-go-name: Status type: description: Type type of warning example: Couldn't find CGroup type: string x-go-name: Type uuid: description: UUID of the warning example: e9e9da0d-2538-4351-8047-46d4a8ae4dbb type: string x-go-name: UUID title: Warning represents a warning entry. type: object x-go-package: github.com/lxc/lxd/shared/api WarningPut: properties: status: description: Status of the warning (new, acknowledged, or resolved) example: new type: string x-go-name: Status title: WarningPut represents the modifiable fields of a warning. type: object x-go-package: github.com/lxc/lxd/shared/api info: contact: email: lxc-devel@lists.linuxcontainers.org name: LXD upstream url: https://github.com/lxc/lxd description: |- This is the REST API used by all LXD clients. Internal endpoints aren't included in this documentation.
The LXD API is available over both a local unix+http and remote https API.
Authentication for local users relies on group membership and access to the unix socket.
For remote users, the default authentication method is TLS client
certificates with a macaroon based (candid) authentication method also
supported.
license:
name: Apache-2.0
url: https://www.apache.org/licenses/LICENSE-2.0
title: LXD external REST API
version: "1.0"
paths:
/:
get:
description: |-
Returns a list of supported API versions (URLs).
Internal API endpoints are not reported as those aren't versioned and
should only be used by LXD itself.
operationId: api_get
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example:
- /1.0
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
summary: Get the supported API enpoints
tags:
- server
/1.0:
get:
description: Shows the full server environment and configuration.
operationId: server_get
parameters:
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: Server environment and configuration
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/Server'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"500":
$ref: '#/responses/InternalServerError'
summary: Get the server environment and configuration
tags:
- server
patch:
consumes:
- application/json
description: Updates a subset of the server configuration.
operationId: server_patch
parameters:
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Server configuration
in: body
name: server
required: true
schema:
$ref: '#/definitions/ServerPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the server configuration
tags:
- server
put:
consumes:
- application/json
description: Updates the entire server configuration.
operationId: server_put
parameters:
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Server configuration
in: body
name: server
required: true
schema:
$ref: '#/definitions/ServerPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the server configuration
tags:
- server
/1.0/certificates:
get:
description: Returns a list of trusted certificates (URLs).
operationId: certificates_get
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/certificates/390fdd27ed5dc2408edc11fe602eafceb6c025ddbad9341dfdcb1056a8dd98b1",
"/1.0/certificates/22aee3f051f96abe6d7756892eecabf4b4b22e2ba877840a4ca981e9ea54030a"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the trusted certificates
tags:
- certificates
post:
consumes:
- application/json
description: |-
Adds a certificate to the trust store.
In this mode, the `password` property is always ignored.
operationId: certificates_post
parameters:
- description: Certificate
in: body
name: certificate
required: true
schema:
$ref: '#/definitions/CertificatesPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Add a trusted certificate
tags:
- certificates
/1.0/certificates/{fingerprint}:
delete:
description: Removes the certificate from the trust store.
operationId: certificate_delete
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete the trusted certificate
tags:
- certificates
get:
description: Gets a specific certificate entry from the trust store.
operationId: certificate_get
produces:
- application/json
responses:
"200":
description: Certificate
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/Certificate'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the trusted certificate
tags:
- certificates
patch:
consumes:
- application/json
description: Updates a subset of the certificate configuration.
operationId: certificate_patch
parameters:
- description: Certificate configuration
in: body
name: certificate
required: true
schema:
$ref: '#/definitions/CertificatePut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the trusted certificate
tags:
- certificates
put:
consumes:
- application/json
description: Updates the entire certificate configuration.
operationId: certificate_put
parameters:
- description: Certificate configuration
in: body
name: certificate
required: true
schema:
$ref: '#/definitions/CertificatePut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the trusted certificate
tags:
- certificates
/1.0/certificates?public:
post:
consumes:
- application/json
description: |-
Adds a certificate to the trust store as an untrusted user.
In this mode, the `password` property must be set to the correct value.
The `certificate` field can be omitted in which case the TLS client
certificate in use for the connection will be retrieved and added to the
trust store.
The `?public` part of the URL isn't required, it's simply used to
separate the two behaviors of this endpoint.
operationId: certificates_post_untrusted
parameters:
- description: Certificate
in: body
name: certificate
required: true
schema:
$ref: '#/definitions/CertificatesPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Add a trusted certificate
tags:
- certificates
/1.0/certificates?recursion=1:
get:
description: Returns a list of trusted certificates (structs).
operationId: certificates_get_recursion1
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of certificates
items:
$ref: '#/definitions/Certificate'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the trusted certificates
tags:
- certificates
/1.0/cluster:
get:
description: Gets the current cluster configuration.
operationId: cluster_get
produces:
- application/json
responses:
"200":
description: Cluster configuration
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/Cluster'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the cluster configuration
tags:
- cluster
put:
consumes:
- application/json
description: Updates the entire cluster configuration.
operationId: cluster_put
parameters:
- description: Cluster configuration
in: body
name: cluster
required: true
schema:
$ref: '#/definitions/ClusterPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the cluster configuration
tags:
- cluster
/1.0/cluster/certificate:
put:
consumes:
- application/json
description: |-
Replaces existing cluster certificate and reloads LXD on each cluster
member.
operationId: clustering_update_cert
parameters:
- description: Cluster certificate replace request
in: body
name: cluster
required: true
schema:
$ref: '#/definitions/ClusterCertificatePut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the certificate for the cluster
tags:
- cluster
/1.0/cluster/groups:
get:
description: Returns a list of cluster groups (URLs).
operationId: cluster_groups_get
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/cluster/groups/lxd01",
"/1.0/cluster/groups/lxd02"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the cluster groups
tags:
- cluster-groups
post:
consumes:
- application/json
description: Creates a new cluster group.
operationId: cluster_groups_post
parameters:
- description: Cluster group to create
in: body
name: cluster
required: true
schema:
$ref: '#/definitions/ClusterGroupsPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Create a cluster group.
tags:
- cluster
/1.0/cluster/groups/{name}:
delete:
description: Removes the cluster group.
operationId: cluster_group_delete
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete the cluster group.
tags:
- cluster-groups
get:
description: Gets a specific cluster group.
operationId: cluster_group_get
produces:
- application/json
responses:
"200":
description: Cluster group
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/ClusterGroup'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the cluster group
tags:
- cluster-groups
patch:
consumes:
- application/json
description: Updates the cluster group configuration.
operationId: cluster_group_patch
parameters:
- description: cluster group configuration
in: body
name: cluster group
required: true
schema:
$ref: '#/definitions/ClusterGroupPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the cluster group
tags:
- cluster-groups
post:
consumes:
- application/json
description: Renames an existing cluster group.
operationId: cluster_group_post
parameters:
- description: Cluster group rename request
in: body
name: name
required: true
schema:
$ref: '#/definitions/ClusterGroupPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Rename the cluster group
tags:
- cluster-groups
put:
consumes:
- application/json
description: Updates the entire cluster group configuration.
operationId: cluster_group_put
parameters:
- description: cluster group configuration
in: body
name: cluster group
required: true
schema:
$ref: '#/definitions/ClusterGroupPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the cluster group
tags:
- cluster-groups
/1.0/cluster/groups?recursion=1:
get:
description: Returns a list of cluster groups (structs).
operationId: cluster_groups_get_recursion1
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of cluster groups
items:
$ref: '#/definitions/ClusterGroup'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the cluster groups
tags:
- cluster-groups
/1.0/cluster/members:
get:
description: Returns a list of cluster members (URLs).
operationId: cluster_members_get
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/cluster/members/lxd01",
"/1.0/cluster/members/lxd02"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the cluster members
tags:
- cluster
post:
consumes:
- application/json
description: Requests a join token to add a cluster member.
operationId: cluster_members_post
parameters:
- description: Cluster member add request
in: body
name: cluster
required: true
schema:
$ref: '#/definitions/ClusterMembersPost'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Request a join token
tags:
- cluster
/1.0/cluster/members/{name}:
delete:
description: Removes the member from the cluster.
operationId: cluster_member_delete
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete the cluster member
tags:
- cluster
get:
description: Gets a specific cluster member.
operationId: cluster_member_get
produces:
- application/json
responses:
"200":
description: Profile
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/ClusterMember'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the cluster member
tags:
- cluster
patch:
consumes:
- application/json
description: Updates a subset of the cluster member configuration.
operationId: cluster_member_patch
parameters:
- description: Cluster member configuration
in: body
name: cluster
required: true
schema:
$ref: '#/definitions/ClusterMemberPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the cluster member
tags:
- cluster
post:
consumes:
- application/json
description: Renames an existing cluster member.
operationId: cluster_member_post
parameters:
- description: Cluster member rename request
in: body
name: cluster
required: true
schema:
$ref: '#/definitions/ClusterMemberPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Rename the cluster member
tags:
- cluster
put:
consumes:
- application/json
description: Updates the entire cluster member configuration.
operationId: cluster_member_put
parameters:
- description: Cluster member configuration
in: body
name: cluster
required: true
schema:
$ref: '#/definitions/ClusterMemberPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the cluster member
tags:
- cluster
/1.0/cluster/members/{name}/state:
post:
consumes:
- application/json
description: Evacuates or restores a cluster member.
operationId: cluster_member_state_post
parameters:
- description: Cluster member state
in: body
name: cluster
required: true
schema:
$ref: '#/definitions/ClusterMemberStatePost'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Evacuate or restore a cluster member
tags:
- cluster
/1.0/cluster/members?recursion=1:
get:
description: Returns a list of cluster members (structs).
operationId: cluster_members_get_recursion1
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of cluster members
items:
$ref: '#/definitions/ClusterMember'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the cluster members
tags:
- cluster
/1.0/events:
get:
description: Connects to the event API using websocket.
operationId: events_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Event type(s), comma separated (valid types are logging, operation
or lifecycle)
example: logging,lifecycle
in: query
name: type
type: string
produces:
- application/json
responses:
"200":
description: Websocket message (JSON)
schema:
$ref: '#/definitions/Event'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the event stream
tags:
- server
/1.0/images:
get:
description: Returns a list of images (URLs).
operationId: images_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Collection filter
example: default
in: query
name: filter
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/images/06b86454720d36b20f94e31c6812e05ec51c1b568cf3a8abd273769d213394bb",
"/1.0/images/084dd79dd1360fd25a2479eb46674c2a5ef3022a40fe03c91ab3603e3402b8e1"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the images
tags:
- images
post:
consumes:
- application/json
description: Adds a new image to the image store.
operationId: images_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Image
in: body
name: image
schema:
$ref: '#/definitions/ImagesPost'
- description: Raw image file
in: body
name: raw_image
- description: Push secret for server to server communication
example: RANDOM-STRING
in: header
name: X-LXD-secret
schema:
type: string
- description: Expected fingerprint when pushing a raw image
in: header
name: X-LXD-fingerprint
schema:
type: string
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Add an image
tags:
- images
/1.0/images/{fingerprint}:
delete:
description: Removes the image from the image store.
operationId: image_delete
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete the image
tags:
- images
get:
description: Gets a specific image.
operationId: image_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: Image
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/Image'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the image
tags:
- images
patch:
consumes:
- application/json
description: Updates a subset of the image definition.
operationId: image_patch
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Image configuration
in: body
name: image
required: true
schema:
$ref: '#/definitions/ImagePut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the image
tags:
- images
put:
consumes:
- application/json
description: Updates the entire image definition.
operationId: image_put
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Image configuration
in: body
name: image
required: true
schema:
$ref: '#/definitions/ImagePut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the image
tags:
- images
/1.0/images/{fingerprint}/export:
get:
description: |-
Download the raw image file(s) from the server.
If the image is in split format, a multipart http transfer occurs.
operationId: image_export_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/octet-stream
- multipart/form-data
responses:
"200":
description: Raw image data
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the raw image file(s)
tags:
- images
post:
description: Gets LXD to connect to a remote server and push the image to it.
operationId: images_export_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Image push request
in: body
name: image
required: true
schema:
$ref: '#/definitions/ImageExportPost'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Make LXD push the image to a remote server
tags:
- images
/1.0/images/{fingerprint}/export?public:
get:
description: |-
Download the raw image file(s) of a public image from the server.
If the image is in split format, a multipart http transfer occurs.
operationId: image_export_get_untrusted
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Secret token to retrieve a private image
example: RANDOM-STRING
in: query
name: secret
type: string
produces:
- application/octet-stream
- multipart/form-data
responses:
"200":
description: Raw image data
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the raw image file(s)
tags:
- images
/1.0/images/{fingerprint}/refresh:
post:
description: |-
This causes LXD to check the image source server for an updated
version of the image and if available to refresh the local copy with the
new version.
operationId: images_refresh_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Refresh an image
tags:
- images
/1.0/images/{fingerprint}/secret:
post:
description: |-
This generates a background operation including a secret one time key
in its metadata which can be used to fetch this image from an untrusted
client.
operationId: images_secret_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Generate secret for retrieval of the image by an untrusted client
tags:
- images
/1.0/images/{fingerprint}?public:
get:
description: Gets a specific public image.
operationId: image_get_untrusted
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Secret token to retrieve a private image
example: RANDOM-STRING
in: query
name: secret
type: string
produces:
- application/json
responses:
"200":
description: Image
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/Image'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the public image
tags:
- images
/1.0/images/aliases:
get:
description: Returns a list of image aliases (URLs).
operationId: images_aliases_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/images/aliases/foo",
"/1.0/images/aliases/bar1"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the image aliases
tags:
- images
post:
consumes:
- application/json
description: Creates a new image alias.
operationId: images_aliases_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Image alias
in: body
name: image alias
required: true
schema:
$ref: '#/definitions/ImageAliasesPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Add an image alias
tags:
- images
/1.0/images/aliases/{name}:
delete:
description: Deletes a specific image alias.
operationId: image_alias_delete
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete the image alias
tags:
- images
get:
description: Gets a specific image alias.
operationId: image_alias_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: Image alias
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/ImageAliasesEntry'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the image alias
tags:
- images
patch:
consumes:
- application/json
description: Updates a subset of the image alias configuration.
operationId: images_alias_patch
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Image alias configuration
in: body
name: image alias
required: true
schema:
$ref: '#/definitions/ImageAliasesEntryPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the image alias
tags:
- images
post:
consumes:
- application/json
description: Renames an existing image alias.
operationId: images_alias_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Image alias rename request
in: body
name: image alias
required: true
schema:
$ref: '#/definitions/ImageAliasesEntryPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Rename the image alias
tags:
- images
put:
consumes:
- application/json
description: Updates the entire image alias configuration.
operationId: images_aliases_put
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Image alias configuration
in: body
name: image alias
required: true
schema:
$ref: '#/definitions/ImageAliasesEntryPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the image alias
tags:
- images
/1.0/images/aliases/{name}?public:
get:
description: |-
Gets a specific public image alias.
This untrusted endpoint only works for aliases pointing to public images.
operationId: image_alias_get_untrusted
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: Image alias
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/ImageAliasesEntry'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the public image alias
tags:
- images
/1.0/images/aliases?recursion=1:
get:
description: Returns a list of image aliases (structs).
operationId: images_aliases_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of image aliases
items:
$ref: '#/definitions/ImageAliasesEntry'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the image aliases
tags:
- images
/1.0/images?public:
get:
description: Returns a list of publicly available images (URLs).
operationId: images_get_untrusted
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Collection filter
example: default
in: query
name: filter
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/images/06b86454720d36b20f94e31c6812e05ec51c1b568cf3a8abd273769d213394bb",
"/1.0/images/084dd79dd1360fd25a2479eb46674c2a5ef3022a40fe03c91ab3603e3402b8e1"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the public images
tags:
- images
post:
consumes:
- application/json
description: |-
Pushes the data to the target image server.
This is meant for LXD to LXD communication where a new image entry is
prepared on the target server and the source server is provided that URL
and a secret token to push the image content over.
operationId: images_post_untrusted
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Image
in: body
name: image
required: true
schema:
$ref: '#/definitions/ImagesPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Add an image
tags:
- images
/1.0/images?public&recursion=1:
get:
description: Returns a list of publicly available images (structs).
operationId: images_get_recursion1_untrusted
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Collection filter
example: default
in: query
name: filter
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of images
items:
$ref: '#/definitions/Image'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the public images
tags:
- images
/1.0/images?recursion=1:
get:
description: Returns a list of images (structs).
operationId: images_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Collection filter
example: default
in: query
name: filter
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of images
items:
$ref: '#/definitions/Image'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the images
tags:
- images
/1.0/instances:
get:
description: Returns a list of instances (URLs).
operationId: instances_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Collection filter
example: default
in: query
name: filter
type: string
- description: Retrieve instances from all projects
in: query
name: all-projects
type: boolean
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/instances/foo",
"/1.0/instances/bar"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the instances
tags:
- instances
post:
consumes:
- application/json
description: |-
Creates a new instance on LXD.
Depending on the source, this can create an instance from an existing
local image, remote image, existing local instance or snapshot, remote
migration stream or backup file.
operationId: instances_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member
example: default
in: query
name: target
type: string
- description: Instance request
in: body
name: instance
schema:
$ref: '#/definitions/InstancesPost'
- description: Raw backup file
in: body
name: raw_backup
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Create a new instance
tags:
- instances
put:
consumes:
- application/json
description: Changes the running state of all instances.
operationId: instances_put
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: State
in: body
name: state
schema:
$ref: '#/definitions/InstancesPut'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Bulk instance state update
tags:
- instances
/1.0/instances/{name}:
delete:
description: |-
Deletes a specific instance.
This also deletes anything owned by the instance such as snapshots and backups.
operationId: instance_delete
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete an instance
tags:
- instances
get:
description: Gets a specific instance (basic struct).
operationId: instance_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: Instance
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/Instance'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the instance
tags:
- instances
patch:
consumes:
- application/json
description: Updates a subset of the instance configuration
operationId: instance_patch
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Update request
in: body
name: instance
schema:
$ref: '#/definitions/InstancePut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the instance
tags:
- instances
post:
consumes:
- application/json
description: |-
Renames, moves an instance between pools or migrates an instance to another server.
The returned operation metadata will vary based on what's requested.
For rename or move within the same server, this is a simple background operation with progress data.
For migration, in the push case, this will similarly be a background
operation with progress data, for the pull case, it will be a websocket
operation with a number of secrets to be passed to the target server.
operationId: instance_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Migration request
in: body
name: migration
schema:
$ref: '#/definitions/InstancePost'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Rename or move/migrate an instance
tags:
- instances
put:
consumes:
- application/json
description: Updates the instance configuration or trigger a snapshot restore.
operationId: instance_put
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Update request
in: body
name: instance
schema:
$ref: '#/definitions/InstancePut'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the instance
tags:
- instances
/1.0/instances/{name}/backups:
get:
description: Returns a list of instance backups (URLs).
operationId: instance_backups_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/instances/foo/backups/backup0",
"/1.0/instances/foo/backups/backup1"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the backups
tags:
- instances
post:
consumes:
- application/json
description: Creates a new backup.
operationId: instance_backups_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Backup request
in: body
name: backup
schema:
$ref: '#/definitions/InstanceBackupsPost'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Create a backup
tags:
- instances
/1.0/instances/{name}/backups/{backup}:
delete:
consumes:
- application/json
description: Deletes the instance backup.
operationId: instance_backup_delete
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete a backup
tags:
- instances
get:
description: Gets a specific instance backup.
operationId: instance_backup_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: Instance backup
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/InstanceBackup'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the backup
tags:
- instances
post:
consumes:
- application/json
description: Renames an instance backup.
operationId: instance_backup_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Backup rename
in: body
name: backup
schema:
$ref: '#/definitions/InstanceBackupPost'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Rename a backup
tags:
- instances
/1.0/instances/{name}/backups/{backup}/export:
get:
description: Download the raw backup file(s) from the server.
operationId: instance_backup_export
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/octet-stream
responses:
"200":
description: Raw image data
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the raw backup file(s)
tags:
- instances
/1.0/instances/{name}/backups?recursion=1:
get:
description: Returns a list of instance backups (structs).
operationId: instance_backups_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of instance backups
items:
$ref: '#/definitions/InstanceBackup'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the backups
tags:
- instances
/1.0/instances/{name}/console:
delete:
description: Clears the console log buffer.
operationId: instance_console_delete
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"404":
$ref: '#/responses/NotFound'
"500":
$ref: '#/responses/InternalServerError'
summary: Clear the console log
tags:
- instances
get:
description: Gets the console log for the instance.
operationId: instance_console_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: Raw console log
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"404":
$ref: '#/responses/NotFound'
"500":
$ref: '#/responses/InternalServerError'
summary: Get console log
tags:
- instances
post:
consumes:
- application/json
description: |-
Connects to the console of an instance.
The returned operation metadata will contain two websockets, one for data and one for control.
operationId: instance_console_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Console request
in: body
name: console
schema:
$ref: '#/definitions/InstanceConsolePost'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Connect to console
tags:
- instances
/1.0/instances/{name}/exec:
post:
consumes:
- application/json
description: |-
Executes a command inside an instance.
The returned operation metadata will contain either 2 or 4 websockets.
In non-interactive mode, you'll get one websocket for each of stdin, stdout and stderr.
In interactive mode, a single bi-directional websocket is used for stdin and stdout/stderr.
An additional "control" socket is always added on top which can be used for out of band communication with LXD.
This allows sending signals and window sizing information through.
operationId: instance_exec_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Exec request
in: body
name: exec
schema:
$ref: '#/definitions/InstanceExecPost'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Run a command
tags:
- instances
/1.0/instances/{name}/files:
delete:
description: Removes the file.
operationId: instance_files_delete
parameters:
- description: Path to the file
example: default
in: query
name: path
type: string
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"404":
$ref: '#/responses/NotFound'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete a file
tags:
- instances
get:
description: Gets the file content. If it's a directory, a json list of files
will be returned instead.
operationId: instance_files_get
parameters:
- description: Path to the file
example: default
in: query
name: path
type: string
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
- application/octet-stream
responses:
"200":
description: Raw file or directory listing
headers:
X-LXD-gid:
description: File owner GID
X-LXD-mode:
description: Mode mask
X-LXD-type:
description: Type of file (file, symlink or directory)
X-LXD-uid:
description: File owner UID
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"404":
$ref: '#/responses/NotFound'
"500":
$ref: '#/responses/InternalServerError'
summary: Get a file
tags:
- instances
post:
consumes:
- application/octet-stream
description: Creates a new file in the instance.
operationId: instance_files_post
parameters:
- description: Path to the file
example: default
in: query
name: path
type: string
- description: Project name
example: default
in: query
name: project
type: string
- description: Raw file content
in: body
name: raw_file
- description: File owner UID
example: 1000
in: header
name: X-LXD-uid
schema:
type: integer
- description: File owner GID
example: 1000
in: header
name: X-LXD-gid
schema:
type: integer
- description: File mode
example: 420
in: header
name: X-LXD-mode
schema:
type: integer
- description: Type of file (file, symlink or directory)
example: file
in: header
name: X-LXD-type
schema:
type: string
- description: Write mode (overwrite or append)
example: overwrite
in: header
name: X-LXD-write
schema:
type: string
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"404":
$ref: '#/responses/NotFound'
"500":
$ref: '#/responses/InternalServerError'
summary: Create or replace a file
tags:
- instances
/1.0/instances/{name}/logs:
get:
description: Returns a list of log files (URLs).
operationId: instance_logs_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/instances/foo/logs/lxc.conf",
"/1.0/instances/foo/logs/lxc.log"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"404":
$ref: '#/responses/NotFound'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the log files
tags:
- instances
/1.0/instances/{name}/logs/{filename}:
delete:
description: Removes the log file.
operationId: instance_log_delete
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"404":
$ref: '#/responses/NotFound'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete the log file
tags:
- instances
get:
description: Gets the log file.
operationId: instance_log_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
- application/octet-stream
responses:
"200":
description: Raw file
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"404":
$ref: '#/responses/NotFound'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the log file
tags:
- instances
/1.0/instances/{name}/metadata:
get:
description: Gets the image metadata for the instance.
operationId: instance_metadata_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: Image metadata
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/ImageMetadata'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the instance image metadata
tags:
- instances
patch:
consumes:
- application/json
description: Updates a subset of the instance image metadata.
operationId: instance_metadata_patch
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Image metadata
in: body
name: metadata
required: true
schema:
$ref: '#/definitions/ImageMetadata'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the image metadata
tags:
- instances
put:
consumes:
- application/json
description: Updates the instance image metadata.
operationId: instance_metadata_put
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Image metadata
in: body
name: metadata
required: true
schema:
$ref: '#/definitions/ImageMetadata'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the image metadata
tags:
- instances
/1.0/instances/{name}/metadata/templates:
delete:
description: Removes the template file.
operationId: instance_metadata_templates_delete
parameters:
- description: Template name
example: default
in: query
name: path
type: string
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"404":
$ref: '#/responses/NotFound'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete a template file
tags:
- instances
get:
description: |-
If no path specified, returns a list of template file names.
If a path is specified, returns the file content.
operationId: instance_metadata_templates_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Template name
example: hostname.tpl
in: query
name: path
type: string
produces:
- application/json
- application/octet-stream
responses:
"200":
description: Raw template file or file listing
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"404":
$ref: '#/responses/NotFound'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the template file names or a specific
tags:
- instances
post:
consumes:
- application/octet-stream
description: Creates a new image template file for the instance.
operationId: instance_metadata_templates_post
parameters:
- description: Template name
example: default
in: query
name: path
type: string
- description: Project name
example: default
in: query
name: project
type: string
- description: Raw file content
in: body
name: raw_file
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"404":
$ref: '#/responses/NotFound'
"500":
$ref: '#/responses/InternalServerError'
summary: Create or replace a template file
tags:
- instances
/1.0/instances/{name}/snapshots:
get:
description: Returns a list of instance snapshots (URLs).
operationId: instance_snapshots_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/instances/foo/snapshots/snap0",
"/1.0/instances/foo/snapshots/snap1"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the snapshots
tags:
- instances
post:
consumes:
- application/json
description: Creates a new snapshot.
operationId: instance_snapshots_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Snapshot request
in: body
name: snapshot
schema:
$ref: '#/definitions/InstanceSnapshotsPost'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Create a snapshot
tags:
- instances
/1.0/instances/{name}/snapshots/{snapshot}:
delete:
consumes:
- application/json
description: Deletes the instance snapshot.
operationId: instance_snapshot_delete
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete a snapshot
tags:
- instances
get:
description: Gets a specific instance snapshot.
operationId: instance_snapshot_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: Instance snapshot
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/InstanceSnapshot'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the snapshot
tags:
- instances
patch:
consumes:
- application/json
description: Updates a subset of the snapshot config.
operationId: instance_snapshot_patch
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Snapshot update
in: body
name: snapshot
schema:
$ref: '#/definitions/InstanceSnapshotPut'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update snapshot
tags:
- instances
post:
consumes:
- application/json
description: |-
Renames or migrates an instance snapshot to another server.
The returned operation metadata will vary based on what's requested.
For rename or move within the same server, this is a simple background operation with progress data.
For migration, in the push case, this will similarly be a background
operation with progress data, for the pull case, it will be a websocket
operation with a number of secrets to be passed to the target server.
operationId: instance_snapshot_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Snapshot migration
in: body
name: snapshot
schema:
$ref: '#/definitions/InstanceSnapshotPost'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Rename or move/migrate a snapshot
tags:
- instances
put:
consumes:
- application/json
description: Updates the snapshot config.
operationId: instance_snapshot_put
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Snapshot update
in: body
name: snapshot
schema:
$ref: '#/definitions/InstanceSnapshotPut'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Update snapshot
tags:
- instances
/1.0/instances/{name}/snapshots?recursion=1:
get:
description: Returns a list of instance snapshots (structs).
operationId: instance_snapshots_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of instance snapshots
items:
$ref: '#/definitions/InstanceSnapshot'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the snapshots
tags:
- instances
/1.0/instances/{name}/state:
get:
description: |-
Gets the runtime state of the instance.
This is a reasonably expensive call as it causes code to be run
inside of the instance to retrieve the resource usage and network
information.
operationId: instance_state_get
parameters:
- description: Project name
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: State
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/InstanceState'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the runtime state
tags:
- instances
put:
consumes:
- application/json
description: Changes the running state of the instance.
operationId: instance_state_put
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: State
in: body
name: state
schema:
$ref: '#/definitions/InstanceStatePut'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Change the state
tags:
- instances
/1.0/instances/{name}?recursion=1:
get:
description: |-
Gets a specific instance (full struct).
recursion=1 also includes information about state, snapshots and backups.
operationId: instance_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: Instance
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/Instance'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the instance
tags:
- instances
/1.0/instances?recursion=1:
get:
description: Returns a list of instances (basic structs).
operationId: instances_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Collection filter
example: default
in: query
name: filter
type: string
- description: Retrieve instances from all projects
in: query
name: all-projects
type: boolean
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of instances
items:
$ref: '#/definitions/Instance'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the instances
tags:
- instances
/1.0/instances?recursion=2:
get:
description: |-
Returns a list of instances (full structs).
The main difference between recursion=1 and recursion=2 is that the
latter also includes state and snapshot information allowing for a
single API call to return everything needed by most clients.
operationId: instances_get_recursion2
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Collection filter
example: default
in: query
name: filter
type: string
- description: Retrieve instances from all projects
in: query
name: all-projects
type: boolean
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of instances
items:
$ref: '#/definitions/InstanceFull'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the instances
tags:
- instances
/1.0/metrics:
get:
description: Gets metrics of instances.
operationId: metrics_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- text/plain
responses:
"200":
description: Metrics
schema:
description: Instance metrics
type: string
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get metrics
tags:
- metrics
/1.0/network-acls:
get:
description: Returns a list of network ACLs (URLs).
operationId: network_acls_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/network-acls/foo",
"/1.0/network-acls/bar"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the network ACLs
tags:
- network-acls
post:
consumes:
- application/json
description: Creates a new network ACL.
operationId: network_acls_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: ACL
in: body
name: acl
required: true
schema:
$ref: '#/definitions/NetworkACLsPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Add a network ACL
tags:
- network-acls
/1.0/network-acls/{name}:
delete:
description: Removes the network ACL.
operationId: network_acl_delete
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete the network ACL
tags:
- network-acls
get:
description: Gets a specific network ACL.
operationId: network_acl_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: ACL
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/NetworkACL'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the network ACL
tags:
- network-acls
patch:
consumes:
- application/json
description: Updates a subset of the network ACL configuration.
operationId: network_acl_patch
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: ACL configuration
in: body
name: acl
required: true
schema:
$ref: '#/definitions/NetworkACLPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the network ACL
tags:
- network-acls
post:
consumes:
- application/json
description: Renames an existing network ACL.
operationId: network_acl_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: ACL rename request
in: body
name: acl
required: true
schema:
$ref: '#/definitions/NetworkACLPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Rename the network ACL
tags:
- network-acls
put:
consumes:
- application/json
description: Updates the entire network ACL configuration.
operationId: network_acl_put
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: ACL configuration
in: body
name: acl
required: true
schema:
$ref: '#/definitions/NetworkACLPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the network ACL
tags:
- network-acls
/1.0/network-acls/{name}/log:
get:
description: Gets a specific network ACL log entries.
operationId: network_acl_log_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/octet-stream
responses:
"200":
description: Raw log file
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the network ACL log
tags:
- network-acls
/1.0/network-acls?recursion=1:
get:
description: Returns a list of network ACLs (structs).
operationId: network_acls_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of network ACLs
items:
$ref: '#/definitions/NetworkACL'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the network ACLs
tags:
- network-acls
/1.0/network-zones:
get:
description: Returns a list of network zones (URLs).
operationId: network_zones_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/network-zones/example.net",
"/1.0/network-zones/example.com"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the network zones
tags:
- network-zones
post:
consumes:
- application/json
description: Creates a new network zone.
operationId: network_zones_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: zone
in: body
name: zone
required: true
schema:
$ref: '#/definitions/NetworkZonesPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Add a network zone
tags:
- network-zones
/1.0/network-zones/{name}:
delete:
description: Removes the network zone.
operationId: network_zone_delete
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete the network zone
tags:
- network-zones
get:
description: Gets a specific network zone.
operationId: network_zone_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: zone
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/NetworkZone'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the network zone
tags:
- network-zones
patch:
consumes:
- application/json
description: Updates a subset of the network zone configuration.
operationId: network_zone_patch
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: zone configuration
in: body
name: zone
required: true
schema:
$ref: '#/definitions/NetworkZonePut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the network zone
tags:
- network-zones
put:
consumes:
- application/json
description: Updates the entire network zone configuration.
operationId: network_zone_put
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: zone configuration
in: body
name: zone
required: true
schema:
$ref: '#/definitions/NetworkZonePut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the network zone
tags:
- network-zones
/1.0/network-zones/{zone}/records:
get:
description: Returns a list of network zone records (URLs).
operationId: network_zone_records_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/network-zones/example.net/records/foo",
"/1.0/network-zones/example.net/records/bar"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the network zone records
tags:
- network-zones
post:
consumes:
- application/json
description: Creates a new network zone record.
operationId: network_zone_records_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: zone
in: body
name: zone
required: true
schema:
$ref: '#/definitions/NetworkZoneRecordsPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Add a network zone record
tags:
- network-zones
/1.0/network-zones/{zone}/records/{name}:
delete:
description: Removes the network zone record.
operationId: network_zone_record_delete
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete the network zone record
tags:
- network-zones
get:
description: Gets a specific network zone record.
operationId: network_zone_record_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: zone
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/NetworkZoneRecord'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the network zone record
tags:
- network-zones
patch:
consumes:
- application/json
description: Updates a subset of the network zone record configuration.
operationId: network_zone_record_patch
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: zone record configuration
in: body
name: zone
required: true
schema:
$ref: '#/definitions/NetworkZoneRecordPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the network zone record
tags:
- network-zones
put:
consumes:
- application/json
description: Updates the entire network zone record configuration.
operationId: network_zone_record_put
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: zone record configuration
in: body
name: zone
required: true
schema:
$ref: '#/definitions/NetworkZoneRecordPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the network zone record
tags:
- network-zones
/1.0/network-zones/{zone}/records?recursion=1:
get:
description: Returns a list of network zone records (structs).
operationId: network_zone_records_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of network zone records
items:
$ref: '#/definitions/NetworkZoneRecord'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the network zone records
tags:
- network-zones
/1.0/network-zones?recursion=1:
get:
description: Returns a list of network zones (structs).
operationId: network_zones_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of network zones
items:
$ref: '#/definitions/NetworkZone'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the network zones
tags:
- network-zones
/1.0/networks:
get:
description: Returns a list of networks (URLs).
operationId: networks_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/networks/lxdbr0",
"/1.0/networks/lxdbr1"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the networks
tags:
- networks
post:
consumes:
- application/json
description: |-
Creates a new network.
When clustered, most network types require individual POST for each cluster member prior to a global POST.
operationId: networks_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Network
in: body
name: network
required: true
schema:
$ref: '#/definitions/NetworksPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Add a network
tags:
- networks
/1.0/networks/{name}:
delete:
description: Removes the network.
operationId: network_delete
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete the network
tags:
- networks
get:
description: Gets a specific network.
operationId: network_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"200":
description: Network
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/Network'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the network
tags:
- networks
patch:
consumes:
- application/json
description: Updates a subset of the network configuration.
operationId: network_patch
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Network configuration
in: body
name: network
required: true
schema:
$ref: '#/definitions/NetworkPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the network
tags:
- networks
post:
consumes:
- application/json
description: Renames an existing network.
operationId: network_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Network rename request
in: body
name: network
required: true
schema:
$ref: '#/definitions/NetworkPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Rename the network
tags:
- networks
put:
consumes:
- application/json
description: Updates the entire network configuration.
operationId: network_put
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Network configuration
in: body
name: network
required: true
schema:
$ref: '#/definitions/NetworkPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the network
tags:
- networks
/1.0/networks/{name}/leases:
get:
description: Returns a list of DHCP leases for the network.
operationId: networks_leases_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of DHCP leases
items:
$ref: '#/definitions/NetworkLease'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the DHCP leases
tags:
- networks
/1.0/networks/{name}/state:
get:
description: Returns the current network state information.
operationId: networks_state_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/NetworkState'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the network state
tags:
- networks
/1.0/networks/{networkName}/forwards:
get:
description: Returns a list of network address forwards (URLs).
operationId: network_forwards_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/networks/lxdbr0/forwards/192.0.2.1",
"/1.0/networks/lxdbr0/forwards/192.0.2.2"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the network address forwards
tags:
- network-forwards
post:
consumes:
- application/json
description: Creates a new network address forward.
operationId: network_forwards_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Forward
in: body
name: forward
required: true
schema:
$ref: '#/definitions/NetworkForwardsPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Add a network address forward
tags:
- network-forwards
/1.0/networks/{networkName}/forwards/{listenAddress}:
delete:
description: Removes the network address forward.
operationId: network_forward_delete
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete the network address forward
tags:
- network-forwards
get:
description: Gets a specific network address forward.
operationId: network_forward_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: Address forward
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/NetworkForward'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the network address forward
tags:
- network-forwards
patch:
consumes:
- application/json
description: Updates a subset of the network address forward configuration.
operationId: network_forward_patch
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Address forward configuration
in: body
name: forward
required: true
schema:
$ref: '#/definitions/NetworkForwardPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the network address forward
tags:
- network-forwards
put:
consumes:
- application/json
description: Updates the entire network address forward configuration.
operationId: network_forward_put
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Address forward configuration
in: body
name: forward
required: true
schema:
$ref: '#/definitions/NetworkForwardPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the network address forward
tags:
- network-forwards
/1.0/networks/{networkName}/forwards?recursion=1:
get:
description: Returns a list of network address forwards (structs).
operationId: network_forward_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of network address forwards
items:
$ref: '#/definitions/NetworkForward'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the network address forwards
tags:
- network-forwards
/1.0/networks/{networkName}/peers:
get:
description: Returns a list of network peers (URLs).
operationId: network_peers_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/networks/lxdbr0/peers/my-peer-1",
"/1.0/networks/lxdbr0/peers/my-peer-2"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the network peers
tags:
- network-peers
post:
consumes:
- application/json
description: Initiates/creates a new network peering.
operationId: network_peers_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Peer
in: body
name: peer
required: true
schema:
$ref: '#/definitions/NetworkPeersPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"202":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Add a network peer
tags:
- network-peers
/1.0/networks/{networkName}/peers/{peerName}:
delete:
description: Removes the network peering.
operationId: network_peer_delete
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete the network peer
tags:
- network-peers
get:
description: Gets a specific network peering.
operationId: network_peer_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: Peer
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/NetworkPeer'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the network peer
tags:
- network-peers
patch:
consumes:
- application/json
description: Updates a subset of the network peering configuration.
operationId: network_peer_patch
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Peer configuration
in: body
name: Peer
required: true
schema:
$ref: '#/definitions/NetworkPeerPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the network peer
tags:
- network-peers
put:
consumes:
- application/json
description: Updates the entire network peering configuration.
operationId: network_peer_put
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Peer configuration
in: body
name: peer
required: true
schema:
$ref: '#/definitions/NetworkPeerPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the network peer
tags:
- network-peers
/1.0/networks/{networkName}/peers?recursion=1:
get:
description: Returns a list of network peers (structs).
operationId: network_peer_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of network peers
items:
$ref: '#/definitions/NetworkPeer'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the network peers
tags:
- network-peers
/1.0/networks?recursion=1:
get:
description: Returns a list of networks (structs).
operationId: networks_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of networks
items:
$ref: '#/definitions/Network'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the networks
tags:
- networks
/1.0/operations:
get:
description: Returns a dict of operation type to operation list (URLs).
operationId: operations_get
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
additionalProperties:
items:
type: string
type: array
description: Dict of operation types to operation URLs
example: |-
{
"running": [
"/1.0/operations/6916c8a6-9b7d-4abd-90b3-aedfec7ec7da"
]
}
type: object
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the operations
tags:
- operations
/1.0/operations/{id}:
delete:
description: Cancels the operation if supported.
operationId: operation_delete
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Cancel the operation
tags:
- operations
get:
description: Gets the operation state.
operationId: operation_get
produces:
- application/json
responses:
"200":
description: Operation
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/Operation'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the operation state
tags:
- operations
/1.0/operations/{id}/wait:
get:
description: Waits for the operation to reach a final state (or timeout) and
retrieve its final state.
operationId: operation_wait_get
parameters:
- description: Timeout in seconds (-1 means never)
example: -1
in: query
name: timeout
type: integer
produces:
- application/json
responses:
"200":
description: Operation
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/Operation'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Wait for the operation
tags:
- operations
/1.0/operations/{id}/wait?public:
get:
description: |-
Waits for the operation to reach a final state (or timeout) and retrieve its final state.
When accessed by an untrusted user, the secret token must be provided.
operationId: operation_wait_get_untrusted
parameters:
- description: Authentication token
example: random-string
in: query
name: secret
type: string
- description: Timeout in seconds (-1 means never)
example: -1
in: query
name: timeout
type: integer
produces:
- application/json
responses:
"200":
description: Operation
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/Operation'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Wait for the operation
tags:
- operations
/1.0/operations/{id}/websocket:
get:
description: |-
Connects to an associated websocket stream for the operation.
This should almost never be done directly by a client, instead it's
meant for LXD to LXD communication with the client only relaying the
connection information to the servers.
operationId: operation_websocket_get
parameters:
- description: Authentication token
example: random-string
in: query
name: secret
type: string
produces:
- application/json
responses:
"200":
description: Websocket operation messages (dependent on operation)
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the websocket stream
tags:
- operations
/1.0/operations/{id}/websocket?public:
get:
description: |-
Connects to an associated websocket stream for the operation.
This should almost never be done directly by a client, instead it's
meant for LXD to LXD communication with the client only relaying the
connection information to the servers.
The untrusted endpoint is used by the target server to connect to the source server.
Authentication is performed through the secret token.
operationId: operation_websocket_get_untrusted
parameters:
- description: Authentication token
example: random-string
in: query
name: secret
type: string
produces:
- application/json
responses:
"200":
description: Websocket operation messages (dependent on operation)
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the websocket stream
tags:
- operations
/1.0/operations?recursion=1:
get:
description: Returns a list of operations (structs).
operationId: operations_get_recursion1
produces:
- application/json
parameters:
- description: Project name
example: default
in: query
name: project
type: string
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of operations
items:
$ref: '#/definitions/Operation'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the operations
tags:
- operations
/1.0/profiles:
get:
description: Returns a list of profiles (URLs).
operationId: profiles_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/profiles/default",
"/1.0/profiles/foo"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the profiles
tags:
- profiles
post:
consumes:
- application/json
description: Creates a new profile.
operationId: profiles_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Profile
in: body
name: profile
required: true
schema:
$ref: '#/definitions/ProfilesPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Add a profile
tags:
- profiles
/1.0/profiles/{name}:
delete:
description: Removes the profile.
operationId: profile_delete
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete the profile
tags:
- profiles
get:
description: Gets a specific profile.
operationId: profile_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: Profile
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/Profile'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the profile
tags:
- profiles
patch:
consumes:
- application/json
description: Updates a subset of the profile configuration.
operationId: profile_patch
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Profile configuration
in: body
name: profile
required: true
schema:
$ref: '#/definitions/ProfilePut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the profile
tags:
- profiles
post:
consumes:
- application/json
description: Renames an existing profile.
operationId: profile_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Profile rename request
in: body
name: profile
required: true
schema:
$ref: '#/definitions/ProfilePost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Rename the profile
tags:
- profiles
put:
consumes:
- application/json
description: Updates the entire profile configuration.
operationId: profile_put
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Profile configuration
in: body
name: profile
required: true
schema:
$ref: '#/definitions/ProfilePut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the profile
tags:
- profiles
/1.0/profiles?recursion=1:
get:
description: Returns a list of profiles (structs).
operationId: profiles_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of profiles
items:
$ref: '#/definitions/Profile'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the profiles
tags:
- profiles
/1.0/projects:
get:
description: Returns a list of projects (URLs).
operationId: projects_get
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/projects/default",
"/1.0/projects/foo"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the projects
tags:
- projects
post:
consumes:
- application/json
description: Creates a new project.
operationId: projects_post
parameters:
- description: Project
in: body
name: project
required: true
schema:
$ref: '#/definitions/ProjectsPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Add a project
tags:
- projects
/1.0/projects/{name}:
delete:
description: Removes the project.
operationId: project_delete
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete the project
tags:
- projects
get:
description: Gets a specific project.
operationId: project_get
produces:
- application/json
responses:
"200":
description: Project
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/Project'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the project
tags:
- projects
patch:
consumes:
- application/json
description: Updates a subset of the project configuration.
operationId: project_patch
parameters:
- description: Project configuration
in: body
name: project
required: true
schema:
$ref: '#/definitions/ProjectPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the project
tags:
- projects
post:
consumes:
- application/json
description: Renames an existing project.
operationId: project_post
parameters:
- description: Project rename request
in: body
name: project
required: true
schema:
$ref: '#/definitions/ProjectPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Rename the project
tags:
- projects
put:
consumes:
- application/json
description: Updates the entire project configuration.
operationId: project_put
parameters:
- description: Project configuration
in: body
name: project
required: true
schema:
$ref: '#/definitions/ProjectPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the project
tags:
- projects
/1.0/projects/{name}/state:
get:
description: Gets a specific project resource consumption information.
operationId: project_state_get
produces:
- application/json
responses:
"200":
description: Project state
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/ProjectState'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the project state
tags:
- projects
/1.0/projects?recursion=1:
get:
description: Returns a list of projects (structs).
operationId: projects_get_recursion1
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of projects
items:
$ref: '#/definitions/Project'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the projects
tags:
- projects
/1.0/resources:
get:
description: Gets the hardware information profile of the LXD server.
operationId: resources_get
parameters:
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"200":
description: Hardware resources
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/Resources'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get system resources information
tags:
- server
/1.0/storage-pools:
get:
description: Returns a list of storage pools (URLs).
operationId: storage_pools_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/storage-pools/local",
"/1.0/storage-pools/remote"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the storage pools
tags:
- storage
post:
consumes:
- application/json
description: |-
Creates a new storage pool.
When clustered, storage pools require individual POST for each cluster member prior to a global POST.
operationId: storage_pools_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Storage pool
in: body
name: storage
required: true
schema:
$ref: '#/definitions/StoragePoolsPost'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Add a storage pool
tags:
- storage
/1.0/storage-pools/{name}:
delete:
description: Removes the storage pool.
operationId: storage_pools_delete
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete the storage pool
tags:
- storage
get:
description: Gets a specific storage pool.
operationId: storage_pool_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"200":
description: Storage pool
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/StoragePool'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the storage pool
tags:
- storage
patch:
consumes:
- application/json
description: Updates a subset of the storage pool configuration.
operationId: storage_pool_patch
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Storage pool configuration
in: body
name: storage pool
required: true
schema:
$ref: '#/definitions/StoragePoolPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the storage pool
tags:
- storage
put:
consumes:
- application/json
description: Updates the entire storage pool configuration.
operationId: storage_pool_put
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Storage pool configuration
in: body
name: storage pool
required: true
schema:
$ref: '#/definitions/StoragePoolPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the storage pool
tags:
- storage
/1.0/storage-pools/{name}/resources:
get:
description: Gets the usage information for the storage pool.
operationId: storage_pool_resources
parameters:
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"200":
description: Hardware resources
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/ResourcesStoragePool'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get storage pool resources information
tags:
- storage
/1.0/storage-pools/{name}/volumes:
get:
description: Returns a list of storage volumes (URLs).
operationId: storage_pool_volumes_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Collection filter
example: default
in: query
name: filter
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/storage-pools/local/volumes/container/a1",
"/1.0/storage-pools/local/volumes/container/a2",
"/1.0/storage-pools/local/volumes/custom/backups",
"/1.0/storage-pools/local/volumes/custom/images"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the storage volumes
tags:
- storage
post:
consumes:
- application/json
description: Creates a new storage volume.
operationId: storage_pool_volumes_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Storage volume
in: body
name: volume
required: true
schema:
$ref: '#/definitions/StorageVolumesPost'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Add a storage volume
tags:
- storage
/1.0/storage-pools/{name}/volumes/{type}:
get:
description: Returns a list of storage volumes (URLs) (type specific endpoint).
operationId: storage_pool_volumes_type_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/storage-pools/local/volumes/custom/backups",
"/1.0/storage-pools/local/volumes/custom/images"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the storage volumes
tags:
- storage
post:
consumes:
- application/json
description: Creates a new storage volume (type specific endpoint).
operationId: storage_pool_volumes_type_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Storage volume
in: body
name: volume
required: true
schema:
$ref: '#/definitions/StorageVolumesPost'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Add a storage volume
tags:
- storage
/1.0/storage-pools/{name}/volumes/{type}/{volume}:
delete:
description: Removes the storage volume.
operationId: storage_pool_volume_type_delete
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete the storage volume
tags:
- storage
get:
description: Gets a specific storage volume.
operationId: storage_pool_volume_type_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"200":
description: Storage volume
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/StorageVolume'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the storage volume
tags:
- storage
patch:
consumes:
- application/json
description: Updates a subset of the storage volume configuration.
operationId: storage_pool_volume_type_patch
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Storage volume configuration
in: body
name: storage volume
required: true
schema:
$ref: '#/definitions/StorageVolumePut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the storage volume
tags:
- storage
post:
consumes:
- application/json
description: |-
Renames, moves a storage volume between pools or migrates an instance to another server.
The returned operation metadata will vary based on what's requested.
For rename or move within the same server, this is a simple background operation with progress data.
For migration, in the push case, this will similarly be a background
operation with progress data, for the pull case, it will be a websocket
operation with a number of secrets to be passed to the target server.
operationId: storage_pool_volume_type_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Migration request
in: body
name: migration
schema:
$ref: '#/definitions/StorageVolumePost'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Rename or move/migrate a storage volume
tags:
- storage
put:
consumes:
- application/json
description: Updates the entire storage volume configuration.
operationId: storage_pool_volume_type_put
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Storage volume configuration
in: body
name: storage volume
required: true
schema:
$ref: '#/definitions/StorageVolumePut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the storage volume
tags:
- storage
/1.0/storage-pools/{name}/volumes/{type}/{volume}/backups:
get:
description: Returns a list of storage volume backups (URLs).
operationId: storage_pool_volumes_type_backups_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/storage-pools/local/volumes/custom/foo/backups/backup0",
"/1.0/storage-pools/local/volumes/custom/foo/backups/backup1"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the storage volume backups
tags:
- storage
post:
consumes:
- application/json
description: Creates a new storage volume backup.
operationId: storage_pool_volumes_type_backups_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Storage volume backup
in: body
name: volume
required: true
schema:
$ref: '#/definitions/StoragePoolVolumeBackupsPost'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Create a storage volume backup
tags:
- storage
/1.0/storage-pools/{name}/volumes/{type}/{volume}/backups/{backup}:
delete:
consumes:
- application/json
description: Deletes a new storage volume backup.
operationId: storage_pool_volumes_type_backup_delete
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete a storage volume backup
tags:
- storage
get:
description: Gets a specific storage volume backup.
operationId: storage_pool_volumes_type_backup_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"200":
description: Storage volume backup
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/StoragePoolVolumeBackup'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the storage volume backup
tags:
- storage
post:
consumes:
- application/json
description: Renames a storage volume backup.
operationId: storage_pool_volumes_type_backup_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Storage volume backup
in: body
name: volume rename
required: true
schema:
$ref: '#/definitions/StorageVolumeSnapshotPost'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Rename a storage volume backup
tags:
- storage
/1.0/storage-pools/{name}/volumes/{type}/{volume}/backups/{backup}/export:
get:
description: Download the raw backup file from the server.
operationId: storage_pool_volumes_type_backup_export_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/octet-stream
responses:
"200":
description: Raw backup data
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the raw backup file
tags:
- storage
/1.0/storage-pools/{name}/volumes/{type}/{volume}/backups?recursion=1:
get:
description: Returns a list of storage volume backups (structs).
operationId: storage_pool_volumes_type_backups_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of storage volume backups
items:
$ref: '#/definitions/StoragePoolVolumeBackup'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the storage volume backups
tags:
- storage
/1.0/storage-pools/{name}/volumes/{type}/{volume}/snapshots:
get:
description: Returns a list of storage volume snapshots (URLs).
operationId: storage_pool_volumes_type_snapshots_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/storage-pools/local/volumes/custom/foo/snapshots/snap0",
"/1.0/storage-pools/local/volumes/custom/foo/snapshots/snap1"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the storage volume snapshots
tags:
- storage
post:
consumes:
- application/json
description: Creates a new storage volume snapshot.
operationId: storage_pool_volumes_type_snapshots_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Storage volume snapshot
in: body
name: volume
required: true
schema:
$ref: '#/definitions/StorageVolumeSnapshotsPost'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Create a storage volume snapshot
tags:
- storage
/1.0/storage-pools/{name}/volumes/{type}/{volume}/snapshots/{snapshot}:
delete:
consumes:
- application/json
description: Deletes a new storage volume snapshot.
operationId: storage_pool_volumes_type_snapshot_delete
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete a storage volume snapshot
tags:
- storage
get:
description: Gets a specific storage volume snapshot.
operationId: storage_pool_volumes_type_snapshot_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"200":
description: Storage volume snapshot
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/StorageVolumeSnapshot'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the storage volume snapshot
tags:
- storage
patch:
consumes:
- application/json
description: Updates a subset of the storage volume snapshot configuration.
operationId: storage_pool_volumes_type_snapshot_patch
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Storage volume snapshot configuration
in: body
name: storage volume snapshot
required: true
schema:
$ref: '#/definitions/StorageVolumeSnapshotPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the storage volume snapshot
tags:
- storage
post:
consumes:
- application/json
description: Renames a storage volume snapshot.
operationId: storage_pool_volumes_type_snapshot_post
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Storage volume snapshot
in: body
name: volume rename
required: true
schema:
$ref: '#/definitions/StorageVolumeSnapshotPost'
produces:
- application/json
responses:
"202":
$ref: '#/responses/Operation'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Rename a storage volume snapshot
tags:
- storage
put:
consumes:
- application/json
description: Updates the entire storage volume snapshot configuration.
operationId: storage_pool_volumes_type_snapshot_put
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Storage volume snapshot configuration
in: body
name: storage volume snapshot
required: true
schema:
$ref: '#/definitions/StorageVolumeSnapshotPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"412":
$ref: '#/responses/PreconditionFailed'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the storage volume snapshot
tags:
- storage
/1.0/storage-pools/{name}/volumes/{type}/{volume}/snapshots?recursion=1:
get:
description: Returns a list of storage volume snapshots (structs).
operationId: storage_pool_volumes_type_snapshots_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of storage volume snapshots
items:
$ref: '#/definitions/StorageVolumeSnapshot'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the storage volume snapshots
tags:
- storage
/1.0/storage-pools/{name}/volumes/{type}/{volume}/state:
get:
description: Gets a specific storage volume state (usage data).
operationId: storage_pool_volume_type_state_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"200":
description: Storage pool
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/StorageVolumeState'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the storage volume state
tags:
- storage
/1.0/storage-pools/{name}/volumes/{type}?recursion=1:
get:
description: Returns a list of storage volumes (structs) (type specific endpoint).
operationId: storage_pool_volumes_type_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of storage volumes
items:
$ref: '#/definitions/StorageVolume'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the storage volumes
tags:
- storage
/1.0/storage-pools/{name}/volumes?recursion=1:
get:
description: Returns a list of storage volumes (structs).
operationId: storage_pool_volumes_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
- description: Cluster member name
example: lxd01
in: query
name: target
type: string
- description: Collection filter
example: default
in: query
name: filter
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of storage volumes
items:
$ref: '#/definitions/StorageVolume'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the storage volumes
tags:
- storage
/1.0/storage-pools?recursion=1:
get:
description: Returns a list of storage pools (structs).
operationId: storage_pools_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of storage pools
items:
$ref: '#/definitions/StoragePool'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the storage pools
tags:
- storage
/1.0/warnings:
get:
description: Returns a list of warnings.
operationId: warnings_get
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: Sync response
schema:
description: Sync response
properties:
metadata:
description: List of endpoints
example: |-
[
"/1.0/warnings/39c61a48-cc17-40ae-8248-4f7b4cadedf4",
"/1.0/warnings/951779a5-2820-4d96-b01e-88fe820e5310"
]
items:
type: string
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"500":
$ref: '#/responses/InternalServerError'
summary: List the warnings
tags:
- warnings
/1.0/warnings/{uuid}:
delete:
description: Removes the warning.
operationId: warning_delete
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"500":
$ref: '#/responses/InternalServerError'
summary: Delete the warning
tags:
- warnings
get:
description: Gets a specific warning.
operationId: warning_get
produces:
- application/json
responses:
"200":
description: Warning
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/Warning'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"404":
$ref: '#/responses/NotFound'
"500":
$ref: '#/responses/InternalServerError'
summary: Get the warning
tags:
- warnings
patch:
consumes:
- application/json
description: Updates a subset of the warning status.
operationId: warning_patch
parameters:
- description: Warning status
in: body
name: warning
required: true
schema:
$ref: '#/definitions/WarningPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Partially update the warning
tags:
- warnings
put:
consumes:
- application/json
description: Updates the warning status.
operationId: warning_put
parameters:
- description: Warning status
in: body
name: warning
required: true
schema:
$ref: '#/definitions/WarningPut'
produces:
- application/json
responses:
"200":
$ref: '#/responses/EmptySyncResponse'
"400":
$ref: '#/responses/BadRequest'
"403":
$ref: '#/responses/Forbidden'
"500":
$ref: '#/responses/InternalServerError'
summary: Update the warning
tags:
- warnings
/1.0/warnings?recursion=1:
get:
description: Returns a list of warnings (structs).
operationId: warnings_get_recursion1
parameters:
- description: Project name
example: default
in: query
name: project
type: string
produces:
- application/json
responses:
"200":
description: API endpoints
schema:
description: Sync response
properties:
metadata:
description: List of warnings
items:
$ref: '#/definitions/Warning'
type: array
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"500":
$ref: '#/responses/InternalServerError'
summary: Get the warnings
tags:
- warnings
/1.0?public:
get:
description: |-
Shows a small subset of the server environment and configuration
which is required by untrusted clients to reach a server.
The `?public` part of the URL isn't required, it's simply used to
separate the two behaviors of this endpoint.
operationId: server_get_untrusted
produces:
- application/json
responses:
"200":
description: Server environment and configuration
schema:
description: Sync response
properties:
metadata:
$ref: '#/definitions/ServerUntrusted'
status:
description: Status description
example: Success
type: string
status_code:
description: Status code
example: 200
type: integer
type:
description: Response type
example: sync
type: string
type: object
"500":
$ref: '#/responses/InternalServerError'
summary: Get the server environment
tags:
- server
responses:
BadRequest:
description: Bad Request
schema:
properties:
code:
example: 400
format: int64
type: integer
x-go-name: Code
error:
example: bad request
type: string
x-go-name: Error
type:
example: error
type: string
x-go-name: Type
type: object
EmptySyncResponse:
description: Empty sync response
schema:
properties:
status:
example: Success
type: string
x-go-name: Status
status_code:
example: 200
format: int64
type: integer
x-go-name: StatusCode
type:
example: sync
type: string
x-go-name: Type
type: object
Forbidden:
description: Forbidden
schema:
properties:
code:
example: 403
format: int64
type: integer
x-go-name: Code
error:
example: not authorized
type: string
x-go-name: Error
type:
example: error
type: string
x-go-name: Type
type: object
InternalServerError:
description: Internal Server Error
schema:
properties:
code:
example: 500
format: int64
type: integer
x-go-name: Code
error:
example: internal server error
type: string
x-go-name: Error
type:
example: error
type: string
x-go-name: Type
type: object
NotFound:
description: Not found
schema:
properties:
code:
example: 404
format: int64
type: integer
x-go-name: Code
error:
example: not found
type: string
x-go-name: Error
type:
example: error
type: string
x-go-name: Type
type: object
Operation:
description: Operation
schema:
properties:
metadata:
$ref: '#/definitions/Operation'
operation:
example: /1.0/operations/66e83638-9dd7-4a26-aef2-5462814869a1
type: string
x-go-name: Operation
status:
example: Operation created
type: string
x-go-name: Status
status_code:
example: 100
format: int64
type: integer
x-go-name: StatusCode
type:
example: async
type: string
x-go-name: Type
type: object
PreconditionFailed:
description: Precondition Failed
schema:
properties:
code:
example: 412
format: int64
type: integer
x-go-name: Code
error:
example: precondition failed
type: string
x-go-name: Error
type:
example: error
type: string
x-go-name: Type
type: object
swagger: "2.0"
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 875:
=back without =over