> For the complete documentation index, see [llms.txt](https://dev-cucei-itrans.gitbook.io/siiau-api-client/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dev-cucei-itrans.gitbook.io/siiau-api-client/caracteristicas/uso-basico.md).

# Uso Básico

Como manejar usar el SDK.

## <mark style="color:red;">Conector</mark>

La clase principal del SDK es el `SiiauConnector` , la cual es responsable de enviar y autenticar nuestras peticiones a la API por nosotros. Existen tres formas de acceder a el:

{% tabs %}
{% tab title="Helper" %}
Es la forma sugerida de uso, pues es la mas sencilla. Solo llamamos a la función `siiau`

```php
siiau()->send(/** Request */);
```

{% endtab %}

{% tab title="Facade" %}
Como una Facade de Laravel, puedes llamar a cualquier método de la clase de manera estatica.

```php
use Siiau\ApiClient\Facades\Siiau;

Siiau::send( /** Request */ );
```

{% endtab %}

{% tab title="Injection" %}
Puedes injectar el conector en cualquier método/constructor que el [contenedor](/siiau-api-client/inicio/instalacion.md) de Laravel resuelva. Por ejemplo, un controlador:

```php
use Siiau\ApiClient\SiiauConnector;

final class RevisionController extends Controller
{
    public function show(SiiauConnector $siiau, Revision $revision): View
    {
        $siiau->send(/** Request */);
    }
}
```

{% endtab %}
{% endtabs %}

La eleccion de cual método usar es totalmente del programador, pues su comportamiento es el mismo.

## <mark style="color:red;">Consultar</mark>

Durante la documentacion encontraras dos maneras de usar el SDK para llamar a la API.&#x20;

### <mark style="color:orange;">Basica / Resource</mark>

Esta forma es la mas comoda y se hace usando los metodos del mismo conector para consular la API.

```php
$usuario = siiau()->usuario()->encontrar(codigo: '123456789');
```

Cuando uses esta forma, el SDK te devolvera siempre un DTO, que de menera simple, es una clase con valores.&#x20;

{% hint style="warning" %}
El DTO podria ser un Error o el valor esperado. Por este motivo, siempre que se use este método, se recomienda checar si es una instancia de `Error`.
{% endhint %}

```php
use Siiau\ApiClient\Objects\Error;

$usuario = siiau()->usuario()->encontrar(codigo: '123456789');

if ($usuario instanceof Error) {
    /** Handle API Error */
}
```

### <mark style="color:orange;">Avanzada / Request</mark>

La otra forma de hacer una peticion es usando las clases `Request` y enviarlas directamente con el método `send` del conector. Estas reciben los parametros necesarios en su constructor y, al enviarlas, se retorna una `Response` .&#x20;

```php
use Siiau\ApiClient\Requests\GetUsuarioRequest;

$response = siiau()->send(new GetUsuarioRequest(
    codigo: '123456789',
));
```

Este método es mas flexible pues nos da acceso a toda la información de la response. El SDK se basa en una libreria llamada [Saloon](https://docs.saloon.dev/) y esta provee metodos conventientes para interactuar con las responses. Más sobre [Saloon Responses](https://docs.saloon.dev/the-basics/responses).

```php
// Obtiene el raw body.
$response->body();

// Obtiene el estatus
$response->status();

// Decodifica el cuerpo de formato JSON a un array de PHP.
$response->json()

// Nos da el DTO como si llamaramos el método desde el Resource. 
$response->dto();
```
