Skip to main content

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:
パラメータ名サブパラメータパラメータ説明
dataobjectレスポンスデータ
access_tokenstringSERVICEMEシステムのaccess token
expires_innumber有効期限(分単位)
successboolean成功かどうか
msgstringsuccessが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はいstring6桁のランダム値(数字または英字の組み合わせ)
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
パラメータ名サブパラメータパラメータ説明
dataobjectレスポンスデータ
access_tokenstringSERVICEMEシステムのaccess token
expires_innumber有効期限(分単位)
successboolean成功かどうか
msgstringsuccessがfalseの場合、ここにエラーメッセージが入る
  • インターフェースレスポンス例:
{
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc0V4dGVybmFsIjpmYWxzZSwidXNlcklkIjoiNDAzMDUwMjEwMTEyODgzOTE2OCIsImFjY291bnQiOiJlY210cmlhbEBzZXJ2ub25ta......",
"expires_in": 1440
},
"success": true,
"msg": ""
}

チャット

Agentにメッセージを送信

  • インターフェースURL:/openapi/chat/expert

  • リクエスト方式:post

  • リクエストheader:

パラメータ名必須パラメータ説明
AuthorizationはいstringSERVICEME access tokenを入力、値のフォーマット:openapi {access_token}
  • リクエストbody:
パラメータ名必須パラメータ説明
expertCodeはいstringSERVICEMEシステム内のAgent code(SERVICEMEシステム参照)
contentはいstring質問内容
sessionIdいいえstringセッションID、チャットコンテキストを表す。nullを渡すと新規セッション開始。新規セッションIDはレスポンスで返却。2回目以降は前回のsession idを渡す必要あり
streamいいえbooleanストリーミングを有効にするか(true:有効、false:無効)、デフォルトは無効
includeThoughtいいえbooleanレスポンス内容に思考を含めるか(true:含める、false:含めない)

**Q&A codeの取得方法は?**下図参照:

img

  • リクエスト例:
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:
パラメータサブパラメータサブサブパラメータサブサブサブパラメータパラメータ説明
dataobjectレスポンスデータ
chatRecordIdstringチャット記録ID
sessionIdstringセッションID
contentstringテキスト型の回答情報
mediasobjectメディア型の回答情報配列(画像やファイルなど)
typestringimage:画像;file:ファイル
namestring名前
suggestionQuestionsarray string推奨質問
thoughtsarray思考
thoughtstring思考内容
pluginNamestringプラグイン名
elapsedTimeobjectプラグイン処理時間情報
modelfloatモデル処理時間
actionfloatアクション処理時間
totalfloat合計処理時間
statestring状態(success:成功)
finish_reasonstring回答終了かどうか。stopの場合は終了、途中はnull
successboolean成功かどうか
msgstringsuccessが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はいstringSERVICEME access tokenを入力、値のフォーマット:openapi {access_token}
  • リクエストURLパラメータ:
パラメータ名必須パラメータ説明
chatRecordIdはいstringQ&AインターフェースのレスポンスのchatRecordId値
  • リクエスト例:
curl --location 'http://localhost/openapi/chat/record/4299234148041625600/reference' \
--header 'Authorization: openapi {access_token}'
  • レスポンスbody:
パラメータ名サブパラメータパラメータ説明
dataobject arrayレスポンスデータ
titlestringタイトル
contentstringこの会話記録で参照されたフラグメント内容
scorefloat関連度(0~1、1に近いほど関連性が高い)
urlstringリンク(現時点ではファイルタイプの参照のみリンクあり)
typestringタイプ列挙:document(ドキュメント)、image(画像)、QnA、other
successboolean成功かどうか
msgstringsuccessが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はいstringSERVICEMEアクセストークンを入力、値のフォーマット: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"'
  • レスポンスボディ:
パラメータ名サブパラメータ説明
dataobjectレスポンスデータ
fileIdstringファイルID
fileNamestringファイル名
uploaderstringアップロード者
successboolean成功かどうか
msgstringsuccessがfalseの場合、エラーメッセージが入る
  • レスポンス例:
{
"data": {
"fileId": "4345229404125790208",
"fileName": "test.doc",
"uploader": "test@serviceme.com"
},
"success": true,
"msg": ""
}

