@vality/swag-anapi-v2
TypeScript icon, indicating that this package has built-in type declarations

2.0.1-dc90399.0 • Public • Published

@vality/swag-anapi-v2@2.0.0

Описание Vality Analytics API является точкой взаимодействия с аналитической и поисковой частью платформы. Все аналитическое запросы осуществляются с помощью вызовов соответствующих методов API. Любые сторонние приложения, включая наши веб-сайты, личные кабинеты и другие UI-интерфейсы являются внешними приложениями-клиентами. Vality Analytics API работает поверх HTTP-протокола. Мы используем REST архитектуру, схема описывается в соответствии со стандартом OpenAPI v3.0. Коды возврата описываются соответствующими HTTP-статусами. Платформа принимает и возвращает JSON-структуры в HTTP body. ## Запросы Любой вызов методов API обязан предваряться предоставлением уникального для участника в пределах платформы ID запроса. Данный ID передается в соответствующем заголовке HTTP-запроса: X-Request-ID: oX5MWM2AQy Платформа гарантирует идемпотентность запросов, отправленных с одинаковым ID. ## Тип содержимого и кодировка Любой запрос к API должен выполняться в кодировке UTF-8 и с указанием содержимого в формате JSON Content-Type: application/json; charset=utf-8 ## Формат дат Платформа принимает значения date-time в стандарте ISO 8601 с обязательным указанием UTC-оффсета, например: 2017-01-01T00:00:00Z 2017-01-01T00:00:01+00:00 ## Максимальное время обработки запроса К любому вызову методов API можно добавить параметр отсечки по времени, определяющий максимальное время ожидания завершения операции по запросу. Данная отсечка передается в соответствующем заголовке HTTP-запроса: X-Request-Deadline: 10s Значение отсечки может быть задано в формате ISO 8601 (см. Формат дат), либо в относительных величинах, например: 150000ms, 540s, 3.5m При этом возможные единицы измерения ms, s, m. В обоих случаях не рекомендуется, чтобы задаваемое значение было меньше 3 секунд и превышало 1 минуту. ## Поиск по магазинам API предоставляет несколько различных критериев для выбора магазинов, в рамках которых будет выполняться поиск или аналитика: shopID, shopIDs, paymentInstitutionRealm, excludeShopIDs. В случае использования нескольких критериев одновременно в выборку будут включены магазины, подпадающие под хотя бы один из перечисленных критериев. ## Коды ошибок ### Ошибки бизнес-логики Все ошибки бизнес-логики имеют следующий вид: json { \"code\": \"string\", \"message\": \"string\" } В поле code содержится тип ошибки, а в message - дополнительная информация по произошедшей ошибке. На данный момент существуют следующие коды ошибок: | Код | Описание | | --- | -------- | | invalidDeadline | Неверный формат максимального времени обработки запроса. | | ambiguousPartyID | Невозможно однозначно определить идентификатор участника, укажите идентификатор в запросе явно. | | invalidPartyID | Участник с указанным идентификатором не существует или недоступен. | | invalidRequest | Прочие неверные данные запроса. | | limitExceeded | Запрашиваемое количество данных должно быть меньше чем указано. | | badContinuationToken | Не валидный ContinuationToken. | ### Общие ошибки Ошибки возникающие при попытках совершения операций с незарегистрированными в системе объектами. Имеют вид json { \"message\": \"string\" } В поле message содержится информация по произошедшей ошибке. Например: json { \"message\": \"Invalid token\" } ### Ошибки обработки запросов В процессе обработки запросов силами нашей платформы могут происходить различные непредвиденные ситуации. Об их появлении платформа сигнализирует по протоколу HTTP соответствующими [статусами][5xx], обозначающими ошибки сервера. | Код | Описание | | ------- | ---------- | | 500 | В процессе обработки платформой запроса возникла непредвиденная ситуация. При получении подобного кода ответа мы рекомендуем обратиться в техническую поддержку. | | 503 | Платформа временно недоступна и не готова обслуживать данный запрос. Запрос гарантированно не выполнен, при получении подобного кода ответа попробуйте выполнить его позднее, когда доступность платформы будет восстановлена. | | 504 | Платформа превысила допустимое время обработки запроса, результат запроса не определён. Попробуйте отправить запрос повторно или выяснить результат выполнения исходного запроса, если повторное исполнение запроса нежелательно. | [5xx]: https://tools.ietf.org/html/rfc7231#section-6.6 Если вы получили ошибку, которой нет в данном описании, обратитесь в техническую поддержку.

