日本語 | English

ものしりAI API (1.0.0)

Download OpenAPI specification:

ものしりAIの外部向けAPIです。社内文書をアップロードし、AIによる検索・回答機能をプログラムから利用できます。

認証フロー

ステップ1: トークン取得(パスワード認証)

POST /v1/auth/token
Content-Type: application/json

{
  "grant_type": "password",
  "username": "admin@example.com",
  "password": "yourpassword",
  "team_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

レスポンスの access_token を以降のリクエストで使用してください。

ステップ2: 認証済みリクエスト

GET /v1/teams/{teamId}/folders
Authorization: Bearer <access_token>
X-Team-Id: <team_id>

ステップ3: トークンリフレッシュ

access_token の有効期限(expires_in 秒)が切れた場合、refresh_token を使って更新します。

POST /v1/auth/token
Content-Type: application/json

{
  "grant_type": "refresh_token",
  "refresh_token": "<refresh_token>"
}

ドキュメントアップロードフロー(3ステップ)

ファイルアップロードはS3プリサインドPOSTを使用します。

ステップ1: アップロードURL取得

POST /v1/teams/{teamId}/folders/{folderId}/documents/upload-url
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "filename": "manual.pdf",
  "mime_type": "application/pdf",
  "size_bytes": 1048576,
  "sha256_hash": "e3b0c44298fc1c149afb...",
  "skip_if_duplicate": true
}

レスポンスに upload_url(S3エンドポイント)と upload_fields(フォームフィールド)、document_id が含まれます。 duplicate: true の場合はS3アップロード不要です。

ステップ2: S3へ直接アップロード

POST <upload_url>
Content-Type: multipart/form-data

# upload_fields の各フィールドをフォームに含め、最後に file フィールドを追加
key=<s3_key>&Content-Type=application/pdf&...&file=<binary>

ステップ3: アップロード完了通知

POST /v1/teams/{teamId}/folders/{folderId}/documents/{docId}/confirm
Authorization: Bearer <access_token>

confirmが成功するとドキュメントのベクトル化パイプラインが起動します。 ステータスが processingready に変わるまで、GETエンドポイントでポーリングしてください。


ロールと権限

ロール トークン取得 フォルダ一覧 アップロード ドキュメント閲覧 ドキュメント削除
admin
manager
member ✗ (403) ✗ (403) ✗ (403)

エラーフォーマット

全エンドポイントのエラーレスポンスは以下の形式です。

{
  "statusCode": 400,
  "message": "Bad Request",
  "timestamp": "2024-01-01T00:00:00.000Z"
}

認証エラー(401)と権限エラー(403)の message フィールドには、OAuth2.0互換の error / error_description フィールドが含まれることがあります。


レート制限

  • POST /v1/auth/token: 60秒あたり10リクエスト(10 req/60s)
  • 認証済み一般エンドポイント: 1分あたり60リクエスト(60 req/min)
  • 超過時は 429 Too Many Requests が返されます。

認証

アクセストークンの取得・更新

アクセストークン発行・更新

OAuth2.0互換のトークン発行エンドポイント。

パスワード認証(grant_type: password)

メール/パスワードでトークンを発行します。