複数ファイルアップロード

ファイル提出

  • エンドポイント:v1/openapi/workspace/file/upload/batchSubmit

  • リクエスト方式:post

  • リクエストヘッダー:

パラメータ名必須説明
AuthorizationはいstringSERVICEMEアクセストークンを入力、値のフォーマット: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"'
  • レスポンスボディ:
パラメータ名サブパラメータ説明
dataobjectレスポンスデータ
stateIdstringアップロード状態ID、このIDでアップロード結果をポーリング可能
successboolean成功かどうか
msgstringsuccessがfalseの場合、エラーメッセージが入る
  • レスポンス例:
{
"data": {
"stateId": "4345229404125790208"
},
"success": true,
"msg": ""
}

アップロード結果の確認

  • エンドポイント:v1/openapi/workspace/file/upload/batchSubmit/{stateId}

  • リクエスト方式:get

  • リクエストヘッダー:

パラメータ名必須説明
AuthorizationはいstringSERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token}
  • リクエストURLパラメータ:
パラメータ名必須説明
stateIdはいstring複数ファイル提出アップロードAPIから返されたstateId
  • リクエスト例:
curl --location 'http://localhost/v1/openapi/workspace/file/upload/batchSubmit/4345227891722682368' \
--header 'Authorization: openapi {access_token}'
  • レスポンスボディ:
パラメータ名サブパラメータサブサブパラメータ説明
dataobject arrayレスポンスデータ
fileIdstringファイルID
fileNamestringファイル名
statestring状態列挙:underway(処理中)、success(成功)、fail(失敗)
uploaderstringアップロード者
errorMsgstring状態がfailの場合、失敗理由
finishTimestringファイル処理完了時間
successboolean成功かどうか
msgstringsuccessが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はいstringSERVICEMEアクセストークンを入力、値のフォーマット: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": "テストメタデータ"
}
]
}'
  • レスポンスボディ:
パラメータ名説明
successboolean成功かどうか
msgstringsuccessがfalseの場合、エラーメッセージが入る
  • レスポンス例:
{
"success": true,
"msg": ""
}

ファイル検索

  • エンドポイント:v1/openapi/workspace/file

  • リクエスト方式:post

  • リクエストヘッダー:

パラメータ名必須説明
AuthorizationはいstringSERVICEMEアクセストークンを入力、値のフォーマット: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
}'
  • レスポンスボディ:

    パラメータ名サブパラメータサブサブパラメータ説明
    dataobject arrayレスポンスデータ
    idstringファイルID
    namestringファイル名
    sizenumberファイルサイズ(バイト単位)
    descriptionstring説明
    fullPathstringファイルパス
    tagsobject arrayファイルタグ情報
    idstringタグID
    valuestringタグ内容
    chunkingStatestringファイルインデックス状態:waiting(処理待ち)、success(成功)、fail(失敗)、underway(進行中)
    previewStatestringファイルプレビュー状態:waiting(処理待ち)、success(成功)、fail(失敗)、underway(進行中)
    fileCanPreviewbooleanファイルプレビュー可否、true:可、false:不可
    previewUrlstringファイルプレビューURL
    createdByRealNamestringファイル作成者名
    createdByAccountstringファイル作成者アカウント
    createddatetimeファイル作成日時
    modifiedByRealNamestringファイル編集者名
    modifiedByAccountstringファイル編集者アカウント
    modifieddatetimeファイル編集日時
    successboolean成功かどうか
    msgstringsuccessが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はいstringSERVICEMEアクセストークンを入力、値のフォーマット: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
}'
  • レスポンスボディ:

    パラメータ名サブパラメータサブサブパラメータ説明
    dataobject arrayレスポンスデータ
    idstringセクションID
    contentstringセクション内容
    successboolean成功かどうか
    msgstringsuccessがfalseの場合、エラーメッセージが入る
  • レスポンス例:


