@veeroute/lss-studio-angular
Version:
OpenAPI client for @veeroute/lss-studio-angular
186 lines (141 loc) • 8.2 kB
Markdown
# @veeroute/lss-studio-angular@7.37.3331
Programming interface for the Veeroute Studio tool. # Description The server side of Veeroute Studio. ## Reserved attributes These attribute keys are reserved for specific business logic: | Attribute key | Parent entity | Purpose | | ---------------------| ----------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `ICON_NAME` | location | The attribute value is written into the `web_location_geopoint.icon_name` field | | `FORCED_GEOPROVIDER` | geo_settings | The attribute value defines the geo data provider used for drawing trips on the map; it will be used instead of the value specified in `plan_settings.geo_settings.geo_provider` | | `TRIP_VERIFIED` | trip | The attribute value indicates whether the trip has been verified and approved manually | Usage example — overriding the geo provider for drawing trips in Studio: { \"plan_settings\": { \"geo_settings\": { \"attributes\": [ { \"key\": \"FORCED_GEOPROVIDER\", \"value\": \"OSRM_EXTERNAL\" } ] } } } ## Additional attributes Rules for processing additional attributes when using Universal Extension: * If the entity key does not exist — such an additional attribute is ignored * If the attribute key for the entity already exists — the attribute value will be overwritten after the calculation finishes ## Roles Restrictions on working with a virtual folder: * After creation, a folder cannot change its owner or company. * When a new folder is created not in ROOT, it inherits the owner and the company from the parent folder. Effect of the account role on the virtual file system: ### ADMIN, PARTNER, USER, BOT * Access only to one\'s own folders (`folder.owner_username = account.username`) and to files inside those folders * Ability to open any other user\'s files for editing via a direct file link ### COMPANYOWNER * Access only to folders of one\'s own company (`folder.owner_company_key = account.company_key`) and to files inside those folders * Ability to open any other user\'s files for editing via a direct file link ### OVERLORD * Access to all folders in the environment (`folder.owner_company_key = *`) and to files inside those folders ## Entity diagram 
The version of the OpenAPI document: 7.37.3331
## Building
To install the required dependencies and to build the typescript sources run:
```console
npm install
npm run build
```
## Publishing
First build the package then run `npm publish dist` (don't forget to specify the `dist` folder!)
## Consuming
Navigate to the folder of your consuming project and run one of next commands.
_published:_
```console
npm install @veeroute/lss-studio-angular@7.37.3331 --save
```
_without publishing (not recommended):_
```console
npm install PATH_TO_GENERATED_PACKAGE/dist.tgz --save
```
_It's important to take the tgz file, otherwise you'll get trouble with links on windows_
_using `npm link`:_
In PATH_TO_GENERATED_PACKAGE/dist:
```console
npm link
```
In your project:
```console
npm link @veeroute/lss-studio-angular
```
__Note for Windows users:__ The Angular CLI has troubles to use linked npm packages.
Please refer to this issue <https://github.com/angular/angular-cli/issues/8284> for a solution / workaround.
Published packages are not effected by this issue.
### General usage
In your Angular project:
```typescript
import { ApplicationConfig } from '@angular/core';
import { provideHttpClient } from '@angular/common/http';
import { provideApi } from '@veeroute/lss-studio-angular';
export const appConfig: ApplicationConfig = {
providers: [
// ...
provideHttpClient(),
provideApi()
],
};
```
**NOTE**
If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module:
```typescript
import { LssStudioApiModule } from '@veeroute/lss-studio-angular';
```
If different from the generated base path, during app bootstrap, you can provide the base path to your service.
```typescript
import { ApplicationConfig } from '@angular/core';
import { provideHttpClient } from '@angular/common/http';
import { provideApi } from '@veeroute/lss-studio-angular';
export const appConfig: ApplicationConfig = {
providers: [
// ...
provideHttpClient(),
provideApi('http://localhost:9999')
],
};
```
```typescript
// with a custom configuration
import { ApplicationConfig } from '@angular/core';
import { provideHttpClient } from '@angular/common/http';
import { provideApi } from '@veeroute/lss-studio-angular';
export const appConfig: ApplicationConfig = {
providers: [
// ...
provideHttpClient(),
provideApi({
withCredentials: true,
username: 'user',
password: 'password'
})
],
};
```
```typescript
// with factory building a custom configuration
import { ApplicationConfig } from '@angular/core';
import { provideHttpClient } from '@angular/common/http';
import { provideApi, Configuration } from '@veeroute/lss-studio-angular';
export const appConfig: ApplicationConfig = {
providers: [
// ...
provideHttpClient(),
{
provide: Configuration,
useFactory: (authService: AuthService) => new Configuration({
basePath: 'http://localhost:9999',
withCredentials: true,
username: authService.getUsername(),
password: authService.getPassword(),
}),
deps: [AuthService],
multi: false
}
],
};
```
### Using multiple OpenAPI files / APIs
In order to use multiple APIs generated from different OpenAPI files,
you can create an alias name when importing the modules
in order to avoid naming conflicts:
```typescript
import { provideApi as provideUserApi } from 'my-user-api-path';
import { provideApi as provideAdminApi } from 'my-admin-api-path';
import { HttpClientModule } from '@angular/common/http';
import { environment } from '../environments/environment';
export const appConfig: ApplicationConfig = {
providers: [
// ...
provideHttpClient(),
provideUserApi(environment.basePath),
provideAdminApi(environment.basePath),
],
};
```
### Customizing path parameter encoding
Without further customization, only [path-parameters][parameter-locations-url] of [style][style-values-url] 'simple'
and Dates for format 'date-time' are encoded correctly.
Other styles (e.g. "matrix") are not that easy to encode
and thus are best delegated to other libraries (e.g.: [@honoluluhenk/http-param-expander]).
To implement your own parameter encoding (or call another library),
pass an arrow-function or method-reference to the `encodeParam` property of the Configuration-object
(see [General Usage](#general-usage) above).
Example value for use in your Configuration-Provider:
```typescript
new Configuration({
encodeParam: (param: Param) => myFancyParamEncoder(param),
})
```
[parameter-locations-url]: https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameter-locations
[style-values-url]: https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values
[@honoluluhenk/http-param-expander]: https://www.npmjs.com/package/@honoluluhenk/http-param-expander