> **Deprecated.** Use [`@ariestools/sdk`](../../ariestools-sdk/README.md) instead. This package is a backward-compatibility re-export shim.

[![logo][]](https://xylabs.com)

# @xylabs/api

[![npm][npm-badge]][npm-link]
[![license][license-badge]][license-link]

> Base functionality used throughout XY Labs TypeScript/JavaScript libraries

## Install

Using npm:

```sh
npm install @xylabs/api
```

Using yarn:

```sh
yarn add @xylabs/api
```

Using pnpm:

```sh
pnpm add @xylabs/api
```

Using bun:

```sh
bun add @xylabs/api
```


## License

See the [LICENSE](LICENSE) file for license rights and limitations (LGPL-3.0-only).

## Reference

### packages

  ### api

    ### .temp-typedoc

      ### classes

        ### <a id="ApiClient"></a>ApiClient

[**@xylabs/api**](#../README)

***

Abstract base class for API clients that provides stage and token configuration.

## Constructors

### Constructor

```ts
new ApiClient(token?, stage?): ApiClient;
```

### Parameters

#### token?

`string` \| `null`

#### stage?

[`ApiStage`](#../type-aliases/ApiStage)

### Returns

`ApiClient`

## Properties

### stage?

```ts
protected optional stage?: ApiStage;
```

***

### token?

```ts
protected optional token?: string | null;
```

## Methods

### endPoint()

```ts
abstract endPoint(): string;
```

### Returns

`string`

        ### <a id="ApiEndpoint"></a>ApiEndpoint

[**@xylabs/api**](#../README)

***

Generic REST API endpoint wrapper that supports fetching and inserting typed data.

## Type Parameters

### T

`T`

The type of data returned by the endpoint

## Constructors

### Constructor

```ts
new ApiEndpoint<T>(config, path): ApiEndpoint<T>;
```

### Parameters

#### config

[`ApiConfig`](#../interfaces/ApiConfig)

#### path

`string`

### Returns

`ApiEndpoint`\<`T`\>

## Accessors

### value

### Get Signature

```ts
get value(): T | undefined;
```

#### Returns

`T` \| `undefined`

## Methods

### fetch()

```ts
fetch(): Promise<T>;
```

### Returns

`Promise`\<`T`\>

***

### get()

```ts
get(): Promise<T | NonNullable<T>>;
```

### Returns

`Promise`\<`T` \| `NonNullable`\<`T`\>\>

***

### insert()

```ts
insert(value): Promise<T>;
```

### Parameters

#### value

`T`

### Returns

`Promise`\<`T`\>

      ### functions

        ### <a id="getApiStage"></a>getApiStage

[**@xylabs/api**](#../README)

***

```ts
function getApiStage(hostname): "beta" | "local" | "prod";
```

Determines the API stage based on the hostname.

## Parameters

### hostname

`string`

The hostname to evaluate

## Returns

`"beta"` \| `"local"` \| `"prod"`

The corresponding ApiStage (Local, Beta, or Prod)

      ### interfaces

        ### <a id="ApiConfig"></a>ApiConfig

[**@xylabs/api**](#../README)

***

Configuration for connecting to an API, including domain, authentication, and user identification.

## Properties

### apiDomain

```ts
apiDomain: string;
```

***

### apiKey?

```ts
optional apiKey?: string;
```

***

### jwtToken?

```ts
optional jwtToken?: string;
```

***

### userid?

```ts
optional userid?: string;
```

      ### type-aliases

        ### <a id="ApiStage"></a>ApiStage

[**@xylabs/api**](#../README)

***

```ts
type ApiStage = EnumValue<typeof ApiStage>;
```

A valid API stage value ('prod', 'beta', or 'local').

      ### variables

        ### <a id="ApiStage"></a>ApiStage

[**@xylabs/api**](#../README)

***

```ts
const ApiStage: Enum<{
  Beta: "beta";
  Local: "local";
  Prod: "prod";
}>;
```

Deployment stage identifiers for API environments.

## Credits

[Made with 🔥 and ❄️ by XY Labs](https://xylabs.com)

[npm-badge]: https://img.shields.io/npm/v/@xylabs/api.svg
[npm-link]: https://www.npmjs.com/package/@xylabs/api
[license-badge]: https://img.shields.io/npm/l/@xylabs/api.svg
[license-link]: https://github.com/xylabs/sdk-js/blob/main/LICENSE
[logo]: https://cdn.xy.company/img/brand/XYPersistentCompany_Logo_Icon_Colored.svg
