# 👋🏻 Welcome to Linode.API

## About The Project

This project is essentially your comprehensive guide to explore and use Linode APIs. Here, I compile everything you need to integrate your projects into one of the top cloud platforms, covering instances, firewalls, images, regions, SSH keys, StackScripts, and much more! 🌐🔒🚀

#### Key Features

* Quick Start: Get going with simple examples to connect and utilize the API. 🖥️
* Detailed API Reference: Each endpoint is explained with code examples, making it easy even for beginners. 📚
* Use Cases: Explore how other developers are leveraging the API in real-world scenarios. 💡
* Security and Best Practices: Learn how to use the API securely and efficiently. 🔐
* Support and Community: Join our community and get assistance when you need it. 👥

## Installation

Before you can use `Linode.API` in your application, you must add the NuGet package. You can do this using your IDE or the command line:

`PM> dotnet add package Linode.API`

### Usage

Ex; Create a server

```csharp
LinodeClient linodeClient = new LinodeClient("apikey");

string label = "mySuperServerLinode";
string regionId = "eu-central";
string linodeTypeId = "g6-nanode-1";
string imageId = "linode/debian11";
string rootPassword = "krGNsg7oPxWTYS^q*KWL8HkHC2nJRUDjE*wT";

// Create
LinodeInstance linodeInstance = await linodeClient.LinodeInstance.Create(
    label,
    regionId,
    linodeTypeId,
    imageId,
    rootPassword
);
```

Ex; Get all server

```csharp
LinodeClient linodeClient = new LinodeClient("apikey");

// Get all
List<LinodeInstance> list = await linodeClient.LinodeInstance.Get();
```

Ex; Get a server

```csharp
LinodeClient linodeClient = new LinodeClient("apikey");

long instanceId = 52767381;

// Get One
LinodeInstance linodeInstance = await linodeClient.LinodeInstance.Get(instanceId);
```

## License

Distributed under the MIT License. See `LICENSE` for more information.

## Contact

Leonardo Chuello - [@LJChuello](https://twitter.com/LJChuello) - <ljchuello@gmail.com>

Project Link: [github.com/ljchuello/Linode.API](https://github.com/ljchuello/Linode.API)

Project Documentation: [linode.ljchuello.com](https://linode.ljchuello.com/)

Nuget Package [nuget.org/packages/Linode.API](https://www.nuget.org/packages/Linode.API)

## Implemented functionality

✔️ - Available on API, implemented\
❌ - Available on API, not implemented\
➖ - Not available on API

<table><thead><tr><th width="246"></th><th align="center">Get all</th><th align="center">Get one</th><th align="center">Create</th><th align="center">Update</th><th align="center">Delete</th><th align="center">Actions</th></tr></thead><tbody><tr><td>Domains (Zone DNS)</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">➖</td></tr><tr><td>Domains (Record DNS)</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">➖</td></tr><tr><td>Firewalls</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td></tr><tr><td>Images</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">❌</td><td align="center">❌</td><td align="center">❌</td><td align="center">➖</td></tr><tr><td>Linode Instance</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">➖</td></tr><tr><td>Linode Type</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">➖</td><td align="center">➖</td><td align="center">➖</td><td align="center">➖</td></tr><tr><td>Regions</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">➖</td><td align="center">➖</td><td align="center">➖</td><td align="center">➖</td></tr><tr><td>SSH Keys</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">➖</td></tr><tr><td>StackScript</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">➖</td></tr><tr><td>VLANs</td><td align="center">➖</td><td align="center">➖</td><td align="center">➖</td><td align="center">➖</td><td align="center">➖</td><td align="center">➖</td></tr><tr><td>Volumes</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td><td align="center">✔️</td></tr></tbody></table>

To have the complete list of the functionalities implemented in this library [consult the Wiki](https://ljchuello.gitbook.io/linode.api/)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://linode.ljchuello.com/overview/welcome-to-linode.api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
