カテゴリー内の他の記事

ユーザーエクスポートAPI

Index

ユーザーエクスポート API(CSV)

ユーザー情報をCSV出力するためのAPIです。

  • Administrator の情報は出力できません。

HTTP メソッド

GET

URI

https://{sub-domain}.cybozu.com/v1/csv/user.csv

リクエストヘッダ

ヘッダ 値と説明
X-Cybozu-Authorization 「ログイン名:パスワード」をBASE64エンコードしたものを値に指定します。
Authorization Basic認証を利用している場合、文字列「Basic 」と「ログイン名:パスワード」をBASE64エンコードしたものを値に指定します。
// Sample
X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU=
Authorization: Basic QWRtaW5pc3RyYXRvcjpjeWJvenU=

リクエストボディ

必要なパラメータはありません。

レスポンス

ユーザー情報 CSV が HTTP レスポンスボディに含まれています。CSV フォーマットの詳細は ユーザー情報 CSV をご参照ください。

アクセス権

cybozu.com共通管理者のみ実行できます。

ユーザーエクスポート API(JSON)

ユーザー情報 をJSONデータで出力するための API です。

HTTP メソッド

GET

URI

https://(サブドメイン名).cybozu.com/v1/users.json

リクエストヘッダ

ヘッダ 値と説明
X-Cybozu-Authorization 「ログイン名:パスワード」をBASE64エンコードしたものを値に指定します。
Authorization Basic認証を利用している場合、文字列「Basic 」と「ログイン名:パスワード」をBASE64エンコードしたものを値に指定します。
   
// Sample
X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU=
Authorization: Basic QWRtaW5pc3RyYXRvcjpjeWJvenU=

リクエストパラメータ

パラメータ名 指定する値 必須 説明
ids 配列 省略可(省略時は最大100)。 取得したいユーザーのID一覧。
codes 配列 省略可(省略時は最大100)。 取得したいcode一覧。
offset 数値

省略可(省略時は0)。

オフセット。
size 数値 省略可(省略時は最大100)。 取得件数。

リクエストの例

※idsとcodesの両方が指定された場合は、エラーになります。

クエリ文字列
ids[0]=1&ids[1]=2&ids[2]=3&offset=0&size=100
リクエストヘッダを含んだ文字列
GET /v1/users.json?ids[0]=1&ids[1]=2&ids[2]=3&offset=0&size=100 HTTP/1.1
Host: example.cybozu.com:443
X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU=
Authorization: Basic QWRtaW5pc3RyYXRvcjpjeWJvenU=
  • Content-Typeヘッダは不要です。

レスポンス

キー 制約
user user型 ユーザ情報

 

アクセス権

全ユーザーでアクセス可能です。

※kintoneのゲストユーザはアクセスできません。

記事に関するフィードバック

記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。

Avatar
TAKA

いつもお世話になっております。

このページで紹介されているユーザーエクスポート API(JSON)について、
PHPで外部から取得する場合、どのように記述するのでしょうか。

PHP Tipsの情報を参考に、このページのリクエストの内容をPHPに置き換えてみたのですが、条件パラメータが効いておらず、アカウント情報が毎回、全件抽出されてしまいます。

 $context = array(
"http" => array(
"method" => 'GET',
"header" => implode("\r\n", $header),
"content" => json_encode(array("query" => 'ids=1 and ids=2 limit 100 offset 0'))
)
);
$result = file_get_contents(
"https://" . $subDomain . ".cybozu.com/v1/users.json",
false,
stream_context_create($context)
);

$context内のqueryが無視されている感じです。
試しに$result内のURLに直接
~v1/users.json?ids[0]=1&ids[1]=2&offset=0&size=100
のように記載してみましたが、これも結果は同じでした。

ご教授いただけますよう、よろしくお願い申し上げます。

TAKAにより編集されました
Avatar
cybozu Development team

TAKA様

お世話になっております。

ユーザーエクスポートAPIはkintone APIと異なりqueryをサポートしていません。

Avatar
TAKA

cybozu Development teamさま

回答ありがとうございます。

URLで「ids[0]=1&ids[1]=2&ids[2]=3&offset=0&size=100」というように指定できるようになっていますが、
これをqueryで指定する方法はないということでしょうか。

Avatar
cybozu Development team

TAKA様

はい、リクエストボディでのクエリ指定ができないので、クエリ文字列をURLに含める形になります。
ご確認よろしくお願いします。

Avatar
TAKA

cybozu Development teamさま

何度も恐縮ですが、確認でございます。

仰る通りqueryでの指定はできませんでしたので、file_get_contentsのURLに「ids[0]=1&ids[1]=2&ids[2]=3&offset=0&size=100」を追加してみましたが、これも無視され、全件抽出されました。

