コンテンツにスキップ

API クライアント

Client は RPC メソッドを提供する gRPC API クライアントです。

// ESM
import { OAuth2Authenticator, Client, MediaUploadType, LanguageCode } from 'mixi2-js';
// CJS
const { OAuth2Authenticator, Client, MediaUploadType, LanguageCode } = require('mixi2-js');
const authenticator = new OAuth2Authenticator({
clientId: process.env.CLIENT_ID!,
clientSecret: process.env.CLIENT_SECRET!,
tokenUrl: process.env.TOKEN_URL!,
});
const client = new Client({
apiAddress: process.env.API_ADDRESS!,
authenticator,
});
プロパティ必須説明
apiAddressstringAPI サーバーアドレス
authenticatorAuthenticator認証インスタンス
メソッド引数戻り値説明
getUsers(userIdList)string[]Promise<User[]>ユーザー情報を一括取得
getPosts(postIdList)string[]Promise<Post[]>ポスト情報を一括取得
createPost(request)CreatePostRequestPromise<Post>ポストを作成(返信/引用/コミュニティ/メディア添付対応)
deletePost(postId)stringPromise<boolean>ポストを削除
initiatePostMediaUpload(request)InitiatePostMediaUploadRequestPromise<InitiatePostMediaUploadResponse>メディアアップロードを開始
getPostMediaStatus(mediaId)stringPromise<GetPostMediaStatusResponse>メディアの処理状況を取得
sendChatMessage(request)SendChatMessageRequestPromise<ChatMessage>チャットメッセージを送信
getStamps(request?)GetStampsRequest?Promise<GetStampsResponse>スタンプ一覧を取得
addStampToPost(postId, stampId)string, stringPromise<Post>ポストにスタンプを付与
close()-voidgRPC 接続を閉じる
メソッド引数戻り値説明
getCommunities(communityIdList)string[]Promise<Community[]>コミュニティ情報を一括取得
getCommunityTimeline(request)GetCommunityTimelineRequestPromise<Post[]>コミュニティのタイムラインを取得
getCommunityMemberList(request)GetCommunityMemberListRequestPromise<GetCommunityMemberListResponse>コミュニティのメンバー一覧を取得
restrictCommunityPost(request)RestrictCommunityPostRequestPromise<void>コミュニティのポストを非表示にする
getCommunitiesUsingApplication(request?)GetCommunitiesUsingApplicationRequest?Promise<GetCommunitiesUsingApplicationResponse>Plugin がインストールされているコミュニティ一覧を取得
sendDirectMessageToCommunityMember(request)SendDirectMessageToCommunityMemberRequestPromise<ChatMessage>コミュニティメンバーに DM を送信
const users = await client.getUsers(["user-id-1", "user-id-2"]);
const post = await client.createPost({ text: "Hello mixi2!" });
フィールド必須説明
textstringポスト本文(最大 149 文字)
inReplyToPostIdstring-返信先ポスト ID
quotedPostIdstring-引用対象ポスト ID
communityIdstring-投稿先コミュニティ ID(Plugin のみ)
mediaIdListstring[]-添付メディア ID(最大 4 件)
postMaskPostMask-マスク設定(センシティブ/ネタバレ)
publishingTypePostPublishingType-配信設定
const deleted = await client.deletePost("post-id");
// deleted === true なら削除成功

メディアアップロード → ポスト添付

