@joymerrevent/porters-connect 0.20.1 → 0.22.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 +123 -10
- package/README.md +45 -42
- package/dist/index.d.cts +170 -142
- package/dist/index.d.ts +170 -142
- package/dist/index.js +58 -25
- package/dist/index.js.map +1 -1
- package/package.json +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,115 @@
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.22.0] - 2026-09-23
|
|
9
|
+
|
|
10
|
+
**読み取りの値の検証を 1 つ増やし、使い方ドキュメントを組み直した版**です。破壊的変更はありませんが、
|
|
11
|
+
**宣言が実際の項目と合っていないと、これまで通っていた読み取りがエラーになることがあります**(下の Changed)。
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- **数値でない文字列を `Number` として読まなくなりました**。`Number` / `System[Id]` の項目と
|
|
16
|
+
`Link` のスカラ形(Contact の ID)に数値として読めない値が来ると、`PortersResourceError`
|
|
17
|
+
(`category: "validation"`・項目名つき)で失敗します。これまでは `Number("社内候補")` の結果=**`NaN`** が
|
|
18
|
+
黙って読み取り値に入り、`typeof === "number"` と `null` 判定の両方を通り、そのまま `update` に戻すと
|
|
19
|
+
`<Alias>NaN</Alias>` を送っていました。
|
|
20
|
+
|
|
21
|
+
```text
|
|
22
|
+
U_score: declared Number, but "社内候補" is not a PORTERS Number value
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
- 起きるのは**宣言が違うとき**です(テキストの項目を `f.number()` と宣言した、など)。PORTERS が
|
|
26
|
+
Number 項目に数値以外を返す書式は出典にありません。日時(`f.date()` 等)が 0.15.0 から同じ形で
|
|
27
|
+
エラーになるのと揃えました。
|
|
28
|
+
- 数値として読める値(`"87"` / `"-1.25"` / 前後の空白)と空(`null`)は変わりません。
|
|
29
|
+
- 書き込み側は変えていません(`NaN` を渡す JS コードはこれまでどおりそのまま送られます)。
|
|
30
|
+
- 上げる前に宣言を確かめるなら、これまでどおり `verifyFields` です。
|
|
31
|
+
|
|
32
|
+
- **使い方ドキュメント(`docs/usage/`)を 7 章に組み直しました**。導入/主題別/クライアント/リソース別/
|
|
33
|
+
関数/実践例/リファレンスの順で、目次(`docs/usage/index.md`)から章を辿ります。
|
|
34
|
+
- **リソース別**は 18 種に 1 ページずつで、どのページも「呼べるメソッド → 固有の注意 → 新規作成の必須項目 →
|
|
35
|
+
項目と型」の同じ順に並びます。
|
|
36
|
+
- **クライアント**(`PortersClient` の構築オプション・`porters.auth` の 6 メソッド・`tenant(id)` のスコープ)と
|
|
37
|
+
**関数**(宣言と突合・上限と接続・値の変換)の章を新設し、導入と主題別に散らばっていた一覧をまとめました。
|
|
38
|
+
- **主題別**(検索・書き込み・認証・カスタム項目・上限など)は「まず知ること → 使い方 → 細かい規則」の順に
|
|
39
|
+
書き直し、言い回しを平易にしています。内容の食い違い(`Promise` を返さない関数の一覧の漏れなど)も直しました。
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
|
|
43
|
+
- **単件の `create` / `update` が、`of()` で指定済みの項目(Phase の `Resource`)を渡されたとき、
|
|
44
|
+
同期 throw していました**。`Promise` を返すほかの公開メソッドと同じく、reject で届くようにしました。
|
|
45
|
+
入力型が `Resource` を受け付けないので、TypeScript から普通に書く限り起きません(`as any` を通した場合と
|
|
46
|
+
JavaScript から呼んだ場合だけ)。例外の種類・`message`・`category` は変わりません。
|
|
47
|
+
|
|
48
|
+
## [0.21.0] - 2026-09-21
|
|
49
|
+
|
|
50
|
+
**カスタム項目の宣言を、partition を束ねる `tenant(id)` で受け取るようにした版**です。
|
|
51
|
+
**破壊的変更を 1 つ**含みます(コンストラクタの `fields` の廃止。移行は 1 対 1)。あわせて、
|
|
52
|
+
利用者が読むもの(公開 JSDoc・使い方ドキュメント・エラーの `hint`)から、保守者向けの識別子と
|
|
53
|
+
廃止済みのオプション名を取り除きました。
|
|
54
|
+
|
|
55
|
+
### Changed
|
|
56
|
+
|
|
57
|
+
- **(破壊的)カスタム項目の宣言は `tenant(id, { fields })` で受け取るようになりました**([ADR-0087][adr87])。
|
|
58
|
+
`PortersClientOptions` から `fields` が無くなり、`PortersClient` / `PortersClientOptions` は
|
|
59
|
+
型引数を取らなくなります。
|
|
60
|
+
|
|
61
|
+
カスタム項目(`U_` / `A_`)は **partition(Company DB)ごとのもの**です — 出典の各リソース記事が
|
|
62
|
+
「テナント毎に異なる」としています。これまで宣言は client に 1 つしか持てず、項目構成の違う
|
|
63
|
+
テナントを同じ client で扱うと、**別テナントの宣言が黙って適用される**形でした(ずれは読み取り時の
|
|
64
|
+
`validation` エラーで見えますが〔0.15.0〕、どのテナントの宣言を当てたのかをライブラリは知らないので、
|
|
65
|
+
正しい宣言に取り替える手掛かりがありません)。partition を束ねる `tenant(id)` が、
|
|
66
|
+
その partition の項目の形も束ねます。
|
|
67
|
+
|
|
68
|
+
```ts
|
|
69
|
+
// 変更前
|
|
70
|
+
const porters = new PortersClient({ hostname, appId, appSecret, fields });
|
|
71
|
+
const t = porters.tenant(123);
|
|
72
|
+
|
|
73
|
+
// 変更後
|
|
74
|
+
const porters = new PortersClient({ hostname, appId, appSecret });
|
|
75
|
+
const t = porters.tenant(123, { fields });
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
- **移行は 1 対 1**です。コンストラクタの `fields` を `tenant()` の第 2 引数に移すだけで、
|
|
79
|
+
`t` 以降のコードは変わりません。`tenant(id)`(第 2 引数なし)はこれまでどおり標準項目だけです。
|
|
80
|
+
- **項目構成の違うテナント群を 1 つの client(1 つのトークン)で扱えます**。
|
|
81
|
+
`porters.tenant(1, { fields: a })` と `porters.tenant(2, { fields: b })` は、それぞれの宣言で
|
|
82
|
+
読み書きします。client を分けるのは**トークンを分けたいとき**だけになりました。
|
|
83
|
+
- `A_` を App 共通、`U_` をテナント固有にしたい場合は、共通部分を関数にして各テナントの宣言に
|
|
84
|
+
spread します(ライブラリは `A_` と `U_` を区別しません)。書き方は
|
|
85
|
+
[カスタム項目ガイド][howto-custom-fields]にあります。
|
|
86
|
+
- **コンストラクタに `fields` が残っていると、構築時に `PortersConfigError`**(`category: "config"`)で
|
|
87
|
+
止まります。`hint` が `tenant(id, { fields })` を指します。型でも弾きます(`fields` は `never`)。
|
|
88
|
+
黙って無視すると宣言が丸ごと捨てられ、カスタム項目が型から消えたまま動いてしまうためです。
|
|
89
|
+
`fields: undefined` は未指定と同じ扱いです。
|
|
90
|
+
- 型を書くときは、`PortersClient<typeof fields>` / `PortersClientOptions<typeof fields>` が
|
|
91
|
+
**コンパイルエラー**になります。スコープを受ける関数は `TenantScope<typeof fields>`(これまでどおり)、
|
|
92
|
+
`tenant()` の引数を切り出すなら新設の `TenantOptions<typeof fields>` で書きます。
|
|
93
|
+
`ReturnType<typeof porters.tenant>` で受けていた関数は、`tenant` がジェネリックになったため
|
|
94
|
+
**広い型(`TenantScope<DeclaredCatalogs>`)**に落ち、カスタム項目が型から消えます(使う箇所で
|
|
95
|
+
コンパイルエラーになります)。`TenantScope<typeof fields>` に書き換えてください。
|
|
96
|
+
- `generateFieldDecls` / `verifyFields` / `readCustomCatalog` は変わりません(もともと `tenant(id)`
|
|
97
|
+
スコープを取ります)。
|
|
98
|
+
|
|
99
|
+
- **公開 API の JSDoc(IDE のホバーと API リファレンスに出る説明文)から、ADR 番号やレビュー指摘番号
|
|
100
|
+
などの保守者向けの識別子を取り除きました**。利用者には意味を持たない情報で、根拠は実装コメントへ
|
|
101
|
+
移しています。型・メソッドの意味や挙動は変わりません(説明文だけの変更)。同じ識別子が
|
|
102
|
+
生成物に戻らないよう、API リファレンスと配布する型定義(`dist/index.d.ts`)を検査するようにしました。
|
|
103
|
+
|
|
104
|
+
- **利用者向けドキュメント(`docs/usage/` と README)の本文からも、同じ識別子と設計文書へのリンクを
|
|
105
|
+
取り除きました**。説明の内容は変わりません。文末の `(ADR-0059)` のような表記が消え、設計文書に
|
|
106
|
+
委ねていた数か所は本文に書き足しています。PORTERS ヘルプセンターの再取得手順(保守者向け)は
|
|
107
|
+
`CONTRIBUTING.md` へ移しました。あわせて、リリース前に使い方ドキュメント全体を実装と突き合わせ、
|
|
108
|
+
実装と食い違っていた記述(権限付与未実施のときのエラーの系統、`tenant(id, { fields })` 以前の
|
|
109
|
+
「client を分ける」案内など)を直しています。
|
|
110
|
+
|
|
111
|
+
### Fixed
|
|
112
|
+
|
|
113
|
+
- **PORTERS 以外が返した HTTP エラー(`category: "config"`)の `hint`** が、0.18.0 で廃止した
|
|
114
|
+
オプション名 `host` を案内していました。現在の `hostname` / `port` / `scheme` を指すように直しました。
|
|
115
|
+
挙動は変わりません(説明文だけの変更)。
|
|
116
|
+
|
|
8
117
|
## [0.20.1] - 2026-09-21
|
|
9
118
|
|
|
10
119
|
**定期レビュー(0.20.0 直後)で見つけた 1 件を塞いだ版**です。破壊的変更はありません。
|
|
@@ -204,7 +313,7 @@ reference にも実装にも無く、**時分型**(2026/08・PORTERS 9.3.0)
|
|
|
204
313
|
|
|
205
314
|
PORTERS が `resource=` を **URL パラメータで必須**に要求するエンドポイントは 3 つ(Field / Phase /
|
|
206
315
|
Attachment)あるのに、受け口の形が 3 つとも違っていました。**パラメータのリソースは `of(name)` で
|
|
207
|
-
束ね、項目の値は宣言した Data Type
|
|
316
|
+
束ね、項目の値は宣言した Data Type どおり(数値)** という線を引き、3 本とも `of()` に揃えています。
|
|
208
317
|
|
|
209
318
|
### Added
|
|
210
319
|
|
|
@@ -890,7 +999,7 @@ Attachment)あるのに、受け口の形が 3 つとも違っていました
|
|
|
890
999
|
**呼び出し側の書き味は変わりません**。
|
|
891
1000
|
- **App レベルのものは `porters` 側に残ります**(いずれも `partition` を取りません)—
|
|
892
1001
|
`porters.auth.*`(OAuth)と `porters.partition.search()`(partition の発見)。
|
|
893
|
-
- 理由: `partition`
|
|
1002
|
+
- 理由: `partition` 未設定のクライアントは **`partition=0`** を全リクエストに載せていました。
|
|
894
1003
|
`0` は PORTERS のドキュメントに存在しない値で、由来は最初の PoC の穴埋めです。実際には
|
|
895
1004
|
Result Code **404** を招くため、**設定漏れが「サーバーが 404 を返す」形に化け**ていました。
|
|
896
1005
|
`tenant(id)` を唯一の経路にすることで、**「partition を束ね忘れたクライアント」という状態が
|
|
@@ -1177,7 +1286,7 @@ Attachment)あるのに、受け口の形が 3 つとも違っていました
|
|
|
1177
1286
|
- **エラー対処ガイド**: [docs/howto/handle-failures.md][guide](症状別早見表+2 系統のコード対応表)。
|
|
1178
1287
|
- **配布**: ESM / Node.js 18+ / 型定義同梱 / MIT。`X-P-ConnectAPI-Version: 2` を既定送信(PORTERS 8.x・9.x 想定)。
|
|
1179
1288
|
|
|
1180
|
-
[guide]: docs/usage/
|
|
1289
|
+
[guide]: docs/usage/topics/errors.md
|
|
1181
1290
|
[adr44]: docs/adr/0044-http-status-handling.md
|
|
1182
1291
|
[adr45]: docs/adr/0045-write-response-root-code.md
|
|
1183
1292
|
[adr46]: docs/adr/0046-guard-error-contract.md
|
|
@@ -1186,12 +1295,12 @@ Attachment)あるのに、受け口の形が 3 つとも違っていました
|
|
|
1186
1295
|
[adr50]: docs/adr/0050-auth-http-status-handling.md
|
|
1187
1296
|
[adr51]: docs/adr/0051-read-envelope-identification.md
|
|
1188
1297
|
[adr47]: docs/adr/0047-access-point-scheme.md
|
|
1189
|
-
[oauth-guide]: docs/usage/
|
|
1298
|
+
[oauth-guide]: docs/usage/topics/auth.md
|
|
1190
1299
|
[adr19]: docs/adr/0019-static-resource-types.md
|
|
1191
1300
|
[adr20]: docs/adr/0020-read-field-default.md
|
|
1192
1301
|
[adr35]: docs/adr/0035-usage-documentation-structure.md
|
|
1193
|
-
[custom-fields-guide]: docs/usage/
|
|
1194
|
-
[read-query-guide]: docs/usage/
|
|
1302
|
+
[custom-fields-guide]: docs/usage/topics/custom-fields.md
|
|
1303
|
+
[read-query-guide]: docs/usage/topics/query.md
|
|
1195
1304
|
[adr55]: docs/adr/0055-partition-binding-guard.md
|
|
1196
1305
|
[adr56]: docs/adr/0056-deleted-flag-typing.md
|
|
1197
1306
|
[adr57]: docs/adr/0057-itemstate-existing-explicit.md
|
|
@@ -1204,7 +1313,7 @@ Attachment)あるのに、受け口の形が 3 つとも違っていました
|
|
|
1204
1313
|
[rv22]: docs/reviews/rv/0022-ratelimit-create-no-retry.md
|
|
1205
1314
|
[rv32]: docs/reviews/rv/0032-searchall-query-mutation.md
|
|
1206
1315
|
[rv44]: docs/reviews/rv/0044-fields-excluded-from-coverage.md
|
|
1207
|
-
[write-constraints]: docs/usage/
|
|
1316
|
+
[write-constraints]: docs/usage/topics/limits.md
|
|
1208
1317
|
[adr68]: docs/adr/0068-api-reference-tooling.md
|
|
1209
1318
|
[adr69]: docs/adr/0069-tenant-field-catalog-tooling.md
|
|
1210
1319
|
[adr73]: docs/adr/0073-throttle-sharing.md
|
|
@@ -1217,14 +1326,16 @@ Attachment)あるのに、受け口の形が 3 つとも違っていました
|
|
|
1217
1326
|
[adr80]: docs/adr/0080-resource-parameter-binding.md
|
|
1218
1327
|
[adr81]: docs/adr/0081-attachment-read-parameters.md
|
|
1219
1328
|
[adr82]: docs/adr/0082-module-format-and-node-baseline.md
|
|
1220
|
-
[limits]: docs/usage/
|
|
1221
|
-
[failures]: docs/usage/
|
|
1329
|
+
[limits]: docs/usage/topics/limits.md
|
|
1330
|
+
[failures]: docs/usage/topics/errors.md
|
|
1222
1331
|
[adr85]: docs/adr/0085-option-alias-validation.md
|
|
1223
1332
|
[lv]: docs/live-verification.md
|
|
1224
1333
|
[ref]: docs/usage/reference/README.md
|
|
1225
1334
|
[kac]: https://keepachangelog.com/en/1.1.0/
|
|
1226
1335
|
[semver]: https://semver.org/
|
|
1227
|
-
[unreleased]: https://github.com/Joymerrevent/porters-connect/compare/v0.
|
|
1336
|
+
[unreleased]: https://github.com/Joymerrevent/porters-connect/compare/v0.22.0...HEAD
|
|
1337
|
+
[0.22.0]: https://github.com/Joymerrevent/porters-connect/compare/v0.21.0...v0.22.0
|
|
1338
|
+
[0.21.0]: https://github.com/Joymerrevent/porters-connect/compare/v0.20.1...v0.21.0
|
|
1228
1339
|
[0.20.1]: https://github.com/Joymerrevent/porters-connect/compare/v0.20.0...v0.20.1
|
|
1229
1340
|
[0.20.0]: https://github.com/Joymerrevent/porters-connect/compare/v0.19.1...v0.20.0
|
|
1230
1341
|
[0.19.1]: https://github.com/Joymerrevent/porters-connect/compare/v0.19.0...v0.19.1
|
|
@@ -1260,4 +1371,6 @@ Attachment)あるのに、受け口の形が 3 つとも違っていました
|
|
|
1260
1371
|
[gh5]: https://github.com/advisories/GHSA-7w5x-hrqm-74c2
|
|
1261
1372
|
[fastcheck]: https://github.com/dubzzz/fast-check
|
|
1262
1373
|
[adr86]: docs/adr/0086-time-of-day-fields.md
|
|
1374
|
+
[adr87]: docs/adr/0087-tenant-scoped-field-declarations.md
|
|
1375
|
+
[howto-custom-fields]: docs/usage/topics/custom-fields.md
|
|
1263
1376
|
[ref-department]: docs/usage/reference/resource-api/resources/department.md
|
package/README.md
CHANGED
|
@@ -10,36 +10,35 @@ PORTERS Connect API(旧 HRBC)を **TypeScript から型安全・簡単に**
|
|
|
10
10
|
> 利用には **PORTERS の契約 + Connect API オプション契約**が必要です(ホスト名・App ID/Secret は契約時に通知されます)。
|
|
11
11
|
|
|
12
12
|
XML レスポンスを型付きオブジェクトに変換し、独自仕様の OAuth・レート制御・エラー整理を内側に隠します。
|
|
13
|
-
**薄く・堅く**を方針に、フェイルセーフ(壊れたときに安全側へ倒れる)設計です。
|
|
14
13
|
|
|
15
14
|
---
|
|
16
15
|
|
|
17
16
|
## 特徴
|
|
18
17
|
|
|
19
|
-
- **型安全**:リソース・項目の値を型で表現。`any`
|
|
20
|
-
- **XML
|
|
21
|
-
- **独自 OAuth
|
|
22
|
-
-
|
|
18
|
+
- **型安全**:リソース・項目の値を型で表現。`any` を使いません。
|
|
19
|
+
- **XML を外に出さない**:返り値は型付きオブジェクト、入力もふつうの JS の値。
|
|
20
|
+
- **独自 OAuth を意識させない**:`code_direct` によるトークン取得・キャッシュ・更新を自動化。
|
|
21
|
+
- **上限を守る**:スロットリング・リトライ(指数バックオフ)・リクエストの長さの検査を内蔵。
|
|
23
22
|
- **日時は ISO 8601(UTC)に正規化**。業務タイムゾーン変換はしません(利用側の責務)。
|
|
24
|
-
- **PORTERS の全リソースに対応**:データ系 13
|
|
23
|
+
- **PORTERS の全リソースに対応**:データ系 13 種(Phase・Attachment を含む)+ マスタ系 5 種(読み取り専用)。
|
|
25
24
|
|
|
26
25
|
## 前提
|
|
27
26
|
|
|
28
|
-
繋ぐ前に、**PORTERS 側で 4 つ**が要ります。揃っていないと
|
|
27
|
+
繋ぐ前に、**PORTERS 側で 4 つ**が要ります。揃っていないと PORTERS を呼べません。
|
|
29
28
|
|
|
30
29
|
1. **PORTERS 契約 + Connect API オプション契約**(オプションは別契約)。
|
|
31
30
|
2. **API アプリの登録**。ここで Redirect URL を決め、**ホスト名・App ID・App Secret** が
|
|
32
|
-
|
|
31
|
+
通知されます(いずれも機密情報なので、コードに直接書かず環境変数で渡します)。
|
|
33
32
|
3. **初回のみブラウザで権限付与**(人手・Company DB ごとに 1 回)。以降はライブラリが
|
|
34
33
|
`code_direct`(サーバ間)で無人運用します。
|
|
35
34
|
4. **付与するスコープ**の決定(リソース別に `_r` / `_w`。Read でも複数要ることがあります)。
|
|
36
35
|
|
|
37
36
|
揃えかたは[始める前に][s-prereq]に、権限付与の手順は[認証を通して、疎通を確認する][s-auth]に
|
|
38
|
-
あります。実行環境は **Node.js 22.12
|
|
39
|
-
CJS
|
|
37
|
+
あります。実行環境は **Node.js 22.12 以上**で、型定義は同梱です。ビルド済みの JavaScript ファイルは ESM(`import`)の 1 つですが、
|
|
38
|
+
CJS(`require`)からも `require("@joymerrevent/porters-connect")` で読めます([CJS から使う][s-cjs])。
|
|
40
39
|
|
|
41
40
|
契約や権限付与を**待っている間**も、PORTERS に繋がずにコードとテストは書けます
|
|
42
|
-
([
|
|
41
|
+
([契約なしでテストする][test-without-contract])。
|
|
43
42
|
|
|
44
43
|
## インストール
|
|
45
44
|
|
|
@@ -55,12 +54,12 @@ npm i @joymerrevent/porters-connect
|
|
|
55
54
|
import { PortersClient } from "@joymerrevent/porters-connect";
|
|
56
55
|
|
|
57
56
|
const porters = new PortersClient({
|
|
58
|
-
hostname: process.env.PORTERS_HOST ?? "", //
|
|
57
|
+
hostname: process.env.PORTERS_HOST ?? "", // 契約時に通知される値。コードに直接書かず環境変数で渡す
|
|
59
58
|
appId: process.env.PORTERS_APP_ID ?? "",
|
|
60
59
|
appSecret: process.env.PORTERS_APP_SECRET ?? "",
|
|
61
60
|
});
|
|
62
61
|
|
|
63
|
-
// partition(Company DB)は tenant
|
|
62
|
+
// partition(Company DB)は tenant(id) で指定する(既定の Partition は無い)。単一テナントでも同じ書き方
|
|
64
63
|
const t = porters.tenant(456);
|
|
65
64
|
|
|
66
65
|
const page = await t.candidate.search({
|
|
@@ -73,7 +72,7 @@ const page = await t.candidate.search({
|
|
|
73
72
|
console.log(page.total, page.items[0]?.P_Name);
|
|
74
73
|
```
|
|
75
74
|
|
|
76
|
-
続きは[
|
|
75
|
+
続きは[導入][s-prereq](6 ページ)へ。準備・認証・読み取り・書き込み・本番に出す前の確認まで順に進みます。
|
|
77
76
|
|
|
78
77
|
## リソースと操作
|
|
79
78
|
|
|
@@ -87,46 +86,51 @@ console.log(page.total, page.items[0]?.P_Name);
|
|
|
87
86
|
| `t.opportunity` | 商談管理 | `t.phase` | フェーズ履歴 |
|
|
88
87
|
| `t.activity` | アクティビティ | | |
|
|
89
88
|
|
|
90
|
-
|
|
89
|
+
マスタ系は `porters.partition` / `t.user` / `t.department` / `t.field` / `t.option` の 5 種(読み取り専用)。
|
|
91
90
|
|
|
92
|
-
**どのメソッドが呼べるかはリソースごとに違います**(`searchAll` が無いもの、先に `of()`
|
|
93
|
-
|
|
94
|
-
[API リファレンス][api-ref]
|
|
91
|
+
**どのメソッドが呼べるかはリソースごとに違います**(`searchAll` が無いもの、先に `of("candidate")` のように
|
|
92
|
+
対象リソースを指定するもの(Field・Phase・Attachment)があります)。一覧は[リソースと操作][docs-resources]、引数・戻り値・項目の一覧は
|
|
93
|
+
[API リファレンス][api-ref]が正確な定義です。
|
|
95
94
|
|
|
96
95
|
## ドキュメント
|
|
97
96
|
|
|
98
|
-
**[docs/usage][docs-index] が目次**です。
|
|
97
|
+
**[docs/usage][docs-index] が目次**です。7 つの章に分かれていて、順に読むのは導入だけです。
|
|
99
98
|
|
|
100
|
-
|
|
|
101
|
-
| ---------------- |
|
|
102
|
-
|
|
|
103
|
-
|
|
|
104
|
-
|
|
|
105
|
-
|
|
|
99
|
+
| 章 | 何が書いてあるか |
|
|
100
|
+
| ---------------- | ------------------------------------------------------------------------------------------- |
|
|
101
|
+
| **導入** | 順に読む 6 ページ。準備 → インストール → 認証と疎通 → 読み → 書き → 本番前 |
|
|
102
|
+
| **主題別** | 認証・検索・書き込み・カスタム項目・上限……の 11 主題を、考え方から細かい規則まで 1 ページで |
|
|
103
|
+
| **クライアント** | `PortersClient`・`auth`・`tenant(id)` のスコープ。構築オプションと呼べるメソッド |
|
|
104
|
+
| **リソース別** | 18 リソースを 1 ページずつ。呼べるメソッド・固有の注意・必須項目・型 |
|
|
105
|
+
| **関数** | `import` して呼ぶ関数を用途別に。宣言と突合・上限と接続・値の変換 |
|
|
106
|
+
| **実践例** | 毎日の差分同期・複数テナントなど、用途に沿った組み立て |
|
|
107
|
+
| **リファレンス** | [公開 API リファレンス][api-ref](JSDoc から生成)と [PORTERS API の事実][ref] |
|
|
108
|
+
|
|
109
|
+
目次の末尾に「〜したい → 読む場所」の索引表があります。
|
|
106
110
|
|
|
107
111
|
## PORTERS 固有の注意
|
|
108
112
|
|
|
109
113
|
このライブラリを使ううえで、**PORTERS 側の前提**として先に知っておくと迷いません。詳しくは
|
|
110
|
-
|
|
114
|
+
それぞれの主題ページの「まず知ること」にあります。
|
|
111
115
|
|
|
112
|
-
- **削除 API が存在しない**。`delete()`
|
|
113
|
-
- **日時は UTC 前提**。ISO 8601(`…Z`)で入出力し、JST 等への変換はしません([
|
|
114
|
-
- **データは Partition に分かれる**。`tenant(id)`
|
|
116
|
+
- **削除 API が存在しない**。`delete()` は型の上でも用意していません([削除と削除済みデータ][c-no-delete])。
|
|
117
|
+
- **日時は UTC 前提**。ISO 8601(`…Z`)で入出力し、JST 等への変換はしません([日時と時分型][c-datetime])。
|
|
118
|
+
- **データは Partition に分かれる**。`tenant(id)` で毎回指定します([Partition とテナントスコープ][c-partition])。
|
|
115
119
|
- **上限がある**。リクエスト長 約 15000 文字・1 リクエスト 200 件・1 分あたり Read 2000 / Write 500 は
|
|
116
|
-
|
|
120
|
+
ライブラリが守りますが、**月 15 万アクセスは契約条件**で利用側の運用責務です([上限とレート][c-limits])。
|
|
117
121
|
- **ホスト名は非公開**。`PORTERS_HOST` で受け取り、ハードコードしません。
|
|
118
122
|
|
|
119
123
|
## 対応バージョン
|
|
120
124
|
|
|
121
|
-
-
|
|
122
|
-
- **PORTERS 製品 8.x / 9.x は参考**:v2
|
|
125
|
+
- **互換性の基準は Connect API Version 2**:`X-P-ConnectAPI-Version: 2` を既定で送信し、**v2 を動作の前提**とします(担当者型・部署型の参照項目(Link)などは v2 が必要)。互換性はこの **API version** で明示します。
|
|
126
|
+
- **PORTERS 製品 8.x / 9.x は参考**:v2 が提供される製品世代です(個別マイナーの動作保証はしません)。**正しい情報の出どころは [PORTERS API の事実][ref]**(PORTERS の公式ドキュメントに基づく)。
|
|
123
127
|
|
|
124
128
|
## リンク
|
|
125
129
|
|
|
126
|
-
**この README
|
|
130
|
+
**この README は「最短で動かす」ところまで**です。全体は目次から読めます<!-- 根拠: ADR-0070 -->。
|
|
127
131
|
|
|
128
|
-
- 利用者向け:[docs/usage][docs-index](目次)/[公開 API
|
|
129
|
-
- 開発・保守:[docs/README.md][docs-readme](ADR
|
|
132
|
+
- 利用者向け:[docs/usage][docs-index](目次)/[公開 API リファレンス][api-ref]/[PORTERS API の事実][ref]
|
|
133
|
+
- 開発・保守:[docs/README.md][docs-readme](ADR(設計判断の記録)・基本設計・ロードマップ・台帳)
|
|
130
134
|
- 提供元:[Joymerrevent][joymerrevent]
|
|
131
135
|
|
|
132
136
|
## コントリビュート / セキュリティ
|
|
@@ -156,16 +160,15 @@ console.log(page.total, page.items[0]?.P_Name);
|
|
|
156
160
|
[coc]: ./CODE_OF_CONDUCT.md
|
|
157
161
|
[issues]: https://github.com/Joymerrevent/porters-connect/issues
|
|
158
162
|
[api-ref]: docs/usage/api/index.md
|
|
159
|
-
[c-datetime]: docs/usage/
|
|
160
|
-
[c-limits]: docs/usage/
|
|
161
|
-
[c-no-delete]: docs/usage/
|
|
162
|
-
[c-partition]: docs/usage/
|
|
163
|
+
[c-datetime]: docs/usage/topics/datetime.md
|
|
164
|
+
[c-limits]: docs/usage/topics/limits.md
|
|
165
|
+
[c-no-delete]: docs/usage/topics/deleted.md
|
|
166
|
+
[c-partition]: docs/usage/topics/tenant.md
|
|
163
167
|
[s-auth]: docs/usage/start/authenticate.md
|
|
164
168
|
[s-cjs]: docs/usage/start/install.md#cjs-から-require-する
|
|
165
169
|
[s-prereq]: docs/usage/start/prerequisites.md
|
|
166
|
-
[test-without-contract]: docs/usage/
|
|
170
|
+
[test-without-contract]: docs/usage/topics/testing.md
|
|
167
171
|
[docs-index]: docs/usage/index.md
|
|
168
|
-
[docs-resources]: docs/usage/
|
|
169
|
-
[adr70]: ./docs/adr/0070-usage-documentation-architecture.md
|
|
172
|
+
[docs-resources]: docs/usage/resources/README.md
|
|
170
173
|
[docs-readme]: ./docs/README.md
|
|
171
174
|
[ref]: docs/usage/reference/README.md
|