$result = file_get_contents(
"https://" . $subDomain . ".cybozu.com/v1/users.json?ids[0]=1&ids[1]=2&ids[2]=3&offset=0&size=100",
false,
stream_context_create($context)
);

PHPでは条件指定で抽出する方法はないという認識で間違いないでしょうか?

Avatar
cybozu Development team
TAKA様
 
手元でも確認したところ、指定したidのユーザー情報のみ取得できました。
今一度コードのご確認をお願いします。
 
<?php

// サブドメイン
$subDomain = "×××";

// ユーザー認証
$loginName = "×××"; // ログイン名
$password = "×××"; // パスワード

// リクエストヘッダ
$header = array(
"Host: ".$subDomain.".cybozu.com:443",
"X-Cybozu-Authorization: ".base64_encode($loginName.':'.$password)
);

// HTTPコンテキスト
$context = array(
"http"=>array(
"method"=>'GET',
"header"=>implode("\r\n",$header)
)
);

// REST APIでフォーム設計情報を取得
$result = file_get_contents(
"https://".$subDomain.".cybozu.com/v1/users.json?ids[0]=1",// URI
false,// use_include_pathは必要ないのでfalse
stream_context_create($context) // コンテキストの生成
);

// ダンプ出力
var_dump(json_decode($result, true));

?>
cybozu Development teamにより編集されました
Avatar
TAKA

cybozu Development teamさま

ご丁寧なお返事をいただきありがとうございました。

指定したidのみ出力できたとのこと、ご提示いただいたコードはこちらで試したものと変わらない内容ですので、私のコードがどこか間違っていたのかもしれません。
再度見直しを行ないます。
お騒がせして申し訳ございませんでした。

Avatar
cybozu Development team

TAKA 様

とんでもございません。またご不明な点がございましたら、お気軽にコミュニティなどご活用ください。

Avatar
yuichiro

すみませんが本APIについて教えて下さい

標準のフィールドを使わずにアプリを作成したく、JavascriptとHTMLのみで作成を進めています

ユーザー選択と同等のコンポーネントを作成したく、APIの箇所は以下の通りに作りました。

export const kintoneGetUserData = (): Promise<RestUsersResponse> => {
  return new Promise<RestUsersResponse>((ok, _) => {
    kintone.api(kintone.api.url('/v1/users', true), 'GET', { size: 10000 }).then((response: RestUsersResponse) => {
      ok(response);
    });
  })
}
フィールド側(React、Material-UI)
export default function UserSelectField(props: Args) {
  const [userData, setUserData] = React.useState<RestUsersResponse | undefined>(undefined);

  React.useEffect(() => {
    kintoneGetUserData().then(res => {
      console.log(res.users.length)
      setUserData(res);
    })
  }, [])

  return <Autocomplete
    options={userData === undefined ? [] : userData.users.map(e => e)}
    getOptionLabel={(option) => option.name}
    size="small"
    renderInput={(params) => <TextField
      {...params}
      {...props.register}
      label={props.label}
      variant="outlined"
    />}
  />
}
 
一旦これにてAPI上限である100名までは読み出しが出来ました。
ただ、このAPIの上限は最大100のようで特定のユーザーしか取得する事が出来ていません
 
こういった場合に、他に適切なAPIはないでしょうか(この方法だと監査ログにもWarningが出ますし)
以下のような方法がないか探しています
 
  • URLの他にクエリを渡し、サーバー(Kintone)側でフィルタの上、最大100件まで返す方法はないか
  • 他のAPIで上記のような返し方が出来るようなものがないか

またこれらの方法がない場合適切な方法としては

一旦Offisetを活用して全ての情報をメモリ内に格納するしかないでしょうか

 

可能であれば教えて頂きたい次第です

yuichiroにより編集されました
Avatar
cybozu Development team

yuichiro 様

お世話になっております。cybozu developer network 運営でございます。

Yuichiro 様のご認識の通り、100件より多くのユーザーデータをエクスポートする場合は、
Offsetを利用しながら数回にわたってリクエストを送信し、都度レスポンスをメモリに保存する必要があります。

ユーザーエクスポート API は、クエリによるフィルタには対応しておらず、
他にユーザー情報を出力できる API はございません。

お力になれず申し訳ございませんが、ご理解のほどよろしくお願いいたします。

Avatar
yuichiro

cybozu Development team様

ご回答ありがとうございます。
仕様について了解しました

offsetを指定した場合、残りのぺージャーが何件あるか判定する方法は仕様上存在しますか?

特になければapiからの返り値の配列が0か否かで全てのページャーを、取得したか判定したいと思います

Avatar
cybozu Development team

yuichiro 様

残りのページャー数は返り値には含まれませんので、
返り値である配列の長さが0か否かで、全てのページャーを取得したか判定する必要があります。

また、技術的な質問に関しましては、
ぜひ cybozu developer コミュニティ をご利用ください。

 

サインインしてコメントを残してください。