json
{
"data": [
{
"id": "4339013367831199744",
"content": "test"
}
],
"pageSize": 10,
"pageIndex": 1,
"totalCount": 1,
"success": true,
"msg": ""
}

RAG

  • エンドポイント:/v1/openapi/rag

  • リクエスト方式:post

  • リクエストヘッダー:

パラメータ名必須説明
AuthorizationはいstringSERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token}
  • リクエストボディ:
パラメータ名必須デフォルト値説明
querystringいいえなし検索する質問または内容。Keywordsパラメータと同時にnullにはできません。
keywordsstringいいえなしキーワード。複数のキーワードは | で区切ります。Queryパラメータと同時にnullにはできません。nullの場合は必要に応じてキーワードを抽出し、空でない場合は入力されたキーワードを直接使用します。
workspacesarrayいいえなし今回のRAGで検索するファイルスペース名またはID。この値を指定した場合、これらのスペースのみから検索します。
ragObjectRagObjectはい0RAGオブジェクトタイプ。列挙値(RagObject列挙を参照)。
topknumberはいなし結果の返却数。
minSimilaritydoubleいいえ0.8最低類似度。範囲は [0, 1]
metadataFilterarrayいいえなし使用するメタデータフィルタータイプ。現在はdefaultフィルターのみサポート。
ragModeSearchModeはい0RAGモード。列挙値(SearchMode列挙を参照)。
weightsobjectいいえなし各インデックスのRRF重み。RagModeHybridの場合のみ有効。nullの場合はデフォルト重みを使用。
rerankerstringいいえなし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"
} '
  • レスポンスボディ:
フィールド名説明
dataobjectレスポンスデータオブジェクト。検索結果や検索IDなどを含みます。
data.resultsarray検索結果リスト。各要素はフラグメント情報を含むオブジェクトです。
data.results[].chunkIdstringフラグメントID
data.results[].fileIdstringフラグメントが属するファイルID
data.results[].fileNamestringフラグメントが属するファイル名
data.results[].contentstringフラグメント内容
data.results[].metadatajsonフラグメントのメタデータ
data.results[].urlstringフラグメントのURLアドレス(存在する場合)
data.results[].searchScoredouble類似度スコア
data.results[].rrfScoredoubleRRFスコア
data.results[].rerankScoredoubleリランクスコア
data.results[].workspaceIdstringファイルが属するファイルスペースID
data.results[].workspaceNamestringファイルが属するファイルスペース名
data.searchIdstring今回の検索操作の一意識別子
successbooleanリクエストが成功したかどうか
msgstringレスポンスメッセージ(存在する場合)

  • レスポンス例:
{
"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列挙

列挙値数値説明
Both0Q&Aとドキュメント内容を同時に検索。
Qna1Q&A内容のみを検索。
Doc2ドキュメント内容のみを検索。

SearchMode列挙

列挙値数値説明
Hybrid1ハイブリッド検索モード。埋め込みベクトルと全文検索を組み合わせます。
Embedding2埋め込みベクトルのみの検索モード。
FullText3全文検索のみの検索モード。

  • 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はいstringSERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token}
  • Content Type:application/json
  • リクエストボディ:
パラメータ名必須デフォルト値説明
userNameはいstringなしアカウント/ユーザー名
passwordいいえstring''パスワード
activeいいえbooleantrueアクティブ状態
userInfoいいえobjectなしユーザー情報
userInfo.realNameいいえstringuserNameの値本名
userInfo.spellいいえstringなし本名のピンイン
userInfo.serialNumberいいえstringなし社員番号
userInfo.nickNameいいえstringなしニックネーム
userInfo.genderいいえnumber0性別 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いいえnumber0ソート番号
userInfo.enableいいえbooleanfalse有効/無効
userInfo.descriptionいいえstringなし説明
userInfo.externalいいえbooleanfalse内部/外部ユーザー識別 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
},
} '
  • レスポンスボディ:
フィールド名説明
dataobjectレスポンスデータオブジェクト
data.accountIdstringアカウントID
data.userIdstringユーザーID
data.userNamestringユーザー名
data.realNamestringユーザー本名
successbooleanリクエストが成功したかどうか
msgstringレスポンスメッセージ(存在する場合)
  • レスポンス例:
{
"success": true,
"msg": "",
"data": [
{
"accountId": "123456",
"userId": "123456",
"userName": "user1",
"realName": "张三"
}
]
}

ユーザー編集

  • エンドポイント:v1/openapi/user

  • リクエスト方式:put

  • リクエストヘッダー:

パラメータ名必須説明
AuthorizationはいstringSERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token}
  • Content Type:application/json
  • リクエストボディ:
パラメータ名必須デフォルト値説明
userNameいいえstringなしアカウント/ユーザー名。ユーザー検索用のみで変更されません。idと同時に空にはできません
idいいえstring''id。userNameと同時に空にはできません
activeいいえbooleantrueアクティブ状態
realNameいいえstringuserNameの値本名
spellいいえstringなし本名のピンイン
serialNumberいいえstringなし社員番号
nickNameいいえstringなしニックネーム
genderいいえnumber0性別 0:FEMALE, 1:MALE
birthdayいいえstringなし誕生日
mobilePhoneいいえstringなし携帯番号
emailいいえstringなしメールアドレス
weChatいいえstringなしWeChat ID
avatarいいえstringなしアバター
regionいいえstringなし地域
joinTimeいいえstringなし入社日
sortいいえnumber0ソート番号
enableいいえbooleanfalse有効/無効
descriptionいいえstringなし説明
externalいいえbooleanfalse内部/外部ユーザー識別 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:
フィールド名説明
successbooleanリクエストが成功したかどうか
msgstringレスポンスメッセージ(あれば)
  • レスポンス例:
{
"success": true,
"msg": ""
}

ユーザー削除

  • エンドポイント:v1/openapi/user

  • リクエスト方式:delete

  • リクエストheader:

パラメータ名必須説明
AuthorizationはいstringSERVICEMEアクセストークンを入力、値の形式: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:
フィールド名説明
successbooleanリクエストが成功したかどうか
msgstringレスポンスメッセージ(あれば)
  • レスポンス例:
{
"success": true,
"msg": ""
}

ユーザー有効化

  • エンドポイント:v1/openapi/user/{userCode}/enable

  • リクエスト方式:put

  • リクエストheader:

パラメータ名必須説明
AuthorizationはいstringSERVICEMEアクセストークンを入力、値の形式: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:
フィールド名説明
successbooleanリクエストが成功したかどうか
msgstringレスポンスメッセージ(あれば)
  • レスポンス例:
{
"success": true,
"msg": ""
}

ユーザー無効化

  • エンドポイント:v1/openapi/user/{userCode}/disable

  • リクエスト方式:put

  • リクエストheader:

パラメータ名必須説明
AuthorizationはいstringSERVICEMEアクセストークンを入力、値の形式: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:
フィールド名説明
successbooleanリクエストが成功したかどうか
msgstringレスポンスメッセージ(あれば)
  • レスポンス例:
{
"success": true,
"msg": ""
}

ユーザー有効化/無効化(バッチ対応)

  • エンドポイント:v1/openapi/user/enable

  • リクエスト方式:put

  • リクエストheader:

パラメータ名必須説明
AuthorizationはいstringSERVICEMEアクセストークンを入力、値の形式:openapi {access_token}
  • Content Type:application/json
  • リクエストbody:
パラメータ名必須デフォルト値説明
codesはいarrayなしユーザーID配列またはユーザー名配列。配列内は全てIDまたは全てユーザー名でなければなりません。
operationはいbooleantruetrue: 有効化, false: 無効化
  • リクエスト例:
curl --location 'http://localhost/v1/openapi/user/enable' \
--header 'Authorization: openapi {access_token}' \
--data '{
"codes": ['user1', 'user2'],
"operation": true
}'
  • レスポンスbody:
フィールド名説明
successbooleanリクエストが成功したかどうか
msgstringレスポンスメッセージ(あれば)
  • レスポンス例:
{
"success": true,
"msg": ""
}

