bx-rest 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +83 -0
- package/README.en.md +207 -3
- package/README.md +207 -3
- package/esm2022/functions/errors.mjs +19 -2
- package/esm2022/public-api.mjs +6 -2
- package/esm2022/request-navvy/crm/item.mjs +1 -1
- package/esm2022/request-navvy/crm/type.mjs +1 -1
- package/esm2022/services/frame/frame.mjs +347 -0
- package/esm2022/services/frame/transport.mjs +224 -0
- package/esm2022/services/frame/types.mjs +2 -0
- package/esm2022/services/http/HttpBX.mjs +14 -6
- package/esm2022/services/http/authRefresh.mjs +89 -0
- package/esm2022/services/navvy/extends/navvy-pag-base.mjs +28 -5
- package/esm2022/services/navvy/navvy-alternative-pagination-navigation.mjs +2 -2
- package/esm2022/services/navvy/navvy-pag-nav-result-key-object.mjs +6 -7
- package/esm2022/services/navvy/navvy-pag-nav-result-key.mjs +6 -3
- package/esm2022/services/navvy/navvy-pag-nav-tasks.mjs +5 -4
- package/esm2022/services/navvy/navvy-pag-nav-with-useless-key.mjs +2 -2
- package/esm2022/services/navvy/navvy-pag.mjs +2 -2
- package/esm2022/typification/rest/crm/universal.mjs +1 -1
- package/esm2022/typification/settings.mjs +1 -1
- package/fesm2022/bx-rest.mjs +801 -97
- package/fesm2022/bx-rest.mjs.map +1 -1
- package/functions/errors.d.ts +18 -0
- package/package.json +4 -1
- package/public-api.d.ts +5 -1
- package/request-navvy/crm/item.d.ts +6 -6
- package/request-navvy/crm/type.d.ts +6 -6
- package/services/frame/frame.d.ts +191 -0
- package/services/frame/transport.d.ts +75 -0
- package/services/frame/types.d.ts +123 -0
- package/services/http/authRefresh.d.ts +19 -0
- package/services/navvy/extends/navvy-pag-base.d.ts +6 -0
- package/services/navvy/navvy-pag-nav-tasks.d.ts +3 -0
- package/typification/rest/crm/universal.d.ts +116 -0
- package/typification/settings.d.ts +17 -0
|
@@ -1,7 +1,123 @@
|
|
|
1
1
|
import { iBXRestPagination } from '../base/api-pagination-bx';
|
|
2
|
+
import { iBXRestYesNo } from '../base/yes-no';
|
|
2
3
|
export type iBXRestCrmObject = Record<string, unknown>;
|
|
3
4
|
export type iBXRestCrmFields = Record<string, unknown>;
|
|
4
5
|
export type iBXRestCrmParams = Record<string, unknown>;
|
|
6
|
+
/**
|
|
7
|
+
* Тип поля в ответе `crm.item.fields`. Портал может вернуть и другой тип,
|
|
8
|
+
* например зарегистрированный приложением через `userfieldtype.add`.
|
|
9
|
+
*/
|
|
10
|
+
export type iBXRestCrmItemFieldType = 'integer' | 'double' | 'string' | 'text' | 'boolean' | 'date' | 'datetime' | 'money' | 'url' | 'address' | 'file' | 'location' | 'user' | 'employee' | 'enumeration' | 'iblock_section' | 'iblock_element' | 'crm' | 'crm_status' | 'crm_category' | 'crm_currency' | 'crm_company' | 'crm_contact' | 'crm_lead' | 'crm_deal' | 'crm_quote' | 'crm_entity' | 'crm_multifield' | (string & {});
|
|
11
|
+
/** Настройки поля. Состав зависит от типа, поэтому описан только ключ, который задокументирован. */
|
|
12
|
+
export interface iBXRestCrmItemFieldSettings {
|
|
13
|
+
/** У поля связи — `entityTypeId` родителя (`parentId1098` → 1098, `companyId` → 4). */
|
|
14
|
+
parentEntityTypeId?: number;
|
|
15
|
+
[setting: string]: unknown;
|
|
16
|
+
}
|
|
17
|
+
/** Описание одного поля элемента CRM. */
|
|
18
|
+
export interface iBXRestCrmItemField {
|
|
19
|
+
type: iBXRestCrmItemFieldType;
|
|
20
|
+
title: string;
|
|
21
|
+
isRequired: boolean;
|
|
22
|
+
isReadOnly: boolean;
|
|
23
|
+
isImmutable: boolean;
|
|
24
|
+
isMultiple: boolean;
|
|
25
|
+
isDynamic: boolean;
|
|
26
|
+
upperName: string;
|
|
27
|
+
settings?: iBXRestCrmItemFieldSettings;
|
|
28
|
+
/** У поля `crm_status` — справочник значений для `crm.status.list`, например `DYNAMIC_1268_STAGE_52`. */
|
|
29
|
+
statusType?: string;
|
|
30
|
+
isDeprecated?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/** Ответ `crm.item.fields`. Ключ — идентификатор поля. */
|
|
33
|
+
export interface iBXRestCrmItemFieldsResult {
|
|
34
|
+
fields: Record<string, iBXRestCrmItemField>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Элемент CRM в методах `crm.item.*`. Описаны поля, общие для типов объектов; какие из них придут,
|
|
38
|
+
* зависит от типа объекта, настроек смарт-процесса и `select`. Остальное, включая `parentId<entityTypeId>`
|
|
39
|
+
* и пользовательские поля `ufCrm...`, доступно по индексу: их набор у каждого портала свой.
|
|
40
|
+
*
|
|
41
|
+
* Значения приходят как есть: `stageId` — код стадии, `companyId` — идентификатор, поле типа `money` —
|
|
42
|
+
* строка `1500.00|RUB`. Названия нужно получать отдельно.
|
|
43
|
+
*/
|
|
44
|
+
export interface iBXRestCrmItem {
|
|
45
|
+
/** В `crm.item.list` при заданном `select` приходит, только если указан в нём. */
|
|
46
|
+
id?: number;
|
|
47
|
+
xmlId?: string;
|
|
48
|
+
/** Нет у контактов: у них имя в `name`, `secondName` и `lastName`. */
|
|
49
|
+
title?: string;
|
|
50
|
+
/** Есть только у лидов и контактов, как и `secondName` и `lastName`. Незаполненное значение приходит как `null`. */
|
|
51
|
+
name?: string | null;
|
|
52
|
+
secondName?: string | null;
|
|
53
|
+
lastName?: string | null;
|
|
54
|
+
assignedById?: number;
|
|
55
|
+
createdBy?: number;
|
|
56
|
+
updatedBy?: number;
|
|
57
|
+
movedBy?: number;
|
|
58
|
+
createdTime?: string;
|
|
59
|
+
updatedTime?: string;
|
|
60
|
+
movedTime?: string;
|
|
61
|
+
categoryId?: number;
|
|
62
|
+
stageId?: string;
|
|
63
|
+
previousStageId?: string;
|
|
64
|
+
begindate?: string;
|
|
65
|
+
closedate?: string;
|
|
66
|
+
/** У контактов устарел, там нужен `companyIds`. */
|
|
67
|
+
companyId?: number;
|
|
68
|
+
/** Есть только у контактов. */
|
|
69
|
+
companyIds?: number[];
|
|
70
|
+
/** @deprecated Используйте `contactIds`. */
|
|
71
|
+
contactId?: number;
|
|
72
|
+
contactIds?: number[];
|
|
73
|
+
opportunity?: number;
|
|
74
|
+
taxValue?: number;
|
|
75
|
+
currencyId?: string;
|
|
76
|
+
observers?: number[];
|
|
77
|
+
[field: string]: unknown;
|
|
78
|
+
}
|
|
79
|
+
/** Ответ `crm.item.add`, `crm.item.get` и `crm.item.update`. `select` у них нет, поэтому `id` приходит всегда. */
|
|
80
|
+
export interface iBXRestCrmItemResult {
|
|
81
|
+
item: iBXRestCrmItem & {
|
|
82
|
+
id: number;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Смарт-процесс в методах `crm.type.*`. Остальное, например `relations` и `linkedUserFields`
|
|
87
|
+
* в ответе `crm.type.get`, доступно по индексу.
|
|
88
|
+
*/
|
|
89
|
+
export interface iBXRestCrmType {
|
|
90
|
+
id: number;
|
|
91
|
+
title: string;
|
|
92
|
+
code?: string;
|
|
93
|
+
entityTypeId: number;
|
|
94
|
+
customSectionId?: number | null;
|
|
95
|
+
isCategoriesEnabled?: iBXRestYesNo;
|
|
96
|
+
isStagesEnabled?: iBXRestYesNo;
|
|
97
|
+
isBeginCloseDatesEnabled?: iBXRestYesNo;
|
|
98
|
+
isClientEnabled?: iBXRestYesNo;
|
|
99
|
+
isUseInUserfieldEnabled?: iBXRestYesNo;
|
|
100
|
+
isLinkWithProductsEnabled?: iBXRestYesNo;
|
|
101
|
+
isMycompanyEnabled?: iBXRestYesNo;
|
|
102
|
+
isDocumentsEnabled?: iBXRestYesNo;
|
|
103
|
+
isSourceEnabled?: iBXRestYesNo;
|
|
104
|
+
isObserversEnabled?: iBXRestYesNo;
|
|
105
|
+
isRecyclebinEnabled?: iBXRestYesNo;
|
|
106
|
+
isAutomationEnabled?: iBXRestYesNo;
|
|
107
|
+
isBizProcEnabled?: iBXRestYesNo;
|
|
108
|
+
isSetOpenPermissions?: iBXRestYesNo;
|
|
109
|
+
isPaymentsEnabled?: iBXRestYesNo;
|
|
110
|
+
isCountersEnabled?: iBXRestYesNo;
|
|
111
|
+
createdBy?: number;
|
|
112
|
+
updatedBy?: number;
|
|
113
|
+
createdTime?: string;
|
|
114
|
+
updatedTime?: string;
|
|
115
|
+
[field: string]: unknown;
|
|
116
|
+
}
|
|
117
|
+
/** Ответ `crm.type.add`, `crm.type.get`, `crm.type.getByEntityTypeId` и `crm.type.update`. */
|
|
118
|
+
export interface iBXRestCrmTypeResult {
|
|
119
|
+
type: iBXRestCrmType;
|
|
120
|
+
}
|
|
5
121
|
export interface iBXRestParamCrmEntityType {
|
|
6
122
|
entityTypeId: number;
|
|
7
123
|
}
|
|
@@ -2,6 +2,23 @@ export interface iBXRestSettings {
|
|
|
2
2
|
auth: {
|
|
3
3
|
source: 'cookies' | 'localStorage' | 'off' | (() => string);
|
|
4
4
|
key: 'auth' | 'sessid' | string;
|
|
5
|
+
/**
|
|
6
|
+
* Продление авторизации. Если запрос упал с ошибкой авторизации (см.
|
|
7
|
+
* `isAuthError`), библиотека вызывает эту функцию и повторяет запрос
|
|
8
|
+
* один раз — заново читая токен, адрес и заголовки из настроек. Поэтому
|
|
9
|
+
* функция должна положить новый токен туда, откуда его читает `source`
|
|
10
|
+
* (или, для прокси, передать его на сервер). Значение промиса не
|
|
11
|
+
* используется. Одновременно упавшие запросы ждут одно общее продление.
|
|
12
|
+
*
|
|
13
|
+
* Если не задано — запросы не повторяются (поведение до 1.4.0).
|
|
14
|
+
*/
|
|
15
|
+
refresh?: () => Promise<unknown>;
|
|
16
|
+
/**
|
|
17
|
+
* Какую ошибку запроса считать ошибкой авторизации, которую лечит
|
|
18
|
+
* `refresh`. Получает исходную ошибку HTTP-запроса — обычно `AxiosError`.
|
|
19
|
+
* По умолчанию — `isBXRestAuthError`.
|
|
20
|
+
*/
|
|
21
|
+
isAuthError?: (error: unknown) => boolean;
|
|
5
22
|
};
|
|
6
23
|
urls: {
|
|
7
24
|
source: 'string' | 'localStorage';
|