インターフェース標準ドキュメント
インターフェース標準ドキュメント
1. ドキュメント情報
- ドキュメント名:SERVICEMEシステム インターフェース標準ドキュメント
- バージョン:v1.1
- 公開日:2026-06-05
- 適用範囲:企業向けインテリジェントシナリオに適用され、認証、ナレッジQ&A、プロセス自動化、データ分析、コンテンツ生成などをサポートします。インターフェースは標準RESTfulアーキテクチャを採用し、システム連携およびクロスプラットフォーム利用を容易にし、カスタマーサービス、マーケティング、財務、人事などの業務領域で広く利用され、協業効率とインテリジェントな意思決定を向上させます。
2. 改訂履歴
| バージョン | 改訂日 | 改訂内容 |
|---|---|---|
| v1.0 | 2025-07-18 | 初版 |
| v1.1 | 2026-06-05 | クロス オリジンアクセス仕様(CORS)の説明を追加 |
3. 概要
3.1 ドキュメント目的
本ドキュメントの目的を説明します。例:
本ドキュメントは、SERVICEMEシステムのインターフェース仕様(リクエスト形式、レスポンス形式、エラーコードなど)を定義し、利用者の参照用として提供します。
3.2 用語と略語
- API:アプリケーションプログラミングインターフェース
- HTTP:ハイパーテキスト転送プロトコル
- JSON:JavaScriptオブジェクト表記法
- RESTful:API設計スタイルの一種
3.3 インターフェース設計原則
- RESTfulスタイルに準拠する(適用可能な場合)。
- セキュリティ確保のためHTTPSを使用する。
- データ形式はJSONに統一する。
- インターフェースをバージ ョン管理する(例:
/v1/xxx)。
4. 共通仕様
4.1 リクエスト仕様
- リクエストメソッド:GET/POST/PUT/DELETE など。
- リクエストヘッダー(Headers):
Content-Type: application/jsonAuthorization: Bearer {token}(認証が必要な場合)。
- リクエストパラメータ:
- Queryパラメータ(GET)、Bodyパラメータ(POST/PUT)。
- 必須/任意フィールドの説明。
4.2 レスポンス仕様
-
レスポンス形式:
{
"code": 200,
"message": "成功",
"data": {}
} -
HTTPステータスコード:
- 200:成功
- 400:リクエストパラメータエラー
- 401:未認 証
- 500:サーバー内部エラー
4.3 エラーコード表
| エラーコード | 意味 | 解決策 |
|---|---|---|
| 200 | 成功 | - |
| 422 | パラメータエラー | - |
| 40001 | パラメータ不足 | 必須フィールドを確認 |
| 50001 | サーバー内部エラー | 管理者に連絡 |
4.4 クロスオリジンアクセス仕様(CORS)
4.4.1 背景
Cross-Origin Resource Sharing(CORS)はブラウザのセキュリティ機構であり、Webページが異なるドメインのサーバーへリクエストできるかを制御します。フロントエンドアプリとAPIサービスが異なるドメイン(またはポート)に配置されている場合、ブラウザは自動的にCORS検証を行います。
4.4.2 NEXTバージョンのデフォルト方針
SERVICEME NEXTバージョンでは、デフォルトでクロスオリジンアクセスを許可しません。つまり、ブラウザページからAPIへ直接リクエストした際、Originがサーバー側で許可設定されていない場合はリクエストが拒否されます。
4.4.3 LTSバージョンとの違い
| 比較項目 | LTSバージョン | NEXTバージョン |
|---|---|---|
| クロスオリジン制限 | 制限なし(クロスオリジンを未遮断) | デフォルトで禁止 |
| 移行影響 | - | LTSからNEXTへ移行後、従来ブラウザ側クロスオリジンAPI呼び出しに依存していた場合、リクエスト失敗が発生 |
移行時の注意:LTSからNEXTへアップグレードし、フロントエンドでクロスオリジンAPI呼び出しがある場合、アップグレード後はそのままでは動作しません。事前にクロスオリジン設定を申請してください。
4.4.4 対応方法
クロスオリジンアクセスを有効にする必要がある場合は、担当の導入デリバリーチームへ連絡して設定を依頼してください。業務シナリオに応じて許可Originドメインを設定します。
4.4.5 よくある現象
クロスオリジン問題が発生すると、ブラウザ開発者ツール(Console)に以下のようなエラーが表示されることがあります。
Access to XMLHttpRequest at 'https://api.xxx.com/...' from origin 'https://your-app.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
同様のエラーが表示される場合、当該リクエストはクロスオリジンポリシーにより制限されています。導入デリバリーチームへお問い合わせください。
5. インターフェース詳細
5.1 インターフェース1:ユーザー情報取得
-
インターフェースパス:GET /webapi/lite_api/v1/iam/user/
{user_id} -
リクエストパラメータ:
パラメータ名 型 必須 説明 userId Path はい ユーザーID -
リクエスト例:
GET /webapi/lite_api/v1/iam/user/234567 HTTP/1.1
Authorization: Bearer abcdef123456 -
レスポンス例:
{
"code": 200,
"data": {
"username": "string",
"email": "string",
"real_name": "",
"nickname": "",
"is_superuser": false,
"avatar": "",
"enable": true,
"id": "string",
"is_aad": false,
"serial_number": "string",
"created_at": "2019-08-24T14:15:22.123Z",
"updated_at": "2019-08-24T14:15:22.123Z",
"last_login": "2019-08-24T14:15:22.123Z",
"roles": [],
"user_roles": [],
"organizations": [],
"gender": 0,
"birthday": "2019-08-24T14:15:22.123Z",
"wechat": "string",
"region": "string",
"time_difference": 0,
"join_time": "2019-08-24T14:15:22.123Z",
"office_phone": "string",
"mobile_phone": "string",
"description": "string"
},
"message": "success"
}
5.2 インターフェース2:ユーザー作成
-
インターフェースパス:POST /webapi/lite_api/v1/iam/user/
-
リクエストパラメータ:
パラメータ名 型 必須 説明 username string はい ユーザー名 real_name string はい 実名 is_aad boolean はい AADドメインアカウントか どうか is_superuser boolean はい スーパー管理者アカウントかどうか avatar string はい ユーザーアバター -
リクエスト例:
{
"username": "string",
"real_name": "string",
"is_aad": false,
"is_superuser": false,
"avatar": ""
} -
レスポンス例:
{
"code": 200,
"data": {
"username": "string",
"email": "",
"real_name": "string",
"nickname": "",
"is_superuser": false,
"avatar": "",
"enable": true,
"id": "0000046446975123456",
"is_aad": false,
"serial_number": "",
"created_at": "2026-07-21T09:02:18.709790",
"updated_at": "2026-07-21T09:02:18.709607",
"last_login": null,
"roles": [],
"user_roles": [],
"organizations": [],
"gender": 0,
"birthday": null,
"wechat": "",
"region": "",
"time_difference": 8,
"join_time": null,
"office_phone": "",
"mobile_phone": "",
"description": ""
},
"message": "success"
}
5.3 インターフェース3:アシスタント作成
-
インターフェースパス:POST /webapi/lite_api/v1/robots/
-
リクエストパラメータ:
パラメータ名 型 必須 説明 info object はい アシスタント情報と名称 masks array いいえ アシスタントマスク knowledge_bases array いいえ ナレッジベース skills array いいえ スキル mcps array いい え データモデル data_sources array いいえ データソース keywords_filter object いいえ キーワードフィルター feedback_accounts array いいえ フィードバックアカウント リクエスト例:
{
"info": {
"name": "string",
"weight": 0,
"avatar_url": "string",
"description": "",
"prompt": "string",
"prologue": "string",
"robot_type": "",
"flow_id": "ef710584-0706-4b4b-b481-dd44a4541137",
"cluster_group_id": "921cd751-fc17-4b9d-a7ec-91a434beaf0a",
"product_position": "chat-x",
"chat_rounds": 0,
"user_id": "string",
"group_id": "306db4e0-7449-4501-b76f-075576fe2d8f",
"split_type": "string",
"load_type": "string",
"spliter_json": "string",
"embedding_id": "18e0b745-2b45-46cb-a826-bc9049d1152c",
"user_skill_auths": [
null
],
"need_summary": true,
"force_execute": true,
"open_filter": true,
"record_chat": true,
"is_published": true,
"category_ids": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"recommend_question": false,
"feedback": false,
"knowledge_config": {
"search_mode": "hybrid",
"k": 5,
"doc_score": 0.7,
"qa_score": 0.8,
"metadata": "none",
"show_reference": false
},
"editable": true,
"question_guide": false,
"operator_execute": false,
"bi_config": {
"query_rewrite": false,
"divide_think": false
}
},
"masks": [
{
"mask_set_id": "d0bee2ed-0859-4bb6-8598-f64d47a5a28b"
}
],
"knowledge_bases": [
{
"classification_id": "string",
"classification_name": "string",
"classification_icon": "string",
"workspaces": []
}
],
"skills": [
{
"skill_group_id": "85161907-67ae-4ae2-8fee-99b7d6fcc3f8"
}
],
"mcps": [],
"data_sources": [
{
"skill_group_id": "85161907-67ae-4ae2-8fee-99b7d6fcc3f8"
}
],
"keywords_filter": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"robot_id": "8fe44936-b905-428b-ace5-566f232fcce8",
"key_words": [
"string"
],
"review_input": true,
"preset_reply_input": "string",
"review_output": true,
"preset_reply_output": "string"
},
"feedback_accounts": []
}レスポンス例
{
"code": 200,
"data": null,
"message": "success"
}
5.4 インターフェース4:アシスタント情報取得
-
インターフェースパス:GET /webapi/lite_api/v2/api/robot/
{robot_id} -
認証方式:HTTP Bearer 認証。
- ヘッダー:
Authorization: Bearer {token}(必須)
- ヘッダー:
-
パスパラメータ:
パラメータ名 型 必須 説明 robot_id UUID はい ロボットの一意識別子 -
リクエスト例:
GET /webapi/lite_api/v2/api/robot/a1b2c3d4-5678-90ef-ghij-klmnopqrstuv HTTP/1.1
Authorization: Bearer YOUR_BEARER_TOKEN_HERE -
レスポンス例(200):
{
"code": 200,
"data": {
"info": {
"name": "サンプルロボット",
"id": "a1b2c3d4-5678-90ef-ghij-klmnopqrstuv",
"avatar_url": "https://example.com/avatar.png",
"description": "これはサンプルロボットです",
"prompt": "あなたはインテリジェントアシスタントです",
"prologue": "サンプルロボットへようこそ",
"robot_type": "chat",
"product_position": "assistant"
},
"masks": [],
"knowledge_bases": [],
"skills": [],
"mcps": [],
"data_sources": [],
"keywords_filter": null,
"feedback_accounts": []
},
"message": "success"
}
5.5 インターフェース5:ファイルアップロード
- インターフェースパス:POST /webapi/knowledge/v1/file/ekb-knowledge-upload
- リクエストパラメータ:
| パラメータ名 | 型 | 必須 | 説明 |
|---|---|---|---|
| Files | array | はい | 今回アップロードするファイル |
| WorkspaceId | string | はい | string |
| fullPath | string | いいえ | ファイルのアップロード先フルパス |
- レスポンス例:
{
"code": 200,
"data": [
{
"id": "000060269455675392",
"fullName": "String",
"scan_status": {}
}
],
"message": "ファイルアップロード成功"
}
5.6 インターフェース6:ナレッジベース一覧取得
-
インターフェースパス:GET /webapi/knowledge/v1/kb/me
-
リクエストパラメータ:
パラメータ名 型 必須 説明 locale Header いいえ ロケール、デフォルト en-US -
リクエスト例:
GET /webapi/knowledge/v1/kb/me HTTP/1.1
Authorization: Bearer abcdef123456
locale: zh-CN -
レスポンス例:
{
"code": 200,
"data": [
{
"id": "kb_001",
"name": "製品ナレッジベース",
"description": "製品説明、FAQ、操作マニュアルを保存するために使用",
"mode": 1
}
],
"message": "success"
}
5.7 インターフェース7:ナレッジベース作成
-
インターフェースパス:POST /webapi/knowledge/v1/kb/knowledge-base
-
リクエストパラメータ:
パラメータ名 型 必須 説明 name array はい ナレッジベース名(多言語配列) description array はい ナレッジベース説明(多言語配列) sort integer いいえ ソート値 quota object いいえ ナレッジベース容量設定 parent_id string いいえ 親ナレッジベースID mode integer いいえ ナレッジベースモード、デフォルト 1 -
リクエスト例:
{
"name": [
{
"locale": "zh-CN",
"content": "カスタマーサービスナレッジベース"
}
],
"description": [
{
"locale": "zh-CN",
"content": "カスタマーサポートQ&Aと業務文書の管理に使用"
}
],
"sort": 0,
"mode": 1
} -
レスポンス例:
{
"code": 200,
"data": {
"id": "kb_001",
"name": "カスタマーサービスナレッジベース"
},
"message": "success"
}
5.8 インターフェース8:ナレッジベース詳細取得
-
インターフェースパス:GET /webapi/knowledge/v1/kb/knowledge-base/
{kb_id} -
リクエストパラメータ:
パラメータ名 型 必須 説明 kb_id Path はい ナレッジベースID locale Header いいえ ロケール、デフォルト en-US -
リクエスト例:
GET /webapi/knowledge/v1/kb/knowledge-base/kb_001 HTTP/1.1
Authorization: Bearer abcdef123456
locale: zh-CN -
レスポンス例:
{
"code": 200,
"data": {
"id": "kb_001",
"name": "カスタマーサービスナレッジベース",
"description": "カスタマーサポートQ&Aと業務文書の管理に使用",
"mode": 1,
"sort": 0
},
"message": "success"
}
5.9 インターフェース9:ナレッジベースフォルダ作成
-
インターフェースパス:POST /webapi/knowledge/v1/file/ekb-folder
-
リクエストパラメータ:
パラメータ名 型 必須 説明 workspaceId Query はい 所属ナレッジベースID name string はい フォルダ名 fullPath string はい フォルダのフルパス -
リクエスト例:
POST /webapi/knowledge/v1/file/ekb-folder?workspaceId=1001 HTTP/1.1
Authorization: Bearer abcdef123456
Content-Type: application/json
{
"name": "製品マニュアル",
"fullPath": "/顧客資料/製品マニュアル"
} -
レスポンス例:
{
"code": 200,
"data": {
"id": 501,
"name": "製品マニュアル",
"fullPath": "/顧客資料/製品マニュアル"
},
"message": "success"
}
5.10 インターフェース10:ナレッジベースファイル一覧取得
-
インターフェースパス:POST /webapi/knowledge/v1/file/ekb-pagelist
-
リクエストパラメータ:
パラメータ名 型 必須 説明 PageIndex integer いいえ ページ番号、デフォルト 1PageSize integer いいえ 1ページ件数、デフォルト 20OrderField string いいえ ソート項目、デフォルト modifiedOrderType string いいえ ソート順、デフォルト descConditions array いいえ 検索条件リスト -
リクエスト例:
{
"PageIndex": 1,
"PageSize": 20,
"OrderField": "modified",
"OrderType": "desc",
"Conditions": [
{
"fieldName": "workspaceId",
"fieldValue": "1001"
}
]
} -
レスポンス例:
{
"code": 200,
"data": {
"items": [
{
"id": 7001,
"name": "製品紹介.pdf",
"objectType": 1,
"modified": "2026-05-17T10:00:00Z"
}
],
"total": 1
},
"message": "success"
}
5.11 インターフェース11:ナレッジベースファイルプレビュー
-
インターフェースパス:GET /webapi/knowledge/v1/file/ekb-preview
-
リクエストパラメータ:
パラメータ名 型 必須 説明 c Query はい コンテナ名 n Query はい ファイル名またはBlob名 u Query はい ユーザーID s Query いいえ ソースシステム、デフォルト ecmw Query いいえ 透かしユーザーID -
リクエスト例:
GET /webapi/knowledge/v1/file/ekb-preview?c=docs&n=abc123%2F製品紹介.pdf&u=10001&s=ecm HTTP/1.1
Authorization: Bearer abcdef123456 -
レスポンス例:
{
"previewUrl": "https://example.com/preview/abc123",
"expireAt": "2026-05-17T12:00:00Z"
}
5.12 インターフェース12:ナレッジベースファイルダウンロード
-
インターフェースパス:POST /webapi/knowledge/v1/file/download
-
リクエストパラメータ:
パラメータ名 型 必須 説明 fileId integer はい ファイルID objectType integer はい オブジェクト種別 -
リクエスト例:
{
"fileId": 7001,
"objectType": 1
} -
レスポンス例:
{
"downloadUrl": "https://example.com/download/7001",
"fileName": "製品紹介.pdf"
}
5.13 インターフェース13:Q&A作成
-
インターフェースパス:POST /webapi/knowledge/v1/qna
-
リクエストパラメータ:
パラメータ名 型 必須 説明 answer string はい 標準回答 enable boolean いいえ 有効化するか、デフォルト trueworkspaceId integer はい 所属ナレッジベースID questions array はい 質問リスト metadataExpansion object いいえ 拡張メタデータ -
リクエスト例:
{
"answer": "ログイン後に「マイ申請」へ進み、承認進捗を確認してください。",
"enable": true,
"workspaceId": 1001,
"questions": [
{
"content": "申請の進捗はどう確認できますか?",
"sort": 0
}
]
} -
レスポンス例:
{
"code": 200,
"data": {
"id": 9001,
"workspaceId": 1001,
"enable": true
},
"message": "success"
}
5.14 インターフェース14:Q&A一覧取得
-
インターフェースパス:POST /webapi/knowledge/v1/qna/pagelist
-
リクエストパラメータ:
パラメータ名 型 必須 説明 PageIndex integer いいえ ページ番号、デフォルト 1PageSize integer いいえ 1ページ件数、デフォルト 20OrderField string いいえ ソート項目、デフォルト modifiedOrderType string いいえ ソート順、デフォルト descConditions array いいえ 検索条件リスト -
リクエスト例:
{
"PageIndex": 1,
"PageSize": 20,
"OrderField": "modified",
"OrderType": "desc",
"Conditions": [
{
"fieldName": "workspaceId",
"fieldValue": "1001"
}
]
} -
レスポンス例:
{
"code": 200,
"data": {
"items": [
{
"id": 9001,
"question": "申請の進捗はどう確認できますか?",
"answer": "ログイン後に「マイ申請」へ進み、承認進捗を確認してください。",
"enable": true
}
],
"total": 1
},
"message": "success"
}
5.15 インターフェース15:QnA一覧クエリ
-
インターフェースパス:POST /webapi/lite_api/v2/api/qa_list
-
認証方式:HTTP Bearer 認証。
- ヘッダー:
Authorization: Bearer {token}(必須)
- ヘッダー:
-
リクエストパラメータ(JSON Body):
パラメータ名 型 必須 説明 query string はい 検索クエリ k integer いいえ 返却する上位結果数 knowledge_ids array[string]| null いいえ 検索対象のナレッジベースIDリスト search_mode string いいえ 検索モード: hybrid/embedding/textqa_score number はい QAしきい値 llm_use boolean いいえ 大規模言語モデルを使用するか metadata string いいえ メタデータ処理モード: none/filter/weight -
リクエスト例:
{
"query": "APIで画像アップロードする方法",
"k": 20,
"knowledge_ids": [
"kb123",
"kb456"
],
"search_mode": "hybrid",
"qa_score": 1,
"llm_use": false,
"metadata": "none"
} -
レスポンス例(200):
{
"code": 200,
"data": [
{
"metadata": null,
"documentid": "doc_001",
"chunkid": "chunk_001",
"filename": "api-guide.pdf",
"content": "アップロードAPIは multipart/form-data をサポート",
"score": 0.95,
"rank_score": 0.91,
"question": "APIで画像アップロードする方法",
"timestamp": "2026-07-21T09:30:00Z",
"url": null,
"type": "QA"
}
],
"message": "qa retrieved successfully"
} -
バリデーションエラー例(422):
{
"code": 422,
"data": {
"detail": []
},
"message": "Validation Error"
} -
ス テータスコード:
- 200:リクエスト成功、
IResponseModel[QAResponseList]を返却 - 422:パラメータ検証エラーを返却
- 200:リクエスト成功、
5.16 インターフェース16:外部ナレッジベース検索
-
インターフェースパス:POST /webapi/lite_api/v2/api/retrieval
-
インターフェース説明:チーム内で独立管理されているナレッジベースへ接続するために使用し、Dify連携およびデリバリーチームの二次開発に適しています。
-
認証方式:HTTP Bearer 認証。
- ヘッダー:
Authorization: Bearer {API_KEY}(必須)
- ヘッダー:
-
リクエストパラメータ(JSON Body):
パラメータ名 型 必須 説明 knowledge_id string はい ナレッジベースの一意ID query string はい ユーザーの質問内容 retrieval_setting object はい 検索パラメータ設定 metadata_condition object いいえ メタデータフィルタ条件(予約済み、現在は未有効) -
retrieval_setting 項目説明:
パラメータ名 型 必須 説明 top_k integer はい 返却する最大結果数 score_threshold number はい 関連度しきい値(0〜1) search_type string いいえ 検索モード: hybrid/embedding/text、デフォルトhybridhybridpipeline UUID いいえ 高度オーケストレーション pipeline ID -
リクエスト例:
{
"knowledge_id": "your-knowledge-id",
"query": "あなたの質問",
"retrieval_setting": {
"top_k": 2,
"score_threshold": 0.5
}
} -
レスポンス例(200):
{
"records": [
{
"metadata": {
"Url": "{host}/knowledge-webapi/#/share/preview?fileId=4534399061070970880&objectType=2&previewType=file&mode=login",
"FileName": "demo.pdf",
"FileId": "4534399061070970880",
"FilePath": "/",
"Created": "2026-01-21T05:23:02.2404442Z",
"page": 5
},
"score": 0.61544959,
"title": "demo.pdf",
"content": "Dify:GenAIアプリケーションのイノベーションエンジン"
}
]
} -
よくあるエラー:
- 403:
AccessDeniedException、アクセス権限不足。 - 500:
InternalServerException、サーバー内部エラー。 - 業務エラーコード:
- 403:
| error_code | 説明 |
|---|---|
| 1001 | Authorizationヘッダー形式が無効(Bearer <api-key> 形式が必要) |
| 1002 | 認可失敗 |
備考:このインターフェースは製品権限で制御されており、アクセス権の検証のみ可能で、ナレッジベースの存在確認はできません。管理者が存在しないナレッジベースIDを指定した場合、通常は空結果が返ります。
6. セキュリティ仕様
- 認証方式:OAuth2.0/JWT/API Key。
- データ暗号化:機微情報は転送時に暗号 化が必要(例:パスワード)。
- レート制限:API呼び出し頻度は、インターフェース種別、業務の機微度、システム負荷に応じて制御してください。参考値を以下に示します。
| シナリオ | 一般的な制限 | 説明 |
|---|---|---|
| 公開API(第三者呼び出し) | 10〜100 回/分 | 例:WeChat Pay、Alipayの公開APIは通常50〜200回/分(インターフェース等級による)。 |
| 内部システムAPI | 100〜1000 回/分 | 内部サービス間呼び出しは緩和できますが、単一サービスによる過剰なリソース占有は避けてください。 |
| ユーザー操作API | 5〜60 回/分 | ログイン、SMS送信などの機微操作は厳格に制限します。例:SMS認証コードAPIは通常1回/60秒です。 |
| データ照会API | 100〜5000 回/分 | 高頻度照会APIは緩和できますが、キャッシュを併用してDB負荷を下げてください。 |
| 高同時実行コアAPI | 動的レート制限(例:トークンバケット) | 例:フラッシュセールAPIでは、サーキットブレーカーや弾性スケーリングを組み合わせることがあります。 |
備考:上記の範囲は参考値です。実際の設定は、インターフェース性能、呼び出し元、リソース消費、業務ピークを総合的に見て決定してください。