ユーザー一覧取得(ページング)

  • エンドポイント:v1/openapi/user/pageList

  • リクエスト方式:post

  • リクエストheader:

パラメータ名必須説明
AuthorizationはいstringSERVICEMEアクセストークンを入力、値の形式: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いいえnumber0検索条件の比較タイプ 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:
フィールド名説明
dataarrayページングデータ
data.idstringアカウントID
data.userIdstringユーザーID
data.userNamestringユーザー名
data.activeboolean有効化されているかどうか
data.avatarstringアバター
data.birthdaystring誕生日
data.createdstringユーザーデータ作成日
data.modifiedstringユーザーデータ最終更新日
data.descriptionstring説明
data.gendernumber性別 0:FEMALE, 1:MALE
data.mobilePhonestring携帯番号
data.nickNamestringニックネーム
data.emailstringメールアドレス
data.joinTimestring入社日
data.regionstring地域
data.weChatstringWeChat ID
data.spellstring本名のピンイン
data.serialNumberstring社員番号
data.accountIdstringユーザーが所属するアカウントID
data.sortnumberソート番号
data.officePhoneNumberstringオフィス電話番号
data.externalboolean内部/外部ユーザー識別 false: 内部ユーザー, true: 外部ユーザー
data.isAadbooleanアカウントがAAD(microsoft Entra ID)由来かどうか
data.enableboolean有効/無効
pageIndexnumber現在のページ番号
pageSizenumberページサイズ
totalCountnumber総件数
successbooleanリクエストが成功したかどうか
msgstringレスポンスメッセージ(あれば)
  • レスポンス例:
{
"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はいstringSERVICEMEアクセストークンを入力、値の形式: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:
フィールド名説明
dataobjectレスポンスデータオブジェクト
data.idstringアカウントID
data.userIdstringユーザーID
data.userNamestringユーザー名
data.Activeboolean有効化されているかどうか
data.Avatarstringアバター
data.Birthdaystring誕生日
data.Createdstringユーザーデータ作成日
data.Modifiedstringユーザーデータ最終更新日
data.Descriptionstring説明
data.Gendernumber性別 0:FEMALE, 1:MALE
data.MobilePhonestring携帯番号
data.NickNamestringニックネーム
data.Emailstringメールアドレス
data.JoinTimestring入社日
data.Regionstring地域
data.WeChatstringWeChat ID
data.Spellstring本名のピンイン
data.SerialNumberstring社員番号
data.AccountIdstringユーザーが所属するアカウントID
data.Sortnumberソート番号
data.OfficePhoneNumberstringオフィス電話番号
data.Externalboolean内部/外部ユーザー識別 false: 内部ユーザー, true: 外部ユーザー
data.IsAadbooleanアカウントがAAD(microsoft Entra ID)由来かどうか
data.Enableboolean有効/無効
successbooleanリクエストが成功したかどうか
msgstringレスポンスメッセージ(あれば)
  • レスポンス例:

json
{
"success": true,
"msg": "",
"data": [
{
"accountId": "123456",
"userId": "123456",
"userName": "user1",
"realName": "张三"
}
]
}

現在ログインしているユーザーの情報を取得

  • エンドポイント:v1/openapi/user/me

  • リクエスト方式:get

  • リクエストヘッダー:

パラメータ名必須パラメータ説明
AuthorizationはいstringSERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token}
  • Content Type:application/json

  • リクエスト例:

curl --location 'http://localhost/v1/openapi/user/me' \
--header 'Authorization: openapi {access_token}' \
  • レスポンスbody:
