プログラミング知識0が挑むLINE WORKS API2.0 part4（役職作成編）

# 今回のテーマ
[前回](https://qiita.com/tnk-tty/items/54b75c0b264173e8c073)で組織を作成しました。

予定していた工程は以下でした。

>　~~1.組織を作る~~
>　2.役職を作る
>　3.利用権限タイプを作る
>　4.ユーザーを作る
>　5.設定した利用権限タイプで動作するかチェック！

今回は役職を作成します！

LINE WORKSには[役職](https://guide.worksmobile.com/jp/admin/admin-guide/manage-members/position-level-employment-type/#i)と[職級](https://guide.worksmobile.com/jp/admin/admin-guide/manage-members/position-level-employment-type/#i-2)という項目を設定できます。

どちらも「作らなければならない」というものではありません。
それぞれ企業によっての使い分けや考え方があると思いますので、もし使用する場合の参考になると良いなと思っております！

# 役職の登録APIについて
恒例の[ドキュメント](https://developers.worksmobile.com/jp/reference/directory-position-create?lang=ja)チェック！

### 最低限の情報
Request Bodyを見るとrequiredのパラメータは以下の3つでした。

* domainId
* displayOrder
* positionName

役職の登録APIは全体で見てもパラメータ数が少ないですねー

### とりあえず役職を作ってみる
以下の役職を作成しようと思います。

* 社長
* 部長
* 課長
* 一般職
* 派遣社員
* アルバイト

では、まず社長を作成してみます。

![01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740500/7f08b24c-edc5-4011-48d2-35890eb7b8e2.png)

で、結果は。。。。？あれ？失敗？

![02.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740500/14f4938f-fabb-23c7-a673-3f55b737efc0.png)

ホントうまくいかない人生だなぁと過去に思いを馳せつつdiscriptionを見ると「usePositionがfalseの場合、このAPIは使えません」とのことでした。

？？？？

usePostionなんてパラメータあったかな。。。？

とりあえずもう一度[ドキュメント](https://developers.worksmobile.com/jp/reference/directory-position-create?lang=ja)見てみたのですが、冒頭に書いてありますね。

> ドメインの役職設定が有効である必要がある。

 **本日の標語「しっかり読もうドキュメント」**

### 役職の有効化APIについて
前述の通り、役職や職級は設定が必須ということではありません。
なので、この設定自体を使うか・使わないかを選択できます。

役職が使わない状態（無効）だったために登録ができませんよ、ということだったんですね。

では[役職の有効化API](https://developers.worksmobile.com/jp/reference/directory-position-enable?lang=ja)を見てみます。

メソッドはPOSTのようなのですが、Request Bodyがありません！
URLにenableとありますので、これで「有効化してくださいね」ということなんですね。

ではサクッとURLだけ貼り付けて実行！

![03.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740500/6d0cee3c-48ca-711c-4b6c-95ea1ddf2e34.png)

204 No Contentとして正常に処理されました！
「No」って表示があるととダメだったのかな？とか不安になりません？（私だけ？）

![04.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740500/20f6707f-d967-652f-c910-bb5fa180cca7.png)

### 再度、役職の登録APIを実行
Bodyの内容はさっきと同じです。

![01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740500/d33a78bb-2945-c416-080d-710f17dc1319.png)

201 Createdとして正常に役職が作成できました！

<details><summary>実行結果</summary>

~~~
{
    "domainId": xxxxxxxx,
    "displayOrder": 1,
    "positionName": "社長",
    "positionExternalKey": null,
    "i18nNames": [],
    "positionId": "12345678-1234-5678-9012-12345678901"
}
~~~
</details>

Response内容には「posiotnId」という役職を識別するためのIDが含まれています。
もし役職名を修正したいときは、「posiotnId」を指定する必要がありますね。

ではこの調子で他の役職も作ってしまいましょう！

### 出来上がったものがこちらです
[役職リストの取得API](https://developers.worksmobile.com/jp/reference/directory-position-list?lang=ja) を実行してすべての役職を取得します。

メソッドはGETです。
GET、簡単で好きです。

![07.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740500/c0a3cd15-db1e-00dd-041d-fa571ae13fe6.png)

<details><summary>実行結果</summary>

~~~
{
    "responseMetaData": {
        "nextCursor": null
    },
    "positions": [
        {
            "domainId": xxxxxxxx,
            "displayOrder": 1,
            "positionName": "社長",
            "positionExternalKey": null,
            "i18nNames": [],
            "positionId": "12345678-1234-5678-9012-12345678901"
        },
        {
            "domainId": xxxxxxxx,
            "displayOrder": 1,
            "positionName": "部長",
            "positionExternalKey": null,
            "i18nNames": [],
            "positionId": "92345678-1234-5678-9012-12345678909"
        },
        {
            "domainId": xxxxxxxx,
            "displayOrder": 1,
            "positionName": "課長",
            "positionExternalKey": null,
            "i18nNames": [],
            "positionId": "82345678-1234-5678-9012-12345678908"
        },
        {
            "domainId": xxxxxxxx,
            "displayOrder": 1,
            "positionName": "一般職",
            "positionExternalKey": null,
            "i18nNames": [],
            "positionId": "72345678-1234-5678-9012-12345678907"
        },
        {
            "domainId": xxxxxxxx,
            "displayOrder": 1,
            "positionName": "派遣社員",
            "positionExternalKey": null,
            "i18nNames": [],
            "positionId": "62345678-1234-5678-9012-12345678906"
        },
        {
            "domainId": xxxxxxxx,
            "displayOrder": 1,
            "positionName": "アルバイト",
            "positionExternalKey": null,
            "i18nNames": [],
            "positionId": "52345678-1234-5678-9012-12345678905"
        }
    ]
}
~~~
</details>

ブラウザの管理画面上ではこのように表示されます。
![08.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740500/56d26c59-3aa6-936e-33eb-a24c625a4ce7.png)

# まとめ
* 以下のLINE WORKSドキュメントを参照しました
 [役職設定の有効化](https://developers.worksmobile.com/jp/reference/directory-position-enable?lang=ja)
 [役職の登録](https://developers.worksmobile.com/jp/reference/directory-position-create?lang=ja)
 [役職リストの取得](https://developers.worksmobile.com/jp/reference/directory-position-list?lang=ja)