Open API
概要
SERVICEME Open API 呼び出しの基本フロー:
第一歩、認証セクションで提供されているインターフェースを使用して認証を行い、access token を取得する
認証は2種類に分かれます。1つはユーザー認証、もう1つはクライアント認証です。
- ユーザー認証:個人アカウントのアイデンティティに基づく認証方式。
- クライアント認証:SERVICEMEが発行したクライアントcodeとsecretを用いた認証方式。
第二歩、access tokenを持って対応するAPIを呼び出す
認証方式
ユーザーAAD認証
この方式はユーザー認証の一種であり、AADのaccess tokenを認証の根拠として使用します。
-
AAD access token の取得方法:
AAD と React の統合ドキュメント:前往->
AAD と .Net の統合ドキュメント:前往->
AAD と Java の統合ドキュメント:前往->
-
インターフェースURL:
/openapi/auth/user/aad
-
リクエスト方式:
post
-
リクエストbody:
パラメータ名 | 必須 | 型 | パラメータ説明 |
---|---|---|---|
token | はい | string | ユーザーAAD access token(連携側が自分で提供) |
- インターフェースリクエスト例:
curl --location 'https://localhost/openapi/auth/user/aad' \
--header 'Content-Type: application/json' \
--data '{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlhSdmtvOFA3QTNVYVdTblU3Yk05blQwTWpoQSJ9.eyJhdWQiOiIzZTEwNjVhYS1jZWYxLTRiYTgtOWRiOS1kMWQ1Y2UzMGYyZDgiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNDRjMjRmNDItZDQ5Yi00MT......"
}'
- レスポンスbody:
パラメータ名 | サブパラメータ | 型 | パラメータ説明 |
---|---|---|---|
data | object | レスポンスデータ | |
access_token | string | SERVICEMEシステムのaccess token | |
expires_in | number | 有効期限(分単位) | |
success | boolean | 成功かどうか | |
msg | string | successがfalseの場合、ここにエラーメッセージが入る |
- レスポンス例:
{
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc0V4dGVybmFsIjpmYWxzZSwidXNlcklkIjoiNDAzMDUwMjEwMTEyODgzOTE2OCIsImFjY291bnQiOiJlY210cmlhbEBzZXJ2aWNlbWUub25taWNyb3NvZ......",
"expires_in": 1440
},
"success": true,
"msg": ""
}
クライアントとユーザーアカウント認証
この認証方式はクライアント認証とユーザーアカウント認証を組み合わせたものです。ユーザーアカウントによる認証を行うと同時に、クライアント証明書(client idとsecret)を使用してインターフェース呼び出しの安全性を確保します。このインターフェースを呼び出す際には署名検証が必要です。
- clientとsecretの取得方法は?
システム管理者がクライアント管理画面{domain}#/super-admin/client-management
で証明書を作成し、作成後にclient idとsecretを取得できます。
-
インターフェースURL:
/openapi/auth/client_with_account
-
リクエスト方式:
post
-
リクエストbody:
パラメータ名 | 必須 | 型 | パラメータ説明 |
---|---|---|---|
client | はい | string | クライアントId |
account | はい | string | ユーザーアカウント(ユーザー管理のUserNameに対応) |
timestamp | はい | number | タイムスタンプ(13桁の数字、ミリ秒単位、例:1711537596897) |
nonce | はい | string | 6桁のランダム値(数字または英字の組み合わせ) |
signature | はい | string | 署名、5分以内有効(署名フォーマット:コロンで連結後MD5 client:{client}secret:{secret}account:{account}timestamp:{timestamp}nonce:{nonce} のMD5 32桁小文字) |
-
javascript 署名例:
新しいhtmlファイルを作成し、以下の内容を貼り付けてブラウザで開いてください
<html>
<head>
<style>
.box {
width: 100%;
height: 100%;
padding: 50px 50px;
}
.row {
display: flex;
height: 50px;
width: 100%;
}
.col1 {
flex: 1;
}
.col2 {
flex: 3;
}
</style>
</head>
<body>
<div class="box">
<div class="row">
<div class="col1">client:</div>
<div class="col2" id="client"></div>
</div>
<div class="row">
<div class="col1">secret:</div>
<div class="col2" id="secret"></div>
</div>
<div class="row">
<div class="col1">account:</div>
<div class="col2" id="account"></div>
</div>
<div class="row">
<div class="col1">timestamp:</div>
<div class="col2" id="timestamp"></div>
</div>
<div class="row">
<div class="col1">nonce:</div>
<div class="col2" id="nonce"></div>
</div>
<div class="row">
<div class="col1">signature:</div>
<div class="col2" id="signature"></div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>
<script>
const client = "openapi"
const secret = "DzYwyICrKbUCEseYthCK0PfSfX7NPEuV"
const account = "test@serviceme.com"
const timestamp = +new Date()
const nonce = "123abc"
const message = `client:${client}secret:${secret}account:${account}timestamp:${timestamp}nonce:${nonce}` // 署名プレーンテキスト
const md5Hash = CryptoJS.MD5(message).toString().toLowerCase(); // MD5 32桁小文字
console.log(`署名プレーンテキスト:${message}`)
console.log(`署名結果:${md5Hash}`)
document.getElementById('client').innerText = client;
document.getElementById('secret').innerText = secret;
document.getElementById('account').innerText = account;
document.getElementById('timestamp').innerText = timestamp;
document.getElementById('nonce').innerText = nonce;
document.getElementById('signature').innerText = md5Hash;
</script>
</body>
</html> -
インターフェースリクエスト例:
curl --location 'https://localhost/openapi/auth/client_with_account' \
--header 'Content-Type: application/json' \
--data '{
"client": "openapi",
"account": "test@serviceme.com",
"timestamp": 1711537596456,
"nonce": "123abc",
"signature": "182be0c5cdcd5072bb1864cdee4d3d6e"
}'
- レスポンスbody
パラメータ名 | サブパラメータ | 型 | パラメータ説明 |
---|---|---|---|
data | object | レスポンスデータ | |
access_token | string | SERVICEMEシステムのaccess token | |
expires_in | number | 有効期限(分単位) | |
success | boolean | 成功かどうか | |
msg | string | successがfalseの場合、ここにエラーメッセージが入る |
- インターフェースレスポンス例:
{
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc0V4dGVybmFsIjpmYWxzZSwidXNlcklkIjoiNDAzMDUwMjEwMTEyODgzOTE2OCIsImFjY291bnQiOiJlY210cmlhbEBzZXJ2ub25ta......",
"expires_in": 1440
},
"success": true,
"msg": ""
}
チャット
Agentにメッセージを送信
-
インターフェースURL:
/openapi/chat/expert
-
リクエスト方式:
post
-
リクエストheader:
パラメータ名 | 必須 | 型 | パラメータ説明 |
---|---|---|---|
Authorization | はい | string | SERVICEME access tokenを入力、値のフォーマット:openapi {access_token} |
- リクエストbody:
パラメータ名 | 必須 | 型 | パラメータ説明 |
---|---|---|---|
expertCode | はい | string | SERVICEMEシステム内のAgent code(SERVICEMEシステム参照) |
content | はい | string | 質問内容 |
sessionId | いいえ | string | セッションID、チャットコンテキストを表す。nullを渡すと新規セッション開始。新規セッションIDはレスポンスで返却。2回目以降は前回のsession idを渡す必要あり |
stream | いいえ | boolean | ストリーミングを有効にするか(true:有効、false:無効)、デフォルトは無効 |
includeThought | いいえ | boolean | レスポンス内容に思考を含めるか(true:含める、false:含めない) |
**Q&A codeの取得方法は?**下図参照:
- リクエスト例:
curl --location 'https://localhost/vee/openapi/chat/expert' \
--header 'Authorization: openapi {access_token}' \
--header 'Content-Type: application/json' \
--data '{
"expertCode": "CHATES",
"content": "加班申请",
"sessionId": null,
"stream": false,
"includeThought": true
}'
- レスポンスbody:
パラメータ | サブパラメータ | サブサブパラメータ | サブサブサブパラメータ | 型 | パラメータ説明 |
---|---|---|---|---|---|
data | object | レスポンスデータ | |||
chatRecordId | string | チャット記録ID | |||
sessionId | string | セッションID | |||
content | string | テキスト型の回答情報 | |||
medias | object | メディア型の回答情報配列(画像やファイルなど) | |||
type | string | image:画像;file:ファイル | |||
name | string | 名前 | |||
suggestionQuestions | array string | 推奨質問 | |||
thoughts | array | 思考 | |||
thought | string | 思考内容 | |||
pluginName | string | プラグイン名 | |||
elapsedTime | object | プラグイン処理時間情報 | |||
model | float | モデル処理時間 | |||
action | float | アクション処理時間 | |||
total | float | 合計処理時間 | |||
state | string | 状態(success:成功) | |||
finish_reason | string | 回答終了かどうか。stopの場合は終了、途中はnull | |||
success | boolean | 成功かどうか | |||
msg | string | successがfalseの場合、ここにエラーメッセージが入る |
- 非ストリーミングレスポンス例:
{
"data": {
"chatRecordId": "4299234148041625600",
"sessionId": "4292755814873047040",
"content": "チームリーダーが業務タスクを発表し、完了ノードや検収基準などを明確にします。従業員と上司が合意した後に残業が可能です。残業終了後、従業員は工数システムで残業工数を記入し、システムで残業申請フローを提出します。備考欄には残業タスクを明確に記載し、勤務場所で出退勤記録を完全に記録します。チームリーダー/上司が残業成果を検収後、残業申請フローを承認します。HRが打刻記録を確認後、代休の計算を行います。",
"medias": [
{
"type": "image",
"name": null,
"url":"http://localhost:3978/openapi/chat/media/image/FE680A9CCFB1B56E80737FB28562DC33F4A37DEF52A65F046464788B83E0BE77"
},
{
"type": "file",
"name": "答案参考文件.pdf",
"url":"https://localhost/#/share/preview?fileId=4268457334348447744&objectType=2&previewType=file&mode=login"
},
],
"suggestionQuestions": [],
"thoughts": [
{
"thought": "この質問に答えるために、ナレッジベースの関連情報を検索する必要があります。",
"pluginName": "Search Knowledgebase",
"elapsedTime": {
"model": 3612.4722,
"action": 689.5891,
"total": 4302.0613
},
"state": "success"
}
],
"finish_reason": "stop"
},
"success": true,
"msg": ""
}
- ストリーミングレスポンス例:
data: {"data":{"chatRecordId":"4299228743576059904","sessionId":"4292755079242457089","content":"","medias":[],"suggestionQuestions":[],"thoughts":[{"thought":"この質問に答えるために、ナレッジベースの関連情報を検索する必要があります。","pluginName":"Search Knowledgebase","elapsedTime":{"model": 3612.4722,"action": 689.5891,"total": 4302.0613},"state": "success"}],"finish_reason":null},"success":true,"msg":""}
data: {"data":{"chatRecordId":"4299228743576059904","sessionId":"4292755079242457089","content":"チームリーダーが業務タスクを発表し、完了ノードや検収基準などを明確にします。従業員と上司が合意した後に残業が可能です。残業終了後、従業員は工数システムで残業工数を記入し、システムで残業申請フローを提出します。備考欄には残業タスクを明確に記載し、勤務場所で出退勤記録を完全に記録します。チームリーダー/上司が残業成果を検収後、残業申請フローを承認します。HRが打刻記録を確認後、代休の計算を行います。","medias":[],"suggestionQuestions":[],"thoughts":[],"finish_reason":null},"success":true,"msg":""}
data: {"data":{"chatRecordId":"4299228743576059904","sessionId":"4292755079242457089","content":"","medias":[{"type":"image","name":null,"url":"http://localhost:3978/openapi/chat/media/image/FE680A9CCFB1B56E80737FB28562DC33F4A37DEF52A65F046464788B83E0BE77"}],"suggestionQuestions":[],"thoughts":[],"finish_reason":null},"success":true,"msg":""}
data: {"data":{"chatRecordId":"4299228743576059904","sessionId":"4292755079242457089","content":"","medias":[{"type":"file","name":"答案参考文件.pdf","url":"https://localhost/#/share/preview?fileId=4268457334348447744&objectType=2&previewType=file&mode=login"}],"suggestionQuestions":[],"thoughts":[],"finish_reason":"stop"},"success":true,"msg":""}
会話の参考資料を取得
-
インターフェースURL:
/openapi/chat/record/{chatRecordId}/reference
-
リクエスト方式:
get
-
リクエストheader:
パラメータ名 | 必須 | 型 | パラメータ説明 |
---|---|---|---|
Authorization | はい | string | SERVICEME access tokenを入力、値のフォーマット:openapi {access_token} |
- リクエストURLパラメータ:
パラメータ名 | 必須 | 型 | パラメータ説明 |
---|---|---|---|
chatRecordId | はい | string | Q&AインターフェースのレスポンスのchatRecordId値 |
- リクエスト例:
curl --location 'http://localhost/openapi/chat/record/4299234148041625600/reference' \
--header 'Authorization: openapi {access_token}'
- レスポンスbody:
パラメータ名 | サブパラメータ | 型 | パラメータ説明 |
---|---|---|---|
data | object array | レスポンスデータ | |
title | string | タイトル | |
content | string | この会話記録で参照されたフラグメント内容 | |
score | float | 関連度(0~1、1に近いほど関連性が高い) | |
url | string | リンク(現時点ではファイルタイプの参照のみリンクあり) | |
type | string | タイプ列挙:document(ドキュメント)、image(画像)、QnA、other | |
success | boolean | 成功かどうか | |
msg | string | successがfalseの場合、ここにエラーメッセージが入る |
- レスポンス例:
json
{
"data": [
{
"title": "会社行政制度.pdf",
"content": "セクション1 ......",
"score": 0.95,
"url": "https://localhost/#/share/preview?fileId=4268457334348447744&objectType=2&previewType=file&mode=login",
"type": "document"
},
{
"title": "会社行政制度.pdf",
"content": "セクション2 ......",
"score": 0.81,
"url": "https://localhost/#/share/preview?fileId=4268457334348447744&objectType=2&previewType=file&mode=login",
"type": "document"
},
{
"title": "会社行政制度.pdf",
"content": "セクション3 ......",
"score": 0.76,
"url": "https://localhost/#/share/preview?fileId=4268457334348447744&objectType=2&previewType=file&mode=login",
"type": "document"
}
],
"success": true,
"msg": ""
}
ファイルスペース
単一ファイルアップロード
-
エンドポイント:
v1/openapi/workspace/file/upload
-
リクエスト方式:
post
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token} |
- Content Type:
form-data
- リクエストボディ:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
workspace | はい | string | ファイルスペース |
file | はい | file | ファイル(単一) |
eponymousCover | いいえ | bool | 同名ファイルが存在する場合上書きするか(デフォルトは上書きしない) |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/workspace/file/upload' \
--header 'Authorization: openapi {access_token}' \
--form 'workspace="テストスペース"' \
--form 'file=@"/C:/test.doc"' \
--form 'eponymousCover="false"'
- レスポンスボディ:
パラメータ名 | サブパラメータ | 型 | 説明 |
---|---|---|---|
data | object | レスポンスデータ | |
fileId | string | ファイルID | |
fileName | string | ファイル名 | |
uploader | string | アップロード者 | |
success | boolean | 成功かどうか | |
msg | string | successがfalseの場合、エラーメッセージが入る |
- レスポンス例:
{
"data": {
"fileId": "4345229404125790208",
"fileName": "test.doc",
"uploader": "test@serviceme.com"
},
"success": true,
"msg": ""
}
複数ファイルアップロード
ファイル提出
-
エンドポイント:
v1/openapi/workspace/file/upload/batchSubmit
-
リクエスト方式:
post
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token} |
- Content Type:
form-data
- リクエストボディ:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
workspace | はい | string | ファイルスペース |
files | はい | file | ファイル(複数) |
eponymousCover | いいえ | bool | 同名ファイルが存在する場合上書きするか(デフォルトは上書きしない) |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/workspace/file/upload/batchSubmit' \
--header 'Authorization: openapi {access_token}' \
--form 'workspace="テストスペース"' \
--form 'files=@"/C:/test1.doc"' \
--form 'files=@"/C:/test2.docx"' \
--form 'eponymousCover="false"'
- レスポンスボディ:
パラメータ名 | サブパラメータ | 型 | 説明 |
---|---|---|---|
data | object | レスポンスデータ | |
stateId | string | アップロード状態ID、このIDでアップロード結果をポーリング可能 | |
success | boolean | 成功かどうか | |
msg | string | successがfalseの場合、エラーメッセージが入る |
- レスポンス例:
{
"data": {
"stateId": "4345229404125790208"
},
"success": true,
"msg": ""
}
アップロード結果の確認
-
エンドポイント:
v1/openapi/workspace/file/upload/batchSubmit/{stateId}
-
リクエスト方式:
get
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token} |
- リクエストURLパラメータ:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
stateId | はい | string | 複数ファイル提出アップロードAPIから返されたstateId |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/workspace/file/upload/batchSubmit/4345227891722682368' \
--header 'Authorization: openapi {access_token}'
- レスポンスボディ:
パラメータ名 | サブパラメータ | サブサブパラメータ | 型 | 説明 |
---|---|---|---|---|
data | object array | レスポンスデータ | ||
fileId | string | ファイルID | ||
fileName | string | ファイル名 | ||
state | string | 状態列挙:underway(処理中)、success(成功)、fail(失敗) | ||
uploader | string | アップロード者 | ||
errorMsg | string | 状態がfailの場合、失敗理由 | ||
finishTime | string | ファイル処理完了時間 | ||
success | boolean | 成功かどうか | ||
msg | string | successがfalseの場合、エラーメッセージが入る |
- レスポンス例:
{
"data": [
{
"fileId": "4345227925730099200",
"fileName": "test1.doc",
"state": "success",
"uploader": "test@serviceme.com",
"errorMsg": "",
"finishTime": "2024-08-17T05:04:30.0128596Z"
},
{
"fileId": "4345227924266287104",
"fileName": "test2.docx",
"state": "success",
"uploader": "test@serviceme.com",
"errorMsg": "",
"finishTime": "2024-08-17T05:04:29.7952274Z"
}
],
"success": true,
"msg": ""
}
QnA 作成
-
エンドポイント:
v1/openapi/workspace/qna/create
-
リクエスト方式:
post
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token} |
- リクエストボディ:
パラメータ名 | サブパラメータ | 必須 | 型 | 説明 |
---|---|---|---|---|
workspace | はい | string | ファイルスペース | |
questions | はい | string array | 質問配列、複数可 | |
answer | はい | string | 回答 | |
metadatas | いいえ | object array | メタデータ | |
typeCode | はい | string | メタデータタイプ | |
content | はい | string | 内容 |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/workspace/qna/create' \
--header 'Content-Type: application/json' \
--header 'Authorization: openapi {access_token}' \
--data '{
"questions": [
"テスト質問"
],
"answer": "テスト回答",
"workspace": "テストスペース",
"metadatas": [
{
"typeCode": "Document type",
"content": "テストメタデータ"
}
]
}'
- レスポンスボディ:
パラメータ名 | 型 | 説明 |
---|---|---|
success | boolean | 成功かどうか |
msg | string | successがfalseの場合、エラーメッセージが入る |
- レスポンス例:
{
"success": true,
"msg": ""
}
ファイル検索
-
エンドポイント:
v1/openapi/workspace/file
-
リクエスト方式:
post
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token} |
- リクエストボディ:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
workspace | はい | string | ファイルスペース |
pageIndex | いいえ | number | ページ番号、デフォルトは1ページ目 |
pageSize | いいえ | number | 取得件数、デフォルトは10件 |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/workspace/file' \
--header 'Content-Type: application/json' \
--header 'Authorization: ••••••' \
--data '{
"workspace": "テストスペース",
"pageIndex": 1,
"pageSize": 10
}'
-
レスポンスボディ:
パラメータ名 サブパラメータ サブサブパラメータ 型 説明 data object array レスポンスデータ id string ファイルID name string ファイル名 size number ファイルサイズ(バイト単位) description string 説明 fullPath string ファイルパス tags object array ファイルタグ情報 id string タグID value string タグ内容 chunkingState string ファイルインデックス状態:waiting(処理待ち)、success(成功)、fail(失敗)、underway(進行中) previewState string ファイルプレビュー状態:waiting(処理待ち)、success(成功)、fail(失敗)、underway(進行中) fileCanPreview boolean ファイルプレビュー可否、true:可、false:不可 previewUrl string ファイルプレビューURL createdByRealName string ファイル作成者名 createdByAccount string ファイル作成者アカウント created datetime ファイル作成日時 modifiedByRealName string ファイル編集者名 modifiedByAccount string ファイル編集者アカウント modified datetime ファイル編集日時 success boolean 成功かどうか msg string successがfalseの場合、エラーメッセージが入る -
レスポンス例:
{
"data": [
{
"id": "4339013367831199744",
"name": "test.docx",
"size": 15113,
"description": null,
"fullPath": "/",
"tags": [],
"chunkingState": "success",
"previewState": "success",
"fileCanPreview": true,
"previewUrl": "http://localhost.com/#/share/preview?fileId=4339013367831199744&objectType=2&previewType=file&mode=login",
"createdByRealName": "test",
"createdByAccount": "test",
"created": "2024-07-31T01:30:02.88",
"modifiedByRealName": "test",
"modifiedByAccount": "test",
"modified": "2024-07-31T01:30:02.88"
}
],
"pageSize": 10,
"pageIndex": 1,
"totalCount": 1,
"success": true,
"msg": ""
}
ファイルセクション検索
-
エンドポイント:
v1/openapi/workspace/file/chunk
-
リクエスト方式:
post
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token} |
- リクエストボディ:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
fileId | はい | string | ファイルID |
imageFormat | いいえ | string | 画像フォーマット、markdownまたはhtml、デフォルトはmarkdown出力 |
pageIndex | いいえ | number | ページ番号、デフォルトは1ページ目 |
pageSize | いいえ | number | 取得件数、デフォルトは10件 |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/workspace/file/chunk' \
--header 'Content-Type: application/json' \
--header 'Authorization: ••••••' \
--data '{
"fileId": "4344174161665458176",
"imageFormat": "html",
"pageIndex": 1,
"pageSize": 10
}'
-
レスポンスボディ:
パラメータ名 サブパラメータ サブサブパラメータ 型 説明 data object array レスポンスデータ id string セクションID content string セクション内容 success boolean 成功かどうか msg string successがfalseの場合、エラーメッセージが入る -
レスポンス例:
json
{
"data": [
{
"id": "4339013367831199744",
"content": "test"
}
],
"pageSize": 10,
"pageIndex": 1,
"totalCount": 1,
"success": true,
"msg": ""
}
RAG
-
エンドポイント:
/v1/openapi/rag
-
リクエスト方式:
post
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token} |
- リクエストボディ:
パラメータ名 | 型 | 必須 | デフォルト値 | 説明 |
---|---|---|---|---|
query | string | いいえ | なし | 検索する質問または内容。Keywordsパラメータと同時にnull にはできません。 |
keywords | string | いいえ | なし | キーワード。複数のキーワードは | で区切ります。Queryパラメータと同時にnull にはできません。null の場合は必要に応じてキーワードを抽出し、空でない場合は入力されたキーワードを直接使用します。 |
workspaces | array | いいえ | なし | 今回のRAGで検索するファイルスペース名またはID。この値を指定した場合、これらのスペースのみから検索します。 |
ragObject | RagObject | はい | 0 | RAGオブジェクトタイプ。列挙値(RagObject列挙を参照)。 |
topk | number | はい | なし | 結果の返却数。 |
minSimilarity | double | いいえ | 0.8 | 最低類似度。範囲は [0, 1] 。 |
metadataFilter | array | いいえ | なし | 使用するメタデータフィルタータイプ。現在はdefaultフィルターのみサポート。 |
ragMode | SearchMode | はい | 0 | RAGモード。列挙値(SearchMode列挙を参照)。 |
weights | object | いいえ | なし | 各インデックスのRRF重み。RagMode がHybrid の場合のみ有効。null の場合はデフォルト重みを使用。 |
reranker | string | いいえ | なし | null の場合はreranker を使用しません。 |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/rag' \
--header 'Authorization: ••••••' \
--header 'Content-Type: application/json' \
--data '{
"query": "什么是人工智能?",
"keywords": "AI|机器学习",
"workspaces": ["workspace1", "workspace2"],
"ragObject": 0,
"topk": 3,
"minSimilarity": 0.8,
"metadataFilter": ["default"],
"ragMode": 1,
"weights": {
"Embedding": 0.9,
"FullText": 0.8
},
"reranker": "default"
} '
- レスポンスボディ:
フィールド名 | 型 | 説明 |
---|---|---|
data | object | レスポンスデータオブジェクト。検索結果や検索IDなどを含みます。 |
data.results | array | 検索結果リスト。各要素はフラグメント情報を含むオブジェクトです。 |
data.results[].chunkId | string | フラグメントID |
data.results[].fileId | string | フラグメントが属するファイルID |
data.results[].fileName | string | フラグメントが属するファイル名 |
data.results[].content | string | フラグメント内容 |
data.results[].metadata | json | フラグメントのメタデータ |
data.results[].url | string | フラグメントのURLアドレス(存在する場合) |
data.results[].searchScore | double | 類似度スコア |
data.results[].rrfScore | double | RRFスコア |
data.results[].rerankScore | double | リランクスコア |
data.results[].workspaceId | string | ファイルが属するファイルスペースID |
data.results[].workspaceName | string | ファイルが属するファイルスペース名 |
data.searchId | string | 今回の検索操作の一意識別子 |
success | boolean | リクエストが成功したかどうか |
msg | string | レスポンスメッセージ(存在する場合) |
- レスポンス例:
{
"data": {
"results": [
{
"chunkId": "4422442085118906369",
"fileId": "4417076017114382336",
"fileName": "文件1.pdf",
"content": "……",
"metadata": {
"Url": "https://……",
"FileName": "文件1.pdf",
"WorkspaceName": "workspace1",
"FileId": "4417076017114382336",
"FilePath": "/",
"Created": "2025-03-03T11:23:08.803",
"Size": "1160594"
},
"url": "https://……",
"searchScore": 0.153852914388501,
"rrfScore": 0.8768274796195331,
"rerankScore": 0.0,
"workspaceId": "4417069258022846464",
"workspaceName": ""
},
{
"chunkId": "4422442085114712073",
"fileId": "4417076017114382336",
"fileName": "文件1.pdf",
"content": "……",
"metadata": {
"Url": "https://……",
"FileName": "文件1.pdf",
"WorkspaceName": "workspace1",
"FileId": "4417076017114382336",
"FilePath": "/",
"Created": "2025-03-03T11:23:08.803",
"Size": "1160594"
},
"url": "https://……",
"searchScore": 0.152822583517241,
"rrfScore": 0.8670604574184315,
"rerankScore": 0.0,
"workspaceId": "4417069258022846464",
"workspaceName": ""
},
{
"chunkId": "4422442085114712071",
"fileId": "4417076017114382336",
"fileName": "文件1.pdf",
"content": "……",
"metadata": {
"Url": "……",
"FileName": "文件1.pdf",
"WorkspaceName": "workspace1",
"FileId": "4417076017114382336",
"FilePath": "/",
"Created": "2025-03-03T11:23:08.803",
"Size": "1160594"
},
"url": "……",
"searchScore": 0.153708375384407,
"rrfScore": 0.8661891817471927,
"rerankScore": 0.0,
"workspaceId": "4417069258022846464",
"workspaceName": ""
}
],
"searchId": "4423568945336811520"
},
"success": true,
"msg": ""
}
- 列挙型
RagObject列挙
列挙値 | 数値 | 説明 |
---|---|---|
Both | 0 | Q&Aとドキュメント内容を同時に検索。 |
Qna | 1 | Q&A内容のみを検索。 |
Doc | 2 | ドキュメント内容のみを検索。 |
SearchMode列挙
列挙値 | 数値 | 説明 |
---|---|---|
Hybrid | 1 | ハイブリッド検索モード。埋め込みベクトルと全文検索を組み合わせます。 |
Embedding | 2 | 埋め込みベクトルのみの検索モード。 |
FullText | 3 | 全文検索のみの検索モード。 |
- Rerankモデル設定方法 cohere-rerank-v3.5モデルの設定例:
INSERT INTO dbo.AI_LLM (Id,ModelName,TokenCount,Config,Enable,[Default],Display,DisplayName) VALUES
(4183721090264072898,N'rerank-v3.5',255454,N'{"RerankerName":"cohere","Uri":"https://ドメイン/v2/rerank","Token":"bearer token"}',1,0,0,N'cohere-rerank-v3.5');
注意:Cohere公式APIを使用する場合、Tokenフィールドの値はbearer tokenです。Azure AI FoundryのAPIを使用する場合、Tokenフィールドの値からbearerを削除してください。
ユーザー
ユーザー追加(バッチ対応)
-
エンドポイント:
v1/openapi/user
-
リクエスト方式:
post
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token} |
- Content Type:
application/json
- リクエストボディ:
パラメータ名 | 必須 | 型 | デフォルト値 | 説明 |
---|---|---|---|---|
userName | はい | string | なし | アカウント/ユーザー名 |
password | いいえ | string | '' | パスワード |
active | いいえ | boolean | true | アクティブ状態 |
userInfo | いいえ | object | なし | ユーザー情報 |
userInfo.realName | いいえ | string | userNameの値 | 本名 |
userInfo.spell | いいえ | string | なし | 本名のピンイン |
userInfo.serialNumber | いいえ | string | なし | 社員番号 |
userInfo.nickName | いいえ | string | なし | ニックネーム |
userInfo.gender | いいえ | number | 0 | 性別 0:FEMALE, 1:MALE |
userInfo.birthday | いいえ | string | なし | 誕生日 |
userInfo.mobilePhone | いいえ | string | なし | 携帯番号 |
userInfo.email | いいえ | string | なし | メールアドレス |
userInfo.weChat | いいえ | string | なし | WeChat ID |
userInfo.avatar | いいえ | string | なし | アバター |
userInfo.region | いいえ | string | なし | 地域 |
userInfo.joinTime | いいえ | string | なし | 入社日 |
userInfo.sort | いいえ | number | 0 | ソート番号 |
userInfo.enable | いいえ | boolean | false | 有効/無効 |
userInfo.description | いいえ | string | なし | 説明 |
userInfo.external | いいえ | boolean | false | 内部/外部ユーザー識別 false:内部ユーザー, true:外部ユーザー |
userInfo.officePhoneNumber | いいえ | string | なし | オフィス電話番号 |
userInfo.isAad | いいえ | string | なし | アカウントがAAD(microsoft Entra ID)由来か |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/user' \
--header 'Authorization: openapi {access_token}' \
--data '{
"userName": "user1",
"password": "abc123",
"active": true,
"userInfo": {
"realName": "张三",
"spell": "zhangsan",
"serialNumber": "123456",
"nickName": "张三",
"gender": 0,
"birthday": "1990-01-01",
"mobilePhone": "13800138000",
"email": "zhangsan@email.com",
"weChat": "zhangsan",
"avatar": "/icons/e5392a9c9efb423cab69ce040dcb04e7.png",
"region": "中国",
"joinTime": "2023-01-01",
"sort": 101,
"enable": true,
"description": "张三的描述",
"external": false,
"officePhoneNumber": "010-12345678",
"isAad": false
},
} '
- レスポンスボディ:
フィールド名 | 型 | 説明 |
---|---|---|
data | object | レスポンスデータオブジェクト |
data.accountId | string | アカウントID |
data.userId | string | ユーザーID |
data.userName | string | ユーザー名 |
data.realName | string | ユーザー本名 |
success | boolean | リクエストが成功したかどうか |
msg | string | レスポンスメッセージ(存在する場合) |
- レスポンス例:
{
"success": true,
"msg": "",
"data": [
{
"accountId": "123456",
"userId": "123456",
"userName": "user1",
"realName": "张三"
}
]
}
ユーザー編集
-
エンドポイント:
v1/openapi/user
-
リクエスト方式:
put
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token} |
- Content Type:
application/json
- リクエストボディ:
パラメータ名 | 必須 | 型 | デフォルト値 | 説明 |
---|---|---|---|---|
userName | いいえ | string | なし | アカウント/ユーザー名。ユーザー検索用のみで変更されません。idと同時に空にはできません |
id | いいえ | string | '' | id。userNameと同時に空にはできません |
active | いいえ | boolean | true | アクティブ状態 |
realName | いいえ | string | userNameの値 | 本名 |
spell | いいえ | string | なし | 本名のピンイン |
serialNumber | いいえ | string | なし | 社員番号 |
nickName | いいえ | string | なし | ニックネーム |
gender | いいえ | number | 0 | 性別 0:FEMALE, 1:MALE |
birthday | いいえ | string | なし | 誕生日 |
mobilePhone | いいえ | string | なし | 携帯番号 |
email | いいえ | string | なし | メールアドレス |
weChat | いいえ | string | なし | WeChat ID |
avatar | いいえ | string | なし | アバター |
region | いいえ | string | なし | 地域 |
joinTime | いいえ | string | なし | 入社日 |
sort | いいえ | number | 0 | ソート番号 |
enable | いいえ | boolean | false | 有効/無効 |
description | いいえ | string | なし | 説明 |
external | いいえ | boolean | false | 内部/外部ユーザー識別 false:内部ユーザー, true:外部ユーザー |
officePhoneNumber | いいえ | string | なし | オフィス電話番号 |
isAad | いいえ | string | なし | アカウントがAAD(microsoft Entra ID)由来か |
- リクエスト例:
shell
curl --location 'http://localhost/v1/openapi/user' \
--header 'Authorization: openapi {access_token}' \
--data '{
"id": "123456",
"userName": "user1",
"realName": "张三",
"spell": "zhangsan",
"serialNumber": "123456",
"nickName": "张三",
"gender": 0,
"birthday": "1990-01-01",
"mobilePhone": "13800138000",
"email": "zhangsan@email.com",
"weChat": "zhangsan",
"avatar": "/icons/e5392a9c9efb423cab69ce040dcb04e7.png",
"region": "中国",
"joinTime": "2023-01-01",
"sort": 101,
"enable": true,
"description": "张三的描述",
"external": false,
"officePhoneNumber": "010-12345678",
"isAad": false
} '
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
success | boolean | リクエストが成功したかどうか |
msg | string | レスポンスメッセージ(あれば) |
- レスポンス例:
{
"success": true,
"msg": ""
}
ユーザー削除
-
エンドポイント:
v1/openapi/user
-
リクエスト方式:
delete
-
リクエストheader:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値の形式:openapi {access_token} |
- Content Type:
application/json
- リクエストbody:
パラメータ名 | 必須 | 型 | デフォルト値 | 説明 |
---|---|---|---|---|
はい | array | なし | ユーザーID配列またはユーザー名配列。配列内は全てIDまたは全てユーザー名でなければなりません。 |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/user' \
--header 'Authorization: openapi {access_token}' \
--data '['user1','user2']'
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
success | boolean | リクエストが成功したかどうか |
msg | string | レスポンスメッセージ(あれば) |
- レスポンス例:
{
"success": true,
"msg": ""
}
ユーザー有効化
-
エンドポイント:
v1/openapi/user/{userCode}/enable
-
リクエスト方式:
put
-
リクエストheader:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値の形式:openapi {access_token} |
- Content Type:
application/json
- routeパラメータ:
パラメータ名 | 必須 | 型 | デフォルト値 | 説明 |
---|---|---|---|---|
userCode | はい | string | なし | ユーザーIDまたはユーザー名 |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/user/123456/enable' \
--header 'Authorization: openapi {access_token}' \
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
success | boolean | リクエストが成功したかどうか |
msg | string | レスポンスメッセージ(あれば) |
- レスポンス例:
{
"success": true,
"msg": ""
}
ユーザー無効化
-
エンドポイント:
v1/openapi/user/{userCode}/disable
-
リクエスト方式:
put
-
リクエストheader:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値の形式:openapi {access_token} |
- Content Type:
application/json
- routeパラメータ:
パラメータ名 | 必須 | 型 | デフォルト値 | 説明 |
---|---|---|---|---|
userCode | はい | string | なし | ユーザーIDまたはユーザー名 |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/user/123456/disable' \
--header 'Authorization: openapi {access_token}' \
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
success | boolean | リクエストが成功したかどうか |
msg | string | レスポンスメッセージ(あれば) |
- レスポンス例:
{
"success": true,
"msg": ""
}
ユーザー有効化/無効化(バッチ対応)
-
エンドポイント:
v1/openapi/user/enable
-
リクエスト方式:
put
-
リクエストheader:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値の形式:openapi {access_token} |
- Content Type:
application/json
- リクエストbody:
パラメータ名 | 必須 | 型 | デフォルト値 | 説明 |
---|---|---|---|---|
codes | はい | array | なし | ユーザーID配列またはユーザー名配列。配列内は全てIDまたは全てユーザー名でなければなりません。 |
operation | はい | boolean | true | true: 有効化, false: 無効化 |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/user/enable' \
--header 'Authorization: openapi {access_token}' \
--data '{
"codes": ['user1', 'user2'],
"operation": true
}'
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
success | boolean | リクエストが成功したかどうか |
msg | string | レスポンスメッセージ(あれば) |
- レスポンス例:
{
"success": true,
"msg": ""
}
ユーザー一覧取得(ページング)
-
エンドポイント:
v1/openapi/user/pageList
-
リクエスト方式:
post
-
リクエストheader:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値の形式:openapi {access_token} |
- Content Type:
application/json
- リクエストbody:
パラメータ名 | 必須 | 型 | デフォルト値 | 説明 |
---|---|---|---|---|
orderField | はい | string | なし | ソート対象フィールド。Idは時間情報を含むため、idでソートすると作成日時順になります |
orderType | はい | string | なし | ソートタイプ。asc: 昇順, desc: 降順 |
conditions | いいえ | array | なし | 検索条件。複数指定時はand条件 |
conditions.fieldName | いいえ | string | なし | 検索条件名。例:realName |
conditions.fieldValue | いいえ | string | なし | 検索条件値 |
conditions.conditionalType | いいえ | number | 0 | 検索条件の比較タイプ 0: 完全一致, 1: 部分一致, 2: より大きい, 3: 以上, 4: より小さい, 5: 以下, 6: 含む(in), 7: 含まない(not in), 8: 左部分一致, 9: 右部分一致, 10: 不等, 11: nullまたは空, 12: 空でない, 13: notLike |
pageIndex | はい | number | なし | ページ番号 |
pageSize | はい | number | なし | 1ページあたりの件数 |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/user/pageList' \
--header 'Authorization: openapi {access_token}' \
{
"orderField": "id",
"orderType": "desc",
"conditions": [
{
"fieldName": "realName",
"fieldValue": "张三",
"conditionalType": 0
}
],
"pageIndex": 1,
"pageSize": 15
}
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
data | array | ページングデータ |
data.id | string | アカウントID |
data.userId | string | ユーザーID |
data.userName | string | ユーザー名 |
data.active | boolean | 有効化されているかどうか |
data.avatar | string | アバター |
data.birthday | string | 誕生日 |
data.created | string | ユーザーデータ作成日 |
data.modified | string | ユーザーデータ最終更新日 |
data.description | string | 説明 |
data.gender | number | 性別 0:FEMALE, 1:MALE |
data.mobilePhone | string | 携帯番号 |
data.nickName | string | ニックネーム |
data.email | string | メールアドレス |
data.joinTime | string | 入社日 |
data.region | string | 地域 |
data.weChat | string | WeChat ID |
data.spell | string | 本名のピンイン |
data.serialNumber | string | 社員番号 |
data.accountId | string | ユーザーが所属するアカウントID |
data.sort | number | ソート番号 |
data.officePhoneNumber | string | オフィス電話番号 |
data.external | boolean | 内部/外部ユーザー識別 false: 内部ユーザー, true: 外部ユーザー |
data.isAad | boolean | アカウントがAAD(microsoft Entra ID)由来かどうか |
data.enable | boolean | 有効/無効 |
pageIndex | number | 現在のページ番号 |
pageSize | number | ページサイズ |
totalCount | number | 総件数 |
success | boolean | リクエストが成功したかどうか |
msg | string | レスポンスメッセージ(あれば) |
- レスポンス例:
{
"data": [
{
"accountId": "123456",
"userId": "123456",
"userName": "user1",
"realName": "张三"
}
],
"pageSize": 15,
"pageIndex": 1,
"totalCount": 1,
"success": true,
"msg": null
}
ユーザー情報取得
-
エンドポイント:
v1/openapi/user/{userCode}
-
リクエスト方式:
get
-
リクエストheader:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値の形式:openapi {access_token} |
- Content Type:
application/json
- routeパラメータ:
パラメータ名 | 必須 | 型 | デフォルト値 | 説明 |
---|---|---|---|---|
userCode | はい | string | なし | ユーザーIDまたはユーザー名 |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/user/123456' \
--header 'Authorization: openapi {access_token}' \
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
data | object | レスポンスデータオブジェクト |
data.id | string | アカウントID |
data.userId | string | ユーザーID |
data.userName | string | ユーザー名 |
data.Active | boolean | 有効化されているかどうか |
data.Avatar | string | アバター |
data.Birthday | string | 誕生日 |
data.Created | string | ユーザーデータ作成日 |
data.Modified | string | ユーザーデータ最終更新日 |
data.Description | string | 説明 |
data.Gender | number | 性別 0:FEMALE, 1:MALE |
data.MobilePhone | string | 携帯番号 |
data.NickName | string | ニックネーム |
data.Email | string | メールアドレス |
data.JoinTime | string | 入社日 |
data.Region | string | 地域 |
data.WeChat | string | WeChat ID |
data.Spell | string | 本名のピンイン |
data.SerialNumber | string | 社員番号 |
data.AccountId | string | ユーザーが所属するアカウントID |
data.Sort | number | ソート番号 |
data.OfficePhoneNumber | string | オフィス電話番号 |
data.External | boolean | 内部/外部ユーザー識別 false: 内部ユーザー, true: 外部ユーザー |
data.IsAad | boolean | アカウントがAAD(microsoft Entra ID)由来かどうか |
data.Enable | boolean | 有効/無効 |
success | boolean | リクエストが成功したかどうか |
msg | string | レスポンスメッセージ(あれば) |
- レスポンス例:
json
{
"success": true,
"msg": "",
"data": [
{
"accountId": "123456",
"userId": "123456",
"userName": "user1",
"realName": "张三"
}
]
}
現在ログインしているユーザーの情報を取得
-
エンドポイント:
v1/openapi/user/me
-
リクエスト方式:
get
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | パラメータ説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token} |
-
Content Type:
application/json
-
リクエスト例:
curl --location 'http://localhost/v1/openapi/user/me' \
--header 'Authorization: openapi {access_token}' \
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
data | object | レスポンスデータオブジェクト |
data.id | string | アカウントID |
data.userId | string | ユーザーID |
data.userName | string | ユーザー名 |
data.Active | boolean | 有効かどうか |
data.Avatar | string | アバター |
data.Birthday | string | 誕生日 |
data.Created | string | ユーザーデータ作成日 |
data.Modified | string | ユーザーデータ最終更新日 |
data.Description | string | 説明 |
data.Gender | number | 性別 0:FEMALE, 1:MALE |
data.MobilePhone | string | 携帯番号 |
data.NickName | string | ニックネーム |
data.Email | string | メールアドレス |
data.JoinTime | string | 入社日 |
data.Region | string | 地域 |
data.WeChat | string | WeChat ID |
data.Spell | string | 本名のピンイン |
data.SerialNumber | string | 社員番号 |
data.AccountId | string | ユーザーが所属するアカウントID |
data.Sort | number | 並び順番号 |
data.OfficePhoneNumber | string | オフィス電話番号 |
data.External | boolean | 内部/外部ユーザー識別 false: 内部ユーザー, true: 外部ユーザー |
data.IsAad | boolean | アカウントがAAD(microsoft Entra ID)由来かどうか |
data.Enable | boolean | 有効/無効 |
success | boolean | リクエスト成功かどうか |
msg | string | レスポンスメッセージ(あれば) |
- レスポンス例:
{
"success": true,
"msg": "",
"data": [
{
"accountId": "123456",
"userId": "123456",
"userName": "user1",
"realName": "张三"
}
]
}
現在ログインしているユーザーのロールを取得
-
エンドポイント:
v1/openapi/user/roles
-
リクエスト方式:
get
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | パラメータ説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token} |
-
Content Type:
application/json
-
リクエスト例:
curl --location 'http://localhost/v1/openapi/user/me/roles' \
--header 'Authorization: openapi {access_token}' \
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
data | array | レスポンスデータオブジェクト |
data.roleId | string | ロールID |
data.roleName | string | ロール名 |
data.dataPermissionList | array | このロールでのユーザーのデータ権限 |
data.dataPermissionList.BusinessTreeType | number | アプリケーションタイプ |
data.dataPermissionList.DataPermissionObjectId | string | データ権限オブジェクトID(例:ナレッジベース権限の場合はそのID) |
success | boolean | リクエスト成功かどうか |
msg | string | レスポンスメッセージ(あれば) |
- レスポンス例:
{
"success": true,
"msg": "",
"data": [
{
"roleId": "123456",
"roleName": "知识库访客",
"dataPermissionList": [
{
"BusinessTreeType": 1,
"DataPermissionObjectId": "123456"
}
]
}
]
}
ユーザーに関連付けられているロールを取得
-
エンドポイント:
v1/openapi/user/{userCode}/roles
-
リクエスト方式:
get
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | パラメータ説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token} |
- Content Type:
application/json
- routeパラメータ:
パラメータ名 | 必須 | 型 | デフォルト値 | パラメータ説明 |
---|---|---|---|---|
userCode | はい | string | なし | ユーザーID配列またはユーザー名 |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/user/123456/roles' \
--header 'Authorization: openapi {access_token}' \
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
data | array | レスポンスデータオブジェクト |
data.roleId | string | ロールID |
data.roleName | string | ロール名 |
data.dataPermissionList | array | このロールでのユーザーのデータ権限 |
data.dataPermissionList.BusinessTreeType | number | アプリケーションタイプ |
data.dataPermissionList.DataPermissionObjectId | string | データ権限オブジェクトID(例:ナレッジベース権限の場合はそのID) |
success | boolean | リクエスト成功かどうか |
msg | string | レスポンスメッセージ(あれば) |
- レスポンス例:
{
"success": true,
"msg": "",
"data": [
{
"roleId": "123456",
"roleName": "知识库访客",
"dataPermissionList": [
{
"BusinessTreeType": 1,
"DataPermissionObjectId": "123456"
}
]
}
]
}
ユーザーロール関係の変更
-
エンドポイント:
v1/openapi/user/{userCode}/roles
-
リクエスト方式:
put
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | パラメータ説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token} |
- Content Type:
application/json
- routeパラメータ:
パラメータ名 | 必須 | 型 | デフォルト値 | パラメータ説明 |
---|---|---|---|---|
userCode | はい | string | なし | ユーザーID配列またはユーザー名 |
- リクエストbody:
パラメータ名 | 必須 | 型 | デフォルト値 | パラメータ説明 |
---|---|---|---|---|
はい | array | なし | ロールID配列またはロール名配列。配列内は全てIDまたは全て名称で統一。 |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/user/123456/roles' \
--header 'Authorization: openapi {access_token}' \
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
data | array | レスポンスデータオブジェクト |
data.roleId | string | ロールID |
data.roleName | string | ロール名 |
data.dataPermissionList | array | このロールでのユーザーのデータ権限 |
data.dataPermissionList.BusinessTreeType | number | アプリケーションタイプ |
data.dataPermissionList.DataPermissionObjectId | string | データ権限オブジェクトID(例:ナレッジベース権限の場合はそのID) |
success | boolean | リクエスト成功かどうか |
msg | string | レスポンスメッセージ(あれば) |
- レスポンス例:
{
"success": true,
"msg": "",
"data": [
{
"roleId": "123456",
"roleName": "知识库访客",
"dataPermissionList": [
{
"BusinessTreeType": 1,
"DataPermissionObjectId": "123456"
}
]
}
]
}
組織
組織の追加
-
エンドポイント:
v1/openapi/organization
-
リクエスト方式:
post
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | パラメータ説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token} |
- Content Type:
application/json
- リクエストbody:
パラメータ名 | 必須 | 型 | デフォルト値 | パラメータ説明 |
---|---|---|---|---|
code | はい | string | なし | 組織コード。システム内で一意、重複不可 |
parentId | いいえ | string | なし | 親組織IDまたは親組織名のいずれか必須 |
parentName | いいえ | string | なし | 親組織名。親組織IDまたは親組織名のいずれか必須 |
name | はい | string | なし | 名称 |
location | いいえ | string | なし | 住所 |
remarks | いいえ | string | なし | 備考 |
contact | いいえ | string | なし | 連絡先 |
Info | いいえ | string | なし | 機関情報 |
Extension | いいえ | string | なし | 拡張情報 |
IsSubsidiary | いいえ | boolean | false | 子会社かどうか |
sort | いいえ | number | 0 | 並び順番号 |
isEnable | いいえ | boolean | false | 有効/無効 |
external | いいえ | boolean | false | 内部/外部組織識別 false: 内部, true: 外部 |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/organization' \
--header 'Authorization: openapi {access_token}' \
--data '{
"code": "123456",
"parentId": "12345",
"name": "组织名称",
"location": "地址"
} '
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
data | object | レスポンスデータオブジェクト |
data.id | string | 組織ID |
data.code | string | 組織コード |
data.parentId | string | 親組織ID |
data.parentName | string | 有効かどうか |
data.name | string | 名称 |
data.location | string | 住所 |
data.remarks | string | 備考 |
data.contact | string | 連絡先 |
data.Info | string | 機関情報 |
data.Extension | number | 拡張情報 |
data.IsSubsidiary | boolean | 子会社かどうか |
data.sort | number | 並び順番号 |
data.isEnable | boolean | 有効/無効 |
data.external | boolean | 内部/外部組織識別 |
success | boolean | リクエスト成功かどうか |
msg | string | レスポンスメッセージ(あれば) |
- レスポンス例:
{
"success": true,
"msg": "",
"data": [
{
"id": "123456",
"code": "123456",
"parentId": "12345",
"name": "组织名称",
"location": "地址"
}
]
}
組織の更新
-
エンドポイント:
v1/openapi/organization
-
リクエスト方式:
put
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | パラメータ説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token} |
- Content Type:
application/json
- リクエストbody:
パラメータ名 | 必須 | 型 | デフォルト値 | パラメータ説明 |
---|---|---|---|---|
id | いいえ | string | なし | 組織ID、codeのいずれか必須 |
code | いいえ | string | なし | 組織コード、idのいずれか必須 |
parentId | いいえ | string | なし | 親組織IDまたは親組織名のいずれか必須 |
parentName | いいえ | string | なし | 親組織名。親組織IDまたは親組織名のいずれか必須 |
name | はい | string | なし | 名称 |
location | いいえ | string | なし | 住所 |
remarks | いいえ | string | なし | 備考 |
contact | いいえ | string | なし | 連絡先 |
Info | いいえ | string | なし | 機関情報 |
Extension | いいえ | string | なし | 拡張情報 |
IsSubsidiary | いいえ | boolean | false | 子会社かどうか |
sort | いいえ | number | 0 | 並び順番号 |
isEnable | いいえ | boolean | false | 有効/無効 |
external | いいえ | boolean | false | 内部/外部組織識別 false: 内部, true: 外部 |
- リクエスト例:
shell
curl --location 'http://localhost/v1/openapi/organization' \
--header 'Authorization: openapi {access_token}' \
--data '{
"code": "123456",
"parentId": "12345",
"name": "組織名",
"location": "住所"
} '
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
data | object | レスポンスデータオブジェクト |
data.id | string | 組織ID |
data.code | string | 組織コード |
data.parentId | string | 親組織ID |
data.parentName | string | 有効かどうか |
data.name | string | 名称 |
data.location | string | 住所 |
data.remarks | string | 備考 |
data.contact | string | 連絡先 |
data.Info | string | 機関情報 |
data.Extension | number | 拡張情報 |
data.IsSubsidiary | boolean | 子会社かどうか |
data.sort | number | 並び順 |
data.isEnable | boolean | 有効/無効 |
data.external | boolean | 内部/外部組織識別 |
success | boolean | リクエストが成功したかどうか |
msg | string | レスポンスメッセージ(あれば) |
- レスポンス例:
{
"success": true,
"msg": "",
"data": [
{
"id": "123456",
"code": "123456",
"parentId": "12345",
"name": "組織名",
"location": "住所"
}
]
}
組織の削除
-
エンドポイント:
v1/openapi/organization
-
リクエスト方式:
delete
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEのaccess tokenを入力、値の形式:openapi {access_token} |
- Content Type:
application/json
- リクエストbody:
パラメータ名 | 必須 | 型 | デフォルト値 | 説明 |
---|---|---|---|---|
はい | array | なし | 組織ID配列または組織名配列。配列内は全てIDまたは全て組織名でなければなりません。 |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/organization' \
--header 'Authorization: openapi {access_token}' \
--data '['org1','org2']'
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
success | boolean | リクエストが成功したかどうか |
msg | string | レスポンスメッセージ(あれば) |
- レスポンス例:
{
"success": true,
"msg": ""
}
ツリー型組織構造の取得
-
エンドポイント:
v1/openapi/organization/tree
-
リクエスト方式:
get
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEのaccess tokenを入力、値の形式:openapi {access_token} |
- Content Type:
application/json
- リクエストquery:
パラメータ名 | 必須 | 型 | デフォルト値 | 説明 |
---|---|---|---|---|
external | いいえ | boolean | false | 外部組織かどうか |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/organization/tree' \
--header 'Authorization: openapi {access_token}' \
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
data | array | レスポンスデータオブジェクト |
data.nodeId | string | 組織ID |
data.nodeName | string | 組織名 |
data.parentNodeId | string | 親組織ID |
data.code | string | 組織コード |
data.path | string | ルートノードから現在ノードまでのパス(ノードIDを'/'で区切る) |
data.external | boolean | 内部/外部組織識別 |
data.childNodeList | array | 子組織 |
success | boolean | リクエストが成功したかどうか |
msg | string | レスポンスメッセージ(あれば) |
- レスポンス例:
{
"success": true,
"msg": "",
"data": [
{
"isExternal": false,
"sort": 1,
"nodeId": "4034994050380595200",
"nodeName": "内部組織",
"path": "4034994050380595200/4419926899526991872",
"parentNodeId": "-1",
"childNodeList": [
{
"isExternal": false,
"sort": 1,
"nodeId": "4419926899526991872",
"nodeName": "IT",
"path": "4034994050380595200/4419926899526991872",
"parentNodeId": "4034994050380595200",
}
]
}
]
}
ユーザー組織関係でユーザー取得(ページング)
-
エンドポイント:
v1/openapi/organization/getAllOrgUserPageList
-
リクエスト方式:
post
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEのaccess tokenを入力、値の形式:openapi {access_token} |
- Content Type:
application/json
- リクエストbody:
パラメータ名 | 必須 | 型 | デフォルト値 | 説明 |
---|---|---|---|---|
orderField | はい | string | なし | ソート用フィールド。Idは時間情報を含むため、idで作成日時順にソート可能 |
orderType | はい | string | なし | ソートタイプ、asc: 昇順, desc: 降順 |
conditions | いいえ | array | なし | 検索条件。複数指定時はand関係 |
conditions.fieldName | いいえ | string | なし | 検索条件名。例:organizationId |
conditions.fieldValue | いいえ | string | なし | 検索条件値 |
conditions.conditionalType | いいえ | number | 0 | 検索条件比較タイプ 0: 完全一致, 1: 部分一致, 2: より大きい, 3: 以上, 4: 未満, 5: 以下, 6: 含む(in), 7: 含まない(not in), 8: 左部分一致, 9: 右部分一致, 10: 不等, 11: nullまたは空, 12: 空でない, 13: notLike |
pageIndex | はい | number | なし | ページ番号 |
pageSize | はい | number | なし | 1ページあたりの件数 |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/organization/getAllOrgUserPageList' \
--header 'Authorization: openapi {access_token}' \
{
"orderField": "id",
"orderType": "desc",
"conditions": [
{
"fieldName": "organizationName",
"fieldValue": "123456",
"conditionalType": 0
}
],
"pageIndex": 1,
"pageSize": 15
}
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
data | array | ページングデータ |
data.userId | string | ユーザーID |
data.account | string | ユーザー名 |
data.accountId | boolean | アカウントID |
data.realName | string | 本名 |
data.organizationName | string | 組織名 |
data.organizationId | string | 組織ID |
data.organizationParentId | string | 親組織ID |
data.Email | string | メールアドレス |
data.Sort | number | 並び順 |
data.External | boolean | 内部/外部ユーザー識別 false: 内部ユーザー, true: 外部ユーザー |
pageIndex | number | 現在のページ番号 |
pageSize | number | ページサイズ |
totalCount | number | 総件数 |
success | boolean | リクエストが成功したかどうか |
msg | string | レスポンスメッセージ(あれば) |
- レスポンス例:
{
"data": [
{
"account": "user1",
"accountId": "123456",
"userId": "123456",
"realName": "user1",
"organizationName": "org1",
"organizationId": "123456",
"external": false,
"organizationParentId": "12345",
"sort": 1,
"email": ""
}
],
"pageSize": 15,
"pageIndex": 1,
"totalCount": 1,
"success": true,
"msg": null
}
ユーザー組織関係の追加
-
エンドポイント:
v1/openapi/organization/relationship
-
リクエスト方式:
post
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEのaccess tokenを入力、値の形式:openapi {access_token} |
- Content Type:
application/json
- リクエストbody:
パラメータ名 | 必須 | 型 | デフォルト値 | 説明 |
---|---|---|---|---|
organizationId | はい | string | なし | 組織ID |
userId | はい | string | なし | ユーザーID |
sort | いいえ | number | 0 | 並び順 |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/organization/relationship' \
--header 'Authorization: openapi {access_token}' \
--data '{
"organizationId": "123456",
"userId": "12345"
} '
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
success | boolean | リクエストが成功したかどうか |
msg | string | レスポンスメッセージ(あれば) |
- レスポンス例:
{
"success": true,
"msg": ""
}
ユーザー組織関係の削除
-
エンドポイント:
v1/openapi/organization/relationship
-
リクエスト方式:
delete
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEのaccess tokenを入力、値の形式:openapi {access_token} |
- Content Type:
application/json
- リクエストbody:
パラメータ名 | 必須 | 型 | デフォルト値 | 説明 |
---|---|---|---|---|
organizationIds | はい | array | なし | 組織ID |
userIds | はい | array | なし | ユーザーID |
- リクエスト例:
curl --location 'http://localhost/v1/openapi/organization/relationship' \
--header 'Authorization: openapi {access_token}' \
--data '{
"organizationIds": ["123456"],
"userIds": ["12345"]
} '
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
success | boolean | リクエストが成功したかどうか |
msg | string | レスポンスメッセージ(あれば) |
- レスポンス例:
{
"success": true,
"msg": ""
}
組織下のユーザー検索(ページング)
-
エンドポイント:
v1/openapi/organization/getUserPages
-
リクエスト方式:
post
-
リクエストヘッダー:
パラメータ名 | 必須 | 型 | 説明 |
---|---|---|---|
Authorization | はい | string | SERVICEMEのaccess tokenを入力、値の形式:openapi {access_token} |
- Content Type:
application/json
- リクエストbody:
パラメータ名 | 必須 | 型 | デフォルト値 | 説明 |
---|---|---|---|---|
orderField | はい | string | なし | ソート用フィールド。Idは時間情報を含むため、idで作成日時順にソート可能 |
orderType | はい | string | なし | ソートタイプ、asc: 昇順, desc: 降順 |
conditions | いいえ | array | なし | 検索条件。複数指定時はand関係 |
conditions.fieldName | いいえ | string | なし | 検索条件名。必ずOrganizationIdまたはOrganizationCodeをフィルタ条件として指定する必要があります |
conditions.fieldValue | いいえ | string | なし | 検索条件値 |
conditions.conditionalType | いいえ | number | 0 | 検索条件比較タイプ 0: 完全一致, 1: 部分一致, 2: より大きい, 3: 以上, 4: 未満, 5: 以下, 6: 含む(in), 7: 含まない(not in), 8: 左部分一致, 9: 右部分一致, 10: 不等, 11: nullまたは空, 12: 空でない, 13: notLike |
pageIndex | はい | number | なし | ページ番号 |
pageSize | はい | number | なし | 1ページあたりの件数 |
- リクエスト例:
```shell
curl --location 'http://localhost/v1/openapi/user/pageList' \
--header 'Authorization: openapi {access_token}' \
{
"orderField": "id",
"orderType": "desc",
"conditions": [
{
"fieldName": "OrganizationCode",
"fieldValue": "org1",
"conditionalType": 0
}
],
"pageIndex": 1,
"pageSize": 15
}
- レスポンスbody:
フィールド名 | 型 | 説明 |
---|---|---|
data | array | ページネーションデータ |
data.id | string | ユーザーID |
data.account | string | ユーザー名 |
data.name | string | 本名 |
data.ownerMainDepartment | string | ユーザーのメインポジション |
data.sort | number | 並び順番号 |
data.status | boolean | ユーザー有効状態 |
data.create | datetime | ユーザーの作成日時 |
pageIndex | number | 現在のページ番号 |
pageSize | number | ページサイズ |
totalCount | number | 総件数 |
success | boolean | リクエストが成功したかどうか |
msg | string | リクエストのメッセージ(ある場合) |
- レスポンス例:
{
"data": [
{
"accountId": "123456",
"userId": "123456",
"userName": "user1",
"realName": "张三"
}
],
"pageSize": 15,
"pageIndex": 1,
"totalCount": 1,
"success": true,
"msg": null
}