フィールド名説明
dataobjectレスポンスデータオブジェクト
data.idstringアカウントID
data.userIdstringユーザーID
data.userNamestringユーザー名
data.Activeboolean有効かどうか
data.Avatarstringアバター
data.Birthdaystring誕生日
data.Createdstringユーザーデータ作成日
data.Modifiedstringユーザーデータ最終更新日
data.Descriptionstring説明
data.Gendernumber性別 0:FEMALE, 1:MALE
data.MobilePhonestring携帯番号
data.NickNamestringニックネーム
data.Emailstringメールアドレス
data.JoinTimestring入社日
data.Regionstring地域
data.WeChatstringWeChat ID
data.Spellstring本名のピンイン
data.SerialNumberstring社員番号
data.AccountIdstringユーザーが所属するアカウントID
data.Sortnumber並び順番号
data.OfficePhoneNumberstringオフィス電話番号
data.Externalboolean内部/外部ユーザー識別 false: 内部ユーザー, true: 外部ユーザー
data.IsAadbooleanアカウントがAAD(microsoft Entra ID)由来かどうか
data.Enableboolean有効/無効
successbooleanリクエスト成功かどうか
msgstringレスポンスメッセージ(あれば)
  • レスポンス例:
{
"success": true,
"msg": "",
"data": [
{
"accountId": "123456",
"userId": "123456",
"userName": "user1",
"realName": "张三"
}
]
}

現在ログインしているユーザーのロールを取得

  • エンドポイント:v1/openapi/user/roles

  • リクエスト方式:get

  • リクエストヘッダー:

パラメータ名必須パラメータ説明
AuthorizationはいstringSERVICEMEアクセストークンを入力、値のフォーマット:openapi {access_token}
  • Content Type:application/json

  • リクエスト例:

curl --location 'http://localhost/v1/openapi/user/me/roles' \
--header 'Authorization: openapi {access_token}' \
  • レスポンスbody:
フィールド名説明
dataarrayレスポンスデータオブジェクト
data.roleIdstringロールID
data.roleNamestringロール名
data.dataPermissionListarrayこのロールでのユーザーのデータ権限
data.dataPermissionList.BusinessTreeTypenumberアプリケーションタイプ
data.dataPermissionList.DataPermissionObjectIdstringデータ権限オブジェクトID(例:ナレッジベース権限の場合はそのID)
successbooleanリクエスト成功かどうか
msgstringレスポンスメッセージ(あれば)
  • レスポンス例:
{
"success": true,
"msg": "",
"data": [
{
"roleId": "123456",
"roleName": "知识库访客",
"dataPermissionList": [
{
"BusinessTreeType": 1,
"DataPermissionObjectId": "123456"
}
]
}
]
}

ユーザーに関連付けられているロールを取得

  • エンドポイント:v1/openapi/user/{userCode}/roles

  • リクエスト方式:get

  • リクエストヘッダー:

パラメータ名必須パラメータ説明
AuthorizationはいstringSERVICEMEアクセストークンを入力、値のフォーマット: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:
フィールド名説明
dataarrayレスポンスデータオブジェクト
data.roleIdstringロールID
data.roleNamestringロール名
data.dataPermissionListarrayこのロールでのユーザーのデータ権限
data.dataPermissionList.BusinessTreeTypenumberアプリケーションタイプ
data.dataPermissionList.DataPermissionObjectIdstringデータ権限オブジェクトID(例:ナレッジベース権限の場合はそのID)
successbooleanリクエスト成功かどうか
msgstringレスポンスメッセージ(あれば)
  • レスポンス例:
{
"success": true,
"msg": "",
"data": [
{
"roleId": "123456",
"roleName": "知识库访客",
"dataPermissionList": [
{
"BusinessTreeType": 1,
"DataPermissionObjectId": "123456"
}
]
}
]
}

ユーザーロール関係の変更

  • エンドポイント:v1/openapi/user/{userCode}/roles

  • リクエスト方式:put

  • リクエストヘッダー:

パラメータ名必須パラメータ説明
AuthorizationはいstringSERVICEMEアクセストークンを入力、値のフォーマット: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:
フィールド名説明
dataarrayレスポンスデータオブジェクト
data.roleIdstringロールID
data.roleNamestringロール名
data.dataPermissionListarrayこのロールでのユーザーのデータ権限
data.dataPermissionList.BusinessTreeTypenumberアプリケーションタイプ
data.dataPermissionList.DataPermissionObjectIdstringデータ権限オブジェクトID(例:ナレッジベース権限の場合はそのID)
successbooleanリクエスト成功かどうか
msgstringレスポンスメッセージ(あれば)
  • レスポンス例:
{
"success": true,
"msg": "",
"data": [
{
"roleId": "123456",
"roleName": "知识库访客",
"dataPermissionList": [
{
"BusinessTreeType": 1,
"DataPermissionObjectId": "123456"
}
]
}
]
}

