Directory API では、ユーザー (メンバー) や組織、グループなど、管理者画面で「メンバー」メニューにまとめられている利用者や組織に関するリソースを取得・更新できます。Directory API で取り扱うことができるリソースは以下のとおりです。
注意
利用権限タイプは、employmentType から userType に変更されました。
利用権限タイプに関する API URL またはプロパティ名として、employment-type または employmentType に代えて、user-type または userType を使用してください。
directory Scope により、これらの情報のすべてを操作できます。
また、ユーザーのみを操作できる user Scope、 グループのみを操作できる group Scope、組織のみを操作できる orgunit Scope が用意されています。
User Account 認証または Service Account 認証 (JWT) で取得した Access Token で利用できます。
注意
- フリープランでは、user.read、group.read、orgunit.read、user.email.read、user.profile.read のみが利用できます。directory、directory.read、user、group、orgunit は利用できません。
注意
- Directory API を用いてドメインのリソースを管理する場合には、Service Account 認証による利用をおすすめします。
- 最高管理者を除く管理者は、通常のユーザーと同様に、ユーザーとして与えられた権限に基づいて、自身の情報など限定的なリソースに限り参照・管理ができます。与えられた管理権限に基づいてドメイン内のすべてのリソースにアクセスできるわけではありません。
- グループ会社環境では、ドメインの最高管理者であっても、原則としてテナント内の他ドメインのリソースを参照・管理できません。
API を利用してユーザー、グループ、組織、職級、役職、利用権限タイプ、カスタムフィールド、ユーザーカスタムプロパティのリソースにアクセスする際には、以下の方法でリソースを指定・識別できます。
リソース ID は、各リソースを作成した際にシステムが割り当てる一意の ID です。 リソース ID には以下の特徴があることから、API を利用してリソースを指定・識別する場合には、リソース ID の利用をおすすめします。
External Key は、LINE WORKS の各リソースに対して API 利用者、または管理者が割り当てることのできる任意の値です。
LINE WORKS のリソースの External Key として、社内システムなどの対応するオブジェクトが持つ ID を割り当てることで、LINE WORKS と社内システムなどで同じ ID を利用してアクセスできます。
External Key は、API または Developer Console > 組織連携 を利用して割り当てます。
API を用いた External Key の一括登録は External Key の一括登録と一覧 を参照してください。
External Key を使用してリソースを指定する場合には、以下の形式で記載します。
externalKey:ExternalKeyの値リソースタイプにより、External Key に使用できる文字や、値を一意なるように割り当てが必要な範囲 (重複できない範囲) があります。
それぞれの制限は以下の表の通りです。
| リソース | プロパティ | 文字制限 | 一意となる範囲 (重複できない範囲) |
|---|---|---|---|
| ユーザー users | userExternalKey | "%","\","#","/","?" は使用できません | テナント |
| グループ groups | groupExternalKey | "%","\","#","/","?" は使用できません | テナント |
| 組織 orgunits | orgUnitExternalKey | "%","\","#","/","?" は使用できません | テナント |
| 職級 levels | levelExternalKey | "%","#","/","?" は使用できません | ドメイン |
| 役職 position | positionExternalKey | "%","#","/","?" は使用できません | ドメイン |
| 利用権限タイプ user-types | userTypeExternalKey | "%","#","/","?" は使用できません | テナント |
ユーザーリソースは、ユーザーのログイン ID で指定できます。
ユーザーは、LINE WORKS におけるメンバーに対応したオブジェクトです。
注意
API によるプロパティの取得・設定についても、管理項目 設定などのサービスによる制約に従います。
参考
メンバーには、awaiting(待機中)、pending(登録待ち)、using(使用中)、suspended(一時停止)、deleted(削除)の 6 つの状態があります。 メンバーの状態は、ユーザー一覧の取得 または ユーザーの取得 API より確認できます。
状態 Parameter Description awaiting isAwaiting 待機中。利用開始日 (activationDate) 前の状態。
利用開始日に pending (SSO 連携を構成している場合には using) に変更される。pending isPending 登録待ち。
管理者により追加されたユーザーが、最初のログインをしていない状態を意味する。using n/a 使用中。 suspended isSuspended 一時停止。
ログインはできないが、ユーザーのデータは削除されずに維持される。deleted isDeleted 削除。
ユーザーの削除から 7 日間、削除状態で維持され、7 日経過するとデータが削除される。
ユーザーの登録 (追加) や編集を行います。
パスワードは、ユーザーの登録時にのみ指定できます。
| HTTP Request | Description |
|---|---|
| POST /users | ユーザーの登録 |
| PUT /users/{userId} | ユーザーの更新 |
| PATCH /users/{userId} | ユーザーの部分更新 |
ドメイン内のユーザーの一覧を取得します。ソートやフィルタを行うことも可能です。
| HTTP Request | Description |
|---|---|
| GET /users | ユーザーリストの取得 |
ユーザー情報の取得では、利用ケースに応じて、限定されたフィールドのみを含むレスポンスが取得できます。
ユーザー情報の取得には以下の3種類のパターンがあります。全て同じエンドポイントを利用しますが、Access Token を取得した際に指定した Scope によって取得される情報が異なります。
| HTTP Request | Description |
|---|---|
| GET /users/{userId} | ユーザーの取得 Scope: user.read / user レスポンスには閲覧可能な全ての情報が含まれます。 |
| GET /users/{userId} | ユーザーのプロフィール取得 Scope: user.profile.read レスポンスには、ユーザーのプロフィール情報のみが含まれます。 個人用メールアドレス privateEmail や生年月日 birthday 等のパーソナル情報は含まれません。 |
| GET /users/{userId} | ユーザーのメールアドレス情報取得 Scope: user.email.read レスポンスには、ユーザーID userId とログインID email のみが含まれます。 |
ユーザーの削除には、通常の削除と、即時削除があります。通常の削除を行ったユーザーは、削除後 7 日以内であれば、削除を取り消すことができます。削除後 7 日が経過した、または即時削除を行ったユーザーは復元できません。
| HTTP Request | Description |
|---|---|
| DELETE /users/{userId} | ユーザーの削除 |
| DELETE /users/{userId}/forcedelete | ユーザーの即時削除 |
| POST /users/{userId}/undelete | ユーザーの削除取消 |
ユーザーの写真は、以下の API で管理します。
| HTTP Request | Description |
|---|---|
| POST /users/{userId}/photo | ユーザーの写真アップロード |
| GET /users/{userId}/photo | ユーザーの写真取得 |
| DELETE /users/{userId}/photo | ユーザーの写真削除 |
ファイルのアップロード・ダウンロード方法の詳細は ファイルアップロード / ダウンロード を参照します。
ユーザーのステータスは以下の API で管理します。
ドメインでのステータスの管理は、ステータス (profile-statuses) を参照します。
| HTTP Request | Description |
|---|---|
| POST /users/{userId}/user-profile-statuses | ユーザーステータスの登録 |
| GET /users/{userId}/user-profile-statuses | ユーザーステータスリストの取得 |
| GET /users/{userId}/user-profile-statuses/{userProfileStatusId} | ユーザーステータスの取得 |
| PUT /users/{userId}/user-profile-statuses/{userProfileStatusId} | ユーザーステータスの更新 |
| PATCH /users/{userId}/user-profile-statuses/{userProfileStatusId} | ユーザーステータスの部分更新 |
| DELETE /users/{userId}/user-profile-statuses/{userProfileStatusId} | ユーザーステータスの削除 |
ユーザーには、現在のステータスと、予約されたステータスが登録できます。
{ "userProfileStatuses": [ { "profileStatusId": "AWAY", "statusMessage": "外出しています。", "startTime": "2023-05-11T09:00:00+09:00", "endTime": "2023-05-11T12:00:00+09:00", ... } ]}外部の LINE WORKS ユーザー、または LINE ユーザーとのトーク権限を管理できます。
外部 LINE WORKS ユーザーとのトーク権限管理は以下の API を利用します。
| HTTP Request | Description |
|---|---|
| POST /users/link-to-works | すべてのユーザーに外部 LINE WORKS ユーザーとのトーク権限付与 |
| POST /users/{userId}/link-to-works | ユーザーに外部 LINE WORKS ユーザーとのトーク権限付与 |
| POST /users/{userId}/unlink-to-works | ユーザーの外部 LINE WORKS ユーザーとのトーク権限解除 |
外部 LINE ユーザーとのトーク権限管理は以下の API を利用します。
| HTTP Request | Description |
|---|---|
| POST /users/link-to-line | すべてのユーザーに外部 LINE ユーザーとのトーク権限付与 |
| POST /users/{userId}/link-to-line | ユーザーに外部 LINE ユーザーとのトーク権限付与 |
| POST /users/{userId}/unlink-to-line | ユーザーの外部 LINE ユーザーとのトーク権限解除 |
外部トーク連携の招待用リンクは以下の API で管理します。
| HTTP Request | Description |
|---|---|
| GET /users/{userId}/link-url | 外部トーク連携の招待用リンク取得 |
| POST /users/{userId}/link-url/reset | 外部トーク連携の招待用リンクリセット |
注意
これらの API は、user scope で利用します。directory scope では利用できません。
休職者が出た場合には、ユーザーを休職・一時停止に設定できます。
休職に設定されたユーザーは、プロフィールと組織図に休職情報が表示されます。また、API で取得したユーザー情報では leaveOfAbsence として示されます。
一時停止されたユーザーは、LINE WORKS にログオンできなくなります。API で取得したユーザー情報では isSuspended として示されます。
| HTTP Request | Description |
|---|---|
| POST /users/{userId}/suspend | ユーザーの一時停止 |
| POST /users/{userId}/unsuspend | ユーザーの一時停止取消 |
| POST /users/{userId}/set-leave-of-absence | ユーザーの休職登録 |
| POST /users/{userId}/clear-leave-of-absence | ユーザーの休職解除 |
| HTTP Request | Description |
|---|---|
| POST /users/{userId}/send-invitation-email | ユーザー招待メールの再送 |
| POST /users/send-invitation-email | ユーザー招待メールの一括再送 |
| POST /users/{userId}/force-logout | ユーザー強制ログアウト |
プロジェクトや社内サークル活動など、コミュニケーションのためのグループ groups を作成できます。
グループは以下の API で管理します。
| HTTP Request | Description |
|---|---|
| POST /groups | グループの登録 |
| GET /groups | グループリストの取得 |
| GET /groups/{groupId} | グループの取得 |
| PUT /groups/{groupId} | グループの更新 |
| PATCH /groups/{groupId} | グループの部分更新 |
| DELETE /groups/{groupId} | グループの削除 |
| GET /groups/{groupId}/administrators | グループマスターのリスト取得 |
| POST /groups/{groupId}/administrators | グループマスターの登録 |
| DELETE /groups/{groupId}/administrators/{userId} | グループマスターの削除 |
| GET /groups/{groupId}/members | グループメンバーのリスト取得 |
| POST /groups/{groupId}/members | グループメンバーの登録 |
| DELETE /groups/{groupId}/members/{id} | グループメンバーの削除 |
グループでは、トークやノート、予定、タスク、フォルダなどの機能を利用できます。
グループはドメインで管理します。
グループには、グループを管理するグループマスターを 1 人以上指定します。
グループのメンバーには、ユーザー、組織、または他のグループを追加できます。
{ "groupName": "検証", "administrators": [ { "userId": "user-40d6-450f-1c78-1234567890ab", "userExternalKey": null }, { "userId": "user-08ee-41fb-1a61-1234567890ab", "userExternalKey": null } ], "members": [ { "id": "user-40d6-450f-1c78-1234567890ab", "type": "USER", "externalKey": null }, { "id": "orgunit-5c41-4baf-239e-1234567890ab", "type": "ORGUNIT", "externalKey": null }, { "id": "group-6bb3-40ea-37a7-1234567890ab", "type": "GROUP", "externalKey": null } ],...}会社の組織情報に合わせて、LINE WORKSに組織 orgunits を登録できます。プロジェクトや社内サークルなどは、組織ではなく グループ を利用します。
組織は、以下の API で管理します。
| HTTP Request | Description |
|---|---|
| POST /orgunits | 組織の登録 |
| GET /orgunits | 組織リストの取得 |
| GET /orgunits/{orgUnitId} | 組織の取得 |
| PUT /orgunits/{orgUnitId} | 組織の更新 |
| PATCH /orgunits/{orgUnitId} | 組織の部分更新 |
| DELETE /orgunits/{orgUnitId} | 組織の削除 |
| POST /orgunits/{orgUnitId}/move | 組織の移動 |
| GET /orgunits/{orgUnitId}/members | 組織のメンバーリスト取得 |
組織では、トークやノート、予定、タスク、フォルダなどの機能を利用できます。
組織はドメインで管理します。
ユーザーが属する組織は、組織リスト orgUnits で確認・構成できます。
{ "email": "user@example.com", "organizations": [ { ... "orgUnits": [ { "orgUnitId": "orgunit-0faa-4f37-22bb-1234567890ab", "orgUnitName": "営業部", ... } ] } ], ...組織図には、閲覧の制限設定を行うことができます。
ユーザーの組織図閲覧制限の設定は以下の API を利用します。
| HTTP Request | Description |
|---|---|
| POST /users/{userId}/orgunit-access-restrict | ユーザーの組織図閲覧制限の登録 |
| GET /users/{userId}/orgunit-access-restrict | ユーザーの組織図閲覧制限の取得 |
| PUT /users/{userId}/orgunit-access-restrict | ユーザーの組織図閲覧制限の更新 |
| DELETE /users/{userId}/orgunit-access-restrict | ユーザーの組織図閲覧制限の削除 |
利用権限タイプの組織図閲覧制限の設定は以下の API を利用します。
| HTTP Request | Description |
|---|---|
| POST /directory/user-types/{userTypeId}/orgunit-access-restrict | 利用権限タイプの組織図閲覧制限の登録 |
| GET /directory/user-types/{userTypeId}/orgunit-access-restrict | 利用権限タイプの組織図閲覧制限の取得 |
| PUT /directory/user-types/{userTypeId}/orgunit-access-restrict | 利用権限タイプの組織図閲覧制限の更新 |
| DELETE /directory/user-types/{userTypeId}/orgunit-access-restrict | 利用権限タイプの組織図閲覧制限の削除 |
組織の組織図閲覧制限の設定は以下の API を利用します。
| HTTP Request | Description |
|---|---|
| POST /orgunits/{orgUnitId}/orgunit-access-restrict | 組織の組織図閲覧制限の登録 |
| GET /orgunits/{orgUnitId}/orgunit-access-restrict | 組織の組織図閲覧制限の取得 |
| PUT /orgunits/{orgUnitId}/orgunit-access-restrict | 組織の組織図閲覧制限の更新 |
| DELETE /orgunits/{orgUnitId}/orgunit-access-restrict | 組織の組織図閲覧制限の削除 |
閲覧制限は、ユーザー、利用権限タイプ、組織 の順に適用されます。
組織図の閲覧が制限されたユーザー、制限された利用権限タイプが割り当てられたユーザー、制限された組織に属するユーザーは、制限に従い、組織図を参照できない、自身が所属する組織のみ、または自身が所属する組織と許可された組織のみを参照できます。
職級 levels は、ユーザーに付与された職務上のレベルです。
職級は以下の API で管理します。
| HTTP Request | Description |
|---|---|
| POST /directory/levels/enable | 職級設定の有効化 |
| POST /directory/levels/disable | 職級設定の無効化 |
| POST /directory/levels | 職級の登録 |
| GET /directory/levels | 職級リストの取得 |
| GET /directory/levels/{levelId} | 職級の取得 |
| PUT /directory/levels/{levelId} | 職級の更新 |
| PATCH /directory/levels/{levelId} | 職級の部分更新 |
| DELETE /directory/levels/{levelId} | 職級の削除 |
職級は、ドメインで構成します。
ユーザーの職級は、職級 ID levelId で指定・取得できます。
{ "email": "user@example.com", "organizations": [ { "domainId": 12345678, "organizationName": "サンプル商店", "levelId": "level-1999-4212-7979-1234567890ab", "levelName": "役員"...役職 positions は、ユーザーに付与された職務上の責任の単位です。
役職は、以下の API で管理します。
| HTTP Request | Description |
|---|---|
| POST /directory/positions/enable | 役職設定の有効化 |
| POST /directory/positions/disable | 役職設定の無効化 |
| POST /directory/positions | 役職の登録 |
| GET /directory/positions | 役職リストの取得 |
| GET /directory/positions/{positionId} | 役職の取得 |
| PUT /directory/positions/{positionId} | 役職の更新 |
| PATCH /directory/positions/{positionId} | 役職の部分更新 |
| DELETE /directory/positions/{positionId} | 役職の削除 |
役職は、ドメインで構成します。
ユーザーは、複数の組織 orgUnits に所属でき、所属する組織ごとに役職 positions を割り当てられます。
{ "email": "user@example.com", "organizations": [ { ... "orgUnits": [ { "orgUnitId": "orgunit-0faa-4f37-22bb-1234567890ab", "orgUnitName": "営業部", "primary": false, "positionId": null, ... }, { "orgUnitId": "orgunitc-1d15-4cdf-246b-1234567890ab", "orgUnitName": "営業一課", "primary": true, "positionId": "position-821e-41af-8142-1234567890ab", "positionName": "課長", ... } ] } ], ...}利用権限タイプ user-types は、サービスの利用や、組織図の閲覧制限、ドライブ・掲示板における共有範囲の例外管理など、主に権限の管理に用いられる、ユーザーの属性です。
注意
利用権限タイプは、employmentType から userType に変更されました。
利用権限タイプに関する API URL またはプロパティ名として、employment-type または employmentType に代えて、user-type または userType を使用してください。
利用権限タイプは、以下の API で管理します。
| HTTP Request | Description |
|---|---|
| POST /directory/user-types/enable | 利用権限タイプ設定の有効化 |
| POST /directory/user-types/disable | 利用権限タイプ設定の無効化 |
| POST /directory/user-types | 利用権限タイプの登録 |
| GET /directory/user-types | 利用権限タイプリストの取得 |
| GET /directory/user-types/{userTypeId} | 利用権限タイプの取得 |
| PUT /directory/user-types/{userTypeId} | 利用権限タイプの更新 |
| PATCH /directory/user-types/{userTypeId} | 利用権限タイプの部分更新 |
| DELETE /directory/user-types/{userTypeId} | 利用権限タイプの削除 |
利用権限タイプは、ドメインで構成します。
ユーザーの利用権限タイプは、利用権限タイプ ID userTypeId で指定・取得できます。
{ "email": "user@example.com", "userTypeId": "usertype-75b9-48dd-917a-1234567890ab", "userTypeName": "社員"カスタムフィールド custom-fields は、ユーザーに追加で割り当てることができる文字列又はリンク情報です。
カスタムフィールドは、以下の API で管理します。
| HTTP Request | Description |
|---|---|
| POST /directory/custom-fields | カスタムフィールドの登録 |
| GET /directory/custom-fields | カスタムフィールドリストの取得 |
| GET /directory/custom-fields/{customFieldId} | カスタムフィールドの取得 |
| PATCH /directory/custom-fields/{customFieldId} | カスタムフィールドの更新 |
| DELETE /directory/custom-fields/{customFieldId} | カスタムフィールドの削除 |
{ "email": "user@example.com", "customFields": [ { "customFieldId": "customfield-36fe-4b1a-af0e-1234567890ab", "value": "働き方改革", "link": null, "customFieldExternalKey": "CustomFldProject" }, { "customFieldId": "customfield-36fe-4b1a-af0e-1234567890ab", "value": "DX推進", "link": null, "customFieldExternalKey": "CustomFldProject" } ], ...}注意
カスタムフィールド API は、2026年7月下旬を目処に廃止を予定しています。
今後は、ユーザーカスタムプロパティ API を利用してください。
- カスタムフィールド API では、ユーザーカスタムプロパティ API でのみ提供される一部の機能の設定・参照ができません。
- カスタムフィールドは、ユーザーカスタムプロパティに自動的に移行されます。
- その際に、以下の Property は設定が引き継がれます。
- customFieldExternalKey -> fieldName
- externalKey が指定されていない場合には、fieldName は自動的に割り当てられます
- customFieldId -> customPropertyId
- customFieldName -> displayName
- ユーザーカスタムプロパティでの新たな property は、以下の既定値で設定されます。
- multiValued: true
- mandatory: false
- readAccessType: ALL
- writeAccessType: ADMIN
ユーザーカスタムプロパティ user-custom-properties は、ユーザーに追加で割り当てることができるカスタム項目です。
ユーザーカスタムプロパティは、以下の API で管理します。
| HTTP Request | Description |
|---|---|
| POST /directory/users/custom-properties | ユーザーカスタムプロパティの登録 |
| GET /directory/users/custom-properties | ユーザーカスタムプロパティリストの取得 |
| GET /directory/users/custom-properties/{customPropertyId} | ユーザーカスタムプロパティの取得 |
| PATCH /directory/users/custom-properties/{customPropertyId} | ユーザーカスタムプロパティの更新 |
| DELETE /directory/users/custom-properties/{customPropertyId} | ユーザーカスタムプロパティの削除 |
ユーザーカスタムプロパティは、ドメイン単位で最大 50 個まで登録できます。multiValued のユーザーカスタムプロパティには、最大 10 個の値を指定できます。
ユーザーカスタムプロパティのタイプには、テキスト STRING、リンク LINK、数値 INTEGER、日付 DATE があり、テキストに対してはオプションリスト options を指定することもできます。
ユーザーカスタムプロパティには、必須/任意 mandatory、読み取り権限 readAccessType、および書き込み権限 writeAccessType を設定できます。 また、複数値の許容 multiValued も設定できます。
ユーザーカスタムプロパティは、ユーザー (メンバー) (users) API の customProperties プロパティにより、設定・参照することができます。
{ "email": "user@example.com", "customProperties": { "field_string": "string", "field_string_multiValued": [ "string" ], "field_string_option": "optionName1", "field_string_multiValued_option": [ "optionName1" ], "field_date": "YYYY-MM-DD", "field_date_multiValued": [ "YYYY-MM-DD" ], "field_integer": 123, "field_integer_multiValued": [ 123 ], "field_link": { "text": "string", "link": "string" }, "field_link_multiValued": [ { "text": "string", "link": "string" } ] }, ...}注意
- メンバーカスタムフィールドを新規作成した場合、multiValued = true で、propertyType = STRING または LINK のフィールドについてのみ、user の customField で取り扱うことができます。ただし、propertyType = STRING であっても、options が設定されている場合には customField で取り扱うことはできません。
- user オブジェクトで customFields と customProperties の両方を指定した場合には、customProperties が優先されます。
ステータスを設定すると、組織図、プロフィールやトークルームのメンバーリストに、ステータスに応じたアイコンが表示されます。
ステータスは以下の API で管理します。
| HTTP Request | Description |
|---|---|
| POST /directory/profile-statuses/enable | ステータス設定の有効化 |
| POST /directory/profile-statuses/disable | ステータス設定の無効化 |
| POST /directory/profile-statuses | ステータスの登録 |
| GET /directory/profile-statuses | ステータスリストの取得 |
| GET /directory/profile-statuses/{profileStatusId} | ステータスの取得 |
| PUT /directory/profile-statuses/{profileStatusId} | ステータスの更新 |
| PATCH /directory/profile-statuses/{profileStatusId} | ステータスの部分更新 |
| DELETE /directory/profile-statuses/{profileStatusId} | ステータスの削除 |
ステータスはドメインで管理します。既定で用意されている BUSY、AWAY、LEAVE_OFFICE、ABSENCE は、変更・削除できません。カスタムのステータスを、6 個まで構成できます。
ユーザーのステータス管理は ユーザーステータスの管理 を参照して下さい。
External Key を一括登録する際は以下の API を利用します。
| HTTP Request | Description |
|---|---|
| POST /users/external-keys | ユーザーの ExternalKey リストの一括登録 |
| GET /users/external-keys | ユーザーの ExternalKey のリスト取得 |
| POST /groups/external-keys | グループの ExternalKey リストの一括登録 |
| GET /groups/external-keys | グループの ExternalKey リストの取得 |
| POST /orgunits/external-keys | 組織の ExternalKey の一括登録 |
| GET /orgunits/external-keys | 組織の ExternalKey リストの取得 |
| POST /directory/levels/external-keys | 職級の ExternalKey リストの一括登録 |
| GET /directory/levels/external-keys | 職級の ExternalKey リストの取得 |
| POST /directory/positions/external-keys | 役職の ExternalKey リストの一括登録 |
| GET /directory/positions/external-keys | 役職の ExternalKey リストの取得 |
| POST /directory/user-types/external-keys | 利用権限タイプの ExternalKey リストの一括登録 |
| GET /directory/user-types/external-keys | 利用権限タイプの ExternalKey リストを取得 |
組織連携バッチの流れです。

注意
- 同一リソースに対する書き込みリクエスト (POST/PUT/PATCH/DELETE) は同時に行わないでください。