@availity/api-axios
Version:
Wrappers for axios designed to work with the Availity portal
144 lines (105 loc) • 4.23 kB
Markdown
# /api-axios
> A package wrapping [axios](https://github.com/axios/axios) to help fetch data inside the Availity Portal
[](https://www.npmjs.com/package/@availity/api-axios)
[](https://www.npmjs.com/package/@availity/api-axios)
[](https://github.com/Availity/sdk-js/blob/master/packages/api-axios/package.json)
### What's new in version 6?
If you are looking for the old docs you can find them [here](./READMEv5)
- `/api-core` is no longer required. It has been added to this package
- Switch to `lodash/merge` for merging config
- Change how args are passed to `AvApi` constructor
- Require a single version of `axios` instead of a range
- Update to use `async/await` where applicable
## Install
### NPM
```bash
npm install /api-axios axios
```
### Yarn
```bash
yarn add /api-axios axios
```
## Documentation
Check out more documentation at [availity.github.io](https://availity.github.io/sdk-js/api/getting-started)
## Available Resources
This library exports several resources other than the `AvApi` class. There are several available classes which extend `AvApi` or `AvMicroserviceApi`. They offer the benefit of having pre-defined urls, and some even have methods available for easier data fetching.
The class for each resource is exported with a capital `A` while the instance is exported with a lowercase `a`. For example, `AvUserApi` vs `avUserApi`. If you need to extend the functionality of the resource then we recommend using the class. Otherwise, we recommend using the instance.
Details about each api can be found [here](../api-axios/src/resources/README.md)
- `AvMicroserviceApi`
- `AvProxyApi`
- `AvCodesApi`
- `AvDisclaimersApi`
- `AvFilesApi`
- `AvFilesDeliveryApi`
- `AvLogMessagesApi`
- `AvLogMessagesApiV2`
- `AvLogMessagesApiV3`
- `AvNavigationApi`
- `AvNotificationApi`
- `AvOrganizationsApi`
- `AvPdfApi`
- `AvPdfMicroserviceApi`
- `AvPermissionsApi`
- `AvProvidersApi`
- `AvRegionsApi`
- `AvRouteConfigurationsApi`
- `AvSettingsApi`
- `AvSlotMachineApi`
- `AvSpacesApi`
- `AvTelemetryApi`
- `AvUserApi`
- `AvUserPermissionsApi`
- `AvWebQLApi`
## Usage
### Extending `AvApi`
Create new API definitions by extending `AvApi`.
```js
import AvApi from '/api-axios';
class AvExampleResource extends AvApi {
constructor() {
super({
name: 'exampleApi',
});
}
}
export const avExampleResource = new AvExampleResource();
export default AvExampleResource;
```
### Creating an instance of your api
You can use `AvApi` to create a new instance that will make connecting to an endpoint much easier
```js
import AvApi from '/api-axios';
// Passing in claims as the name here means the url
// will get set to /api/v1/claims
// Now we can use the available functions to hit that url
const MyApi = new AvApi({ name: 'claims' });
// Create a function that will get entry with the id we pass in
// url will be /api/v1/claims/{id}
async function getClaim(id) {
const response = await MyApi.get(id);
return response.data;
}
```
### Using a pre-defined resource
Some of the pre-defined classes already have functions available to help make fetching data easier. One example is `avUserApi`. It has a method `me` which will fetch the currently logged in user
```js
import { avUserApi } from '/api-axios';
async function getUser() {
const user = await avUserApi.me();
return user;
}
```
## Creating Proxy API Definitions
Create new API definitions by extending `AvProxyApi`. Extending `AvProxyApi` provides services the behaviors described in [-core/README#features](../api-core/README.md#features) as well as building the url to match your tenant's proxy REST conventions.
```js
import { AvProxyApi } from '/api-axios';
class AvExampleResource extends AvProxyApi {
constructor() {
super({
tenant: 'myhealthplan',
name: 'patients',
});
}
}
export default new AvExampleResource();
```