The version of the OpenAPI document: 2.0.0

Building

To install the required dependencies and to build the typescript sources run:

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:

npm install @vality/swag-anapi-v2@2.0.0 --save

without publishing (not recommended):

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:

npm link

In your project:

npm link @vality/swag-anapi-v2

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:

// without configuring providers
import { ApiModule } from '@vality/swag-anapi-v2';
import { HttpClientModule } from '@angular/common/http';

@NgModule({
    imports: [
        ApiModule,
        // make sure to import the HttpClientModule in the AppModule only,
        // see https://github.com/angular/angular/issues/20575
        HttpClientModule
    ],
    declarations: [ AppComponent ],
    providers: [],
    bootstrap: [ AppComponent ]
})
export class AppModule {}
// configuring providers
import { ApiModule, Configuration, ConfigurationParameters } from '@vality/swag-anapi-v2';

export function apiConfigFactory (): Configuration {
  const params: ConfigurationParameters = {
    // set configuration parameters here.
  }
  return new Configuration(params);
}

@NgModule({
    imports: [ ApiModule.forRoot(apiConfigFactory) ],
    declarations: [ AppComponent ],
    providers: [],
    bootstrap: [ AppComponent ]
})
export class AppModule {}
// configuring providers with an authentication service that manages your access tokens
import { ApiModule, Configuration } from '@vality/swag-anapi-v2';

@NgModule({
    imports: [ ApiModule ],
    declarations: [ AppComponent ],
    providers: [
      {
        provide: Configuration,
        useFactory: (authService: AuthService) => new Configuration(
          {
            basePath: environment.apiUrl,
            accessToken: authService.getAccessToken.bind(authService)
          }
        ),
        deps: [AuthService],
        multi: false
      }
    ],
    bootstrap: [ AppComponent ]
})
export class AppModule {}
import { DefaultApi } from '@vality/swag-anapi-v2';

export class AppComponent {
    constructor(private apiGateway: DefaultApi) { }
}

Note: The ApiModule is restricted to being instantiated once app wide. This is to ensure that all services are treated as singletons.

Using multiple OpenAPI files / APIs / ApiModules

In order to use multiple ApiModules generated from different OpenAPI files, you can create an alias name when importing the modules in order to avoid naming conflicts:

import { ApiModule } from 'my-api-path';
import { ApiModule as OtherApiModule } from 'my-other-api-path';
import { HttpClientModule } from '@angular/common/http';

@NgModule({
  imports: [
    ApiModule,
    OtherApiModule,
    // make sure to import the HttpClientModule in the AppModule only,
    // see https://github.com/angular/angular/issues/20575
    HttpClientModule
  ]
})
export class AppModule {

}

Set service base path

If different than the generated base path, during app bootstrap, you can provide the base path to your service.

import { BASE_PATH } from '@vality/swag-anapi-v2';

bootstrap(AppComponent, [
    { provide: BASE_PATH, useValue: 'https://your-web-service.com' },
]);

or

import { BASE_PATH } from '@vality/swag-anapi-v2';

@NgModule({
    imports: [],
    declarations: [ AppComponent ],
    providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ],
    bootstrap: [ AppComponent ]
})
export class AppModule {}

Using @angular/cli

First extend your src/environments/*.ts files by adding the corresponding base path:

export const environment = {
  production: false,
  API_BASE_PATH: 'http://127.0.0.1:8080'
};

In the src/app/app.module.ts:

import { BASE_PATH } from '@vality/swag-anapi-v2';
import { environment } from '../environments/environment';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [ ],
  providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }],
  bootstrap: [ AppComponent ]
})
export class AppModule { }

Customizing path parameter encoding

Without further customization, only path-parameters of style '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 above).

Example value for use in your Configuration-Provider:

new Configuration({
    encodeParam: (param: Param) => myFancyParamEncoder(param),
})

Dependencies (1)

Dev Dependencies (0)

    Package Sidebar

    Install

    npm i @vality/swag-anapi-v2

    Weekly Downloads

    17

    Version

    2.0.1-dc90399.0

    License

    Apache-2.0

    Unpacked Size

    580 kB

    Total Files

    101

    Last publish

    Collaborators

    • chchmthrfckr
    • krickray
    • vality.devs
    • keinasylum