Section titled “メディアアップロード → ポスト添付”
const upload = await client.initiatePostMediaUpload({
contentType: "image/png",
dataSize: 1024,
mediaType: MediaUploadType.IMAGE,
});
// upload.uploadUrl に POST でメディアデータを送信
const status = await client.getPostMediaStatus(upload.mediaId);
// status.status === MediaUploadStatus.COMPLETED になったら添付可能
await client.createPost({ text: "画像付き!", mediaIdList: [upload.mediaId] });
フィールド必須説明
contentTypestringContent-Type(例: image/jpeg
dataSizenumberデータサイズ(バイト)
mediaTypeMediaUploadTypeメディア種別(IMAGE / VIDEO
descriptionstring-メディアの説明
const message = await client.sendChatMessage({
roomId: "room-id",
text: "Hello!",
});
フィールド必須説明
roomIdstring送信先ルーム ID
textstringテキスト(text または mediaId のいずれか必須)
mediaIdstring添付メディア ID
// 公式スタンプ一覧取得
const result = await client.getStamps({ officialStampLanguage: LanguageCode.JP });
const officialSets = result.officialStampSets;
// コミュニティスタンプ取得(Plugin のみ)
const result2 = await client.getStamps({ communityIds: ["community-id"] });
const communityStamps = result2.communityStampSets;
// ポストにスタンプを付与
await client.addStampToPost("post-id", "stamp-id");
フィールド必須説明
officialStampLanguageLanguageCode-公式スタンプの言語(未指定の場合は空のリストが返る)
communityIdsstring[]-コミュニティスタンプを取得するコミュニティ ID(Plugin のみ)
フィールド説明
officialStampSetsOfficialStampSet[]公式スタンプセットの一覧
communityStampSetsCommunityStampSet[]コミュニティスタンプセットの一覧
client.close();

各 RPC メソッドの詳細は 公式 API 仕様 を参照してください。

// ESM
import { OAuth2Authenticator, Client, MediaUploadType, LanguageCode } from 'mixi2-js';
// CJS
const { OAuth2Authenticator, Client, MediaUploadType, LanguageCode } = require('mixi2-js');
const authenticator = new OAuth2Authenticator({
clientId: process.env.CLIENT_ID!,
clientSecret: process.env.CLIENT_SECRET!,
tokenUrl: process.env.TOKEN_URL!,
});
const client = new Client({
apiAddress: process.env.API_ADDRESS!,
authenticator,
});
プロパティ必須説明
apiAddressstringAPI サーバーアドレス
authenticatorAuthenticator認証インスタンス
メソッド引数戻り値説明
getUsers(userIdList)string[]Promise<User[]>ユーザー情報を一括取得
getPosts(postIdList)string[]Promise<Post[]>ポスト情報を一括取得
createPost(request)CreatePostRequestPromise<Post>ポストを作成(返信/引用/メディア添付対応)
deletePost(postId)stringPromise<boolean>ポストを削除
initiatePostMediaUpload(request)InitiatePostMediaUploadRequestPromise<InitiatePostMediaUploadResponse>メディアアップロードを開始
getPostMediaStatus(mediaId)stringPromise<GetPostMediaStatusResponse>メディアの処理状況を取得
sendChatMessage(request)SendChatMessageRequestPromise<ChatMessage>チャットメッセージを送信
getStamps(request?)GetStampsRequest?Promise<OfficialStampSet[]>スタンプ一覧を取得
addStampToPost(postId, stampId)string, stringPromise<Post>ポストにスタンプを付与
close()-voidgRPC 接続を閉じる
const users = await client.getUsers(["user-id-1", "user-id-2"]);
const post = await client.createPost({ text: "Hello mixi2!" });
フィールド必須説明
textstringポスト本文(最大 149 文字)
inReplyToPostIdstring-返信先ポスト ID
quotedPostIdstring-引用対象ポスト ID
mediaIdListstring[]-添付メディア ID(最大 4 件)
postMaskPostMask-マスク設定(センシティブ/ネタバレ)
publishingTypePostPublishingType-配信設定
const deleted = await client.deletePost("post-id");
// deleted === true なら削除成功

メディアアップロード → ポスト添付

Section titled “メディアアップロード → ポスト添付”
const upload = await client.initiatePostMediaUpload({
contentType: "image/png",
dataSize: 1024,
mediaType: MediaUploadType.IMAGE,
});
// upload.uploadUrl に POST でメディアデータを送信
const status = await client.getPostMediaStatus(upload.mediaId);
// status.status === MediaUploadStatus.COMPLETED になったら添付可能
await client.createPost({ text: "画像付き!", mediaIdList: [upload.mediaId] });
フィールド必須説明
contentTypestringContent-Type(例: image/jpeg
dataSizenumberデータサイズ(バイト)
mediaTypeMediaUploadTypeメディア種別(IMAGE / VIDEO
descriptionstring-メディアの説明
const message = await client.sendChatMessage({
roomId: "room-id",
text: "Hello!",
});
フィールド必須説明
roomIdstring送信先ルーム ID
textstringテキスト(text または mediaId のいずれか必須)
mediaIdstring添付メディア ID
// スタンプ一覧取得
const stamps = await client.getStamps({ officialStampLanguage: LanguageCode.JP });
// ポストにスタンプを付与
await client.addStampToPost("post-id", "stamp-id");
client.close();

各 RPC メソッドの詳細は 公式 API 仕様 を参照してください。