制限事項:

  • admin または manager ロールのみ利用可能(member は 403)
  • MFAが有効なアカウントは現在非対応(400 mfa_required
  • メール確認が完了していないアカウントは 401

リフレッシュトークン更新(grant_type: refresh_token)

access_token の有効期限切れ後、refresh_token を使って新しいトークンペアを取得します。 リフレッシュトークン自体もローテーションされ、古いトークンは無効になります。

Request Body schema: application/json
required
One of
grant_type
required
string
Value: "password"
username
required
string <email>

ユーザーのメールアドレス

password
required
string

パスワード

team_id
required
string <uuid>

所属チームID(マルチテナント環境では必須)

Responses

Request samples

Content type
application/json
Example
{
  • "grant_type": "password",
  • "username": "admin@example.com",
  • "password": "string",
  • "team_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Response samples

Content type
application/json
{
  • "access_token": "string",
  • "token_type": "Bearer",
  • "expires_in": 3600,
  • "refresh_token": "string"
}

フォルダ

フォルダ(ナレッジ単位)の管理

フォルダ一覧取得

指定チームのフォルダ(ナレッジ)一覧を返します。

利用可能ロール: admin, manager, member

フォルダに対するアクセス権(読み取り・編集)に応じてアクセス可能なフォルダのみ返されます。

Authorizations:
BearerAuth
path Parameters
teamId
required
string <uuid>
Example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

チームID(UUID形式)

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

ドキュメント

ドキュメントのアップロード・管理

アップロードURL取得(ステップ1)

S3プリサインドPOST URLを発行します。ドキュメントアップロードフローのステップ1です。

利用可能ロール: admin, manager

SHA-256重複チェック

sha256_hashskip_if_duplicate: true を指定すると、同一フォルダ内にステータス ready の同一ファイルが存在するか確認します。 重複が検出された場合は duplicate: true が返され、S3アップロード(ステップ2)と confirm(ステップ3)は不要です。

サポートファイル形式

形式 MIMEタイプ
PDF application/pdf
テキスト text/plain
Markdown text/markdown
HTML text/html
Word (.doc) application/msword
Word (.docx) application/vnd.openxmlformats-officedocument.wordprocessingml.document
Excel (.xls) application/vnd.ms-excel
Excel (.xlsx) application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
PowerPoint (.ppt) application/vnd.ms-powerpoint
PowerPoint (.pptx) application/vnd.openxmlformats-officedocument.presentationml.presentation
CSV text/csv
JPEG画像 image/jpeg
PNG画像 image/png
Authorizations:
BearerAuth
path Parameters
teamId
required
string <uuid>
Example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

チームID(UUID形式)

folderId
required
string <uuid>
Example: yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy

フォルダID(UUID形式)

Request Body schema: application/json
required
filename
required
string

アップロードするファイル名

mime_type
required
string
Enum: "application/pdf" "text/plain" "text/markdown" "text/html" "application/msword" "application/vnd.openxmlformats-officedocument.wordprocessingml.document" "application/vnd.ms-excel" "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" "application/vnd.ms-powerpoint" "application/vnd.openxmlformats-officedocument.presentationml.presentation" "text/csv" "image/jpeg" "image/png"

ファイルのMIMEタイプ

size_bytes
integer

ファイルサイズ(バイト)。省略可能だが推奨。

sha256_hash
string

ファイルのSHA-256ハッシュ値(16進数)。重複チェックに使用。

skip_if_duplicate
boolean
Default: false

sha256_hashが一致するドキュメントが既にある場合、アップロードをスキップするか

Responses

Request samples

Content type
application/json
{
  • "filename": "product-manual-v2.pdf",
  • "mime_type": "application/pdf",
  • "size_bytes": 1048576,
  • "sha256_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  • "skip_if_duplicate": true
}

Response samples

Content type
application/json
Example
{
  • "duplicate": false,
  • "document_id": "zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz",
  • "upload_fields": {
    },
  • "s3_key": "teams/xxx/folders/yyy/zzz/product-manual-v2.pdf"
}

アップロード完了通知(ステップ3)

S3へのファイルアップロード完了を通知し、ベクトル化パイプラインを起動します。ドキュメントアップロードフローのステップ3です。

利用可能ロール: admin, manager

このエンドポイントを呼び出す前に、ステップ2(S3への直接アップロード)が完了している必要があります。

confirmが成功するとドキュメントのステータスが uploadingprocessing に変わり、 ベクトル化完了後に ready になります。

ready になるまでの時間はファイルサイズや内容によって異なります(通常数十秒から数分)。 ステータスは GET /v1/teams/{teamId}/folders/{folderId}/documents/{docId} でポーリングしてください。

Authorizations:
BearerAuth
path Parameters
teamId
required
string <uuid>
Example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

チームID(UUID形式)

folderId
required
string <uuid>
Example: yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy

フォルダID(UUID形式)

docId
required
string <uuid>
Example: zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz

ドキュメントID(UUID形式)

Responses

Response samples

Content type
application/json
{
  • "document_id": "zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz",
  • "status": "processing",
  • "message": "アップロード完了。ベクトル化処理を開始しました。"
}

フォルダ内ドキュメント一覧取得

指定フォルダ内のドキュメント一覧をカーソルベースのページネーションで返します。

利用可能ロール: admin, manager, member

ページネーション

next_cursornull でない場合、次のページが存在します。 次のリクエストで cursor=<next_cursor> を指定してください。

ソート

sort パラメータで並び順を指定できます(デフォルト: created_at_desc)。

Authorizations:
BearerAuth
path Parameters
teamId
required
string <uuid>
Example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

チームID(UUID形式)

folderId
required
string <uuid>
Example: yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy

フォルダID(UUID形式)

query Parameters
status
string
Enum: "uploading" "processing" "ready" "error"

ステータスでフィルタリング

q
string
Example: q=manual

ファイル名の部分一致検索

cursor
string

ページネーションカーソル(前のレスポンスの next_cursor を指定)

limit
integer [ 1 .. 100 ]
Default: 20

1ページあたりの件数(1-100、デフォルト: 20)

sort
string
Default: "created_at_desc"
Enum: "created_at_asc" "created_at_desc" "filename_asc" "filename_desc" "size_bytes_asc" "size_bytes_desc"

ソート順

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "next_cursor": "eyJpZCI6Inp6enovv..."
}

ドキュメント詳細取得

指定ドキュメントの詳細情報を返します。

利用可能ロール: admin, manager, member

ステータスが processingready に変わるまでのポーリングにも使用できます。

Authorizations:
BearerAuth
path Parameters
teamId
required
string <uuid>
Example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

チームID(UUID形式)

folderId
required
string <uuid>
Example: yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy

フォルダID(UUID形式)

docId
required
string <uuid>
Example: zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz

ドキュメントID(UUID形式)

Responses

Response samples

Content type
application/json
{
  • "document_id": "zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz",
  • "folder_id": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
  • "filename": "product-manual-v2.pdf",
  • "mime_type": "application/pdf",
  • "size_bytes": 1048576,
  • "status": "ready",
  • "s3_key": "teams/xxx/folders/yyy/zzz/product-manual-v2.pdf",
  • "chunk_count": 24,
  • "uploaded_by": "uuuuuuuu-uuuu-uuuu-uuuu-uuuuuuuuuuuu",
  • "created_at": "2024-01-01T00:00:00.000Z",
  • "updated_at": "2024-01-01T01:00:00.000Z"
}

ドキュメント削除

ドキュメントを削除します。S3上のファイルおよびS3 Vectorsのベクトルデータも合わせて削除されます。

利用可能ロール: admin, manager

削除後は元に戻せません。AIに聞く機能でのこのドキュメントに基づく回答も即時反映されます。

Authorizations:
BearerAuth
path Parameters
teamId
required
string <uuid>
Example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

チームID(UUID形式)

folderId
required
string <uuid>
Example: yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy

フォルダID(UUID形式)

docId
required
string <uuid>
Example: zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz

ドキュメントID(UUID形式)

Responses

Response samples

Content type
application/json
{
  • "statusCode": 400,
  • "message": "Bad Request",
  • "timestamp": "2024-01-01T00:00:00.000Z"
}

チーム横断ドキュメント一覧取得

チーム全体のドキュメントをカーソルベースのページネーションで返します。フォルダを横断して検索する補助的なエンドポイントです。

利用可能ロール: admin, manager, member

特定フォルダのドキュメント操作には /v1/teams/{teamId}/folders/{folderId}/documents を使用してください。

ページネーション・ソート

/v1/teams/{teamId}/folders/{folderId}/documents と同じパラメータを使用します。

Authorizations:
BearerAuth
path Parameters
teamId
required
string <uuid>
Example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

チームID(UUID形式)

query Parameters
status
string
Enum: "uploading" "processing" "ready" "error"

ステータスでフィルタリング

q
string
Example: q=manual

ファイル名の部分一致検索

cursor
string

ページネーションカーソル

limit
integer [ 1 .. 100 ]
Default: 20

1ページあたりの件数(1-100、デフォルト: 20)

sort
string
Default: "created_at_desc"
Enum: "created_at_asc" "created_at_desc" "filename_asc" "filename_desc" "size_bytes_asc" "size_bytes_desc"

ソート順

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "next_cursor": "eyJpZCI6Inp6enovdi4uLiJ9"
}