組織

組織の追加

  • エンドポイント:v1/openapi/organization

  • リクエスト方式:post

  • リクエストヘッダー:

パラメータ名必須パラメータ説明
AuthorizationはいstringSERVICEMEアクセストークンを入力、値のフォーマット: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いいえbooleanfalse子会社かどうか
sortいいえnumber0並び順番号
isEnableいいえbooleanfalse有効/無効
externalいいえbooleanfalse内部/外部組織識別 false: 内部, true: 外部
  • リクエスト例:
curl --location 'http://localhost/v1/openapi/organization' \
--header 'Authorization: openapi {access_token}' \
--data '{
"code": "123456",
"parentId": "12345",
"name": "组织名称",
"location": "地址"
} '
  • レスポンスbody:
フィールド名説明
dataobjectレスポンスデータオブジェクト
data.idstring組織ID
data.codestring組織コード
data.parentIdstring親組織ID
data.parentNamestring有効かどうか
data.namestring名称
data.locationstring住所
data.remarksstring備考
data.contactstring連絡先
data.Infostring機関情報
data.Extensionnumber拡張情報
data.IsSubsidiaryboolean子会社かどうか
data.sortnumber並び順番号
data.isEnableboolean有効/無効
data.externalboolean内部/外部組織識別
successbooleanリクエスト成功かどうか
msgstringレスポンスメッセージ(あれば)
  • レスポンス例:
{
"success": true,
"msg": "",
"data": [
{
"id": "123456",
"code": "123456",
"parentId": "12345",
"name": "组织名称",
"location": "地址"
}
]
}

組織の更新

  • エンドポイント:v1/openapi/organization

  • リクエスト方式:put

  • リクエストヘッダー:

パラメータ名必須パラメータ説明
AuthorizationはいstringSERVICEMEアクセストークンを入力、値のフォーマット: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いいえbooleanfalse子会社かどうか
sortいいえnumber0並び順番号
isEnableいいえbooleanfalse有効/無効
externalいいえbooleanfalse内部/外部組織識別 false: 内部, true: 外部
  • リクエスト例:

shell
curl --location 'http://localhost/v1/openapi/organization' \
--header 'Authorization: openapi {access_token}' \
--data '{
"code": "123456",
"parentId": "12345",
"name": "組織名",
"location": "住所"
} '
  • レスポンスbody:
フィールド名説明
dataobjectレスポンスデータオブジェクト
data.idstring組織ID
data.codestring組織コード
data.parentIdstring親組織ID
data.parentNamestring有効かどうか
data.namestring名称
data.locationstring住所
data.remarksstring備考
data.contactstring連絡先
data.Infostring機関情報
data.Extensionnumber拡張情報
data.IsSubsidiaryboolean子会社かどうか
data.sortnumber並び順
data.isEnableboolean有効/無効
data.externalboolean内部/外部組織識別
successbooleanリクエストが成功したかどうか
msgstringレスポンスメッセージ(あれば)
  • レスポンス例:
{
"success": true,
"msg": "",
"data": [
{
"id": "123456",
"code": "123456",
"parentId": "12345",
"name": "組織名",
"location": "住所"
}
]
}

組織の削除

  • エンドポイント:v1/openapi/organization

  • リクエスト方式:delete

  • リクエストヘッダー:

パラメータ名必須説明
AuthorizationはいstringSERVICEMEの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:
フィールド名説明
successbooleanリクエストが成功したかどうか
msgstringレスポンスメッセージ(あれば)
  • レスポンス例:
{
"success": true,
"msg": ""
}

ツリー型組織構造の取得

  • エンドポイント:v1/openapi/organization/tree

  • リクエスト方式:get

  • リクエストヘッダー:

パラメータ名必須説明
AuthorizationはいstringSERVICEMEのaccess tokenを入力、値の形式:openapi {access_token}
  • Content Type:application/json
  • リクエストquery:
パラメータ名必須デフォルト値説明
externalいいえbooleanfalse外部組織かどうか
  • リクエスト例:
curl --location 'http://localhost/v1/openapi/organization/tree' \
--header 'Authorization: openapi {access_token}' \
  • レスポンスbody:
フィールド名説明
dataarrayレスポンスデータオブジェクト
data.nodeIdstring組織ID
data.nodeNamestring組織名
data.parentNodeIdstring親組織ID
data.codestring組織コード
data.pathstringルートノードから現在ノードまでのパス(ノードIDを'/'で区切る)
data.externalboolean内部/外部組織識別
data.childNodeListarray子組織
successbooleanリクエストが成功したかどうか
msgstringレスポンスメッセージ(あれば)
  • レスポンス例:
{
"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はいstringSERVICEMEの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いいえnumber0検索条件比較タイプ 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:
フィールド名説明
dataarrayページングデータ
data.userIdstringユーザーID
data.accountstringユーザー名
data.accountIdbooleanアカウントID
data.realNamestring本名
data.organizationNamestring組織名
data.organizationIdstring組織ID
data.organizationParentIdstring親組織ID
data.Emailstringメールアドレス
data.Sortnumber並び順
data.Externalboolean内部/外部ユーザー識別 false: 内部ユーザー, true: 外部ユーザー
pageIndexnumber現在のページ番号
pageSizenumberページサイズ
totalCountnumber総件数
successbooleanリクエストが成功したかどうか
msgstringレスポンスメッセージ(あれば)
  • レスポンス例:
{
"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はいstringSERVICEMEのaccess tokenを入力、値の形式:openapi {access_token}
  • Content Type:application/json
  • リクエストbody:
パラメータ名必須デフォルト値説明
organizationIdはいstringなし組織ID
userIdはいstringなしユーザーID
sortいいえnumber0並び順
  • リクエスト例:
curl --location 'http://localhost/v1/openapi/organization/relationship' \
--header 'Authorization: openapi {access_token}' \
--data '{
"organizationId": "123456",
"userId": "12345"
} '
  • レスポンスbody:
フィールド名説明
successbooleanリクエストが成功したかどうか
msgstringレスポンスメッセージ(あれば)
  • レスポンス例:
{
"success": true,
"msg": ""
}

ユーザー組織関係の削除

  • エンドポイント:v1/openapi/organization/relationship

  • リクエスト方式:delete

  • リクエストヘッダー:

パラメータ名必須説明
AuthorizationはいstringSERVICEMEの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:
フィールド名説明
successbooleanリクエストが成功したかどうか
msgstringレスポンスメッセージ(あれば)
  • レスポンス例:
{
"success": true,
"msg": ""
}

組織下のユーザー検索(ページング)

  • エンドポイント:v1/openapi/organization/getUserPages

  • リクエスト方式:post

  • リクエストヘッダー:

パラメータ名必須説明
AuthorizationはいstringSERVICEMEの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いいえnumber0検索条件比較タイプ 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:
フィールド名説明
dataarrayページネーションデータ
data.idstringユーザーID
data.accountstringユーザー名
data.namestring本名
data.ownerMainDepartmentstringユーザーのメインポジション
data.sortnumber並び順番号
data.statusbooleanユーザー有効状態
data.createdatetimeユーザーの作成日時
pageIndexnumber現在のページ番号
pageSizenumberページサイズ
totalCountnumber総件数
successbooleanリクエストが成功したかどうか
msgstringリクエストのメッセージ(ある場合)
  • レスポンス例:
{
"data": [
{
"accountId": "123456",
"userId": "123456",
"userName": "user1",
"realName": "张三"
}
],
"pageSize": 15,
"pageIndex": 1,
"totalCount": 1,
"success": true,
"msg": null
}