openapi: 3.0.1
info:
  title: XronosLink API
  version: 1.0.0
  description: >
    XronosLink は クロノス社製品と外部のアプリケーションを API を通じて連携するサービスです<a
    href="https://www.xronos-inc.co.jp/products/xronoslink/" target="_blank"
    rel="noopener noreferrer">（詳しくはこちら）</a>。  

    XronosLink API は XronosLink 上の情報を外部のアプリケーションから利用するための API です。


    [「スタートガイド」](/xronoslink/developer/guide/introduction/)も参考にご利用ください。


    XronosLink API を利用した製品同士の連携をご検討の事業者様は、こちらからお問い合わせください。  

    ⇒ <a href="https://www.xronos-inc.co.jp/products/xronoslink/apicontact.html"
    target="_blank" rel="noopener noreferrer">お問い合わせフォーム</a>


    [API変更履歴](/xronoslink/developer/changelog/)


    # 共通仕様


    ## 概要


    API の共通仕様は以下です。


    |項目|説明|

    |---|---|

    |プロトコル|HTTPS|

    |文字コード|UTF‒8|

    |Content-Type|application/json|

    |Base URL|https\://api.xronos-inc.link/v1|


    ## 認証


    API へのアクセスは、リクエストのヘッダに「アクセストークン」を付加する必要があります。  

    アクセストークンは XronosLink のメニューにある「アクセストークン」から発行できます。


    発行方法の詳細はこちらからご確認ください。  

    ⇒
    [アクセストークンの発行](/xronoslink/developer/guide/start/#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%81%AE%E7%99%BA%E8%A1%8C)


    「X-Xronos-Access-Token」ヘッダに、発行したアクセストークンを追加し、 API リクエストを行います。  

    以下に curl で API をリクエストするときの例を示します。  

    （「XXXXX」の部分は、発行したアクセストークンに置き換えてください）


    ```bash

    curl -X GET "https://api.xronos-inc.link/v1/employees" -H
    "X-Xronos-Access-Token: XXXXX"

    ```


    ## ページネーション


    リストを返す API では、一度に返せる要素数の上限が決まっています。  

    上限を超える要素を取得したい場合は、ページを指定する必要があります。

    指定するクエリパラメータは以下です。


    |クエリパラメータ|デフォルト値|指定可能値|説明|

    |---|---|---|---|

    |page|1|1以上の整数値|ページ番号|

    |per|20|1～100の整数値|ページ当たりの件数|


    ページネーションがある API のレスポンスには、以下のヘッダが含まれます。


    |ヘッダ|説明|

    |---|---|

    |X-Total-Count|総件数|

    |Link|ページ移動に関するリンク情報|


    Link ヘッダには、以下の rel 属性のリンクが含まれます。


    |rel 属性|説明|

    |---|---|

    |next|次のページ（存在する場合）|

    |prev|前のページ（存在する場合）|

    |first|最初のページ|

    |last|最後のページ|


    ```text

    Link: <http://api.xronos-inc.link/v1/employees?page=1&per=20>; rel="first",
          <http://api.xronos-inc.link/v1/employees?page=4&per=20>; rel="prev",
          <http://api.xronos-inc.link/v1/employees?page=6&per=20>; rel="next",
          <http://api.xronos-inc.link/v1/employees?page=10&per=20>; rel="last"
    ```


    ## ステータスコード


    API リクエストがエラーになった場合は、一部のエラーにおいて、以下の HTTP ステータスコードとエラーコードが返されます。  

    エラーコードは、レスポンスデータ内に含まれます。  

    以下に記載されている以外の HTTP ステータスコードは、 HTTP の仕様に準拠します。


    |HTTP ステータスコード|エラーコード|説明|

    |---|---|---|

    |400|invalid_value|値が不正|

    ||invalid_syntax|構文が不正|

    ||no_required|必須パラメータなし|

    ||duplicate_value|必須パラメータの重複|

    |401|invalid_access_token|アクセストークンが不正|

    ||not_exist_access_token|アクセストークンが未設定|

    ||expired_token|アクセストークンの有効期限切れ|

    ||expired_contract|契約の有効期限切れ|

    |403|no_permission|利用許可がない|

    |404|no_resource|リソースが存在しない|

    |500|-|サーバエラー|

    |503|-|サーバ利用不可|


    ### エラー時のレスポンスのデータ


    エラー時のレスポンスのデータ形式は以下です。


    ```js

    {
      "errors": [
        {
          "message": "エラーメッセージ [string]",
          "code": "エラーコード [string]"
        }
      ]
    }

    ```


    ## データ連携時の「空文字/null/プロパティ指定なし」の挙動


    XronosLink を利用する際のデータの取り扱いについては以下の通りとなります。


    |JSON プロパティ指定|値|データ更新挙動|

    |---|---|---|

    |あり|文字列指定|指定した文字列で更新する|

    |あり|空文字指定|初期値に更新する|

    |あり|null 指定|更新しない|

    |なし|-|更新しない|


    例1：社員情報を更新時、すでに登録済みの役職コードをクリア（初期値に変更）したい場合は以下のように指定してください。


    ```js

    [
      {
        "code": "1",
        "positionCode": ""
      }
    ]


    ```

    例2：社員情報を更新時、すでに登録済みの役職コードを更新したくない場合は以下のように指定してください。  

    以下の2つの例は、どちらも更新しない挙動になります。


    ```js

    [
      {
        "code": "1",
        "positionCode": null
      },
      {
        "code": "2"
      }
    ]

    ```
servers:
  - url: https://api.xronos-inc.link/v1
tags:
  - name: employees
    description: 社員
  - name: departments
    description: 所属
  - name: positions
    description: 役職
  - name: jobs
    description: 職種
  - name: salaries
    description: 給与関連
paths:
  /employees:
    get:
      tags:
        - employees
      summary: 社員一覧取得
      description: XronosLinkに保存されている社員の一覧を取得します。
      operationId: getEmployees
      security:
        - AccessToken: []
      parameters:
        - in: query
          name: page
          description: 取得するページ番号（1以上の整数値）（未指定は1）
          schema:
            type: integer
        - in: query
          name: per
          description: 取得するページ当たりの件数（1～100の整数値）（未指定は20）
          schema:
            type: integer
      responses:
        '200':
          description: 取得成功
          content:
            application/json:
              schema:
                type: array
                description: 社員一覧
                items:
                  type: object
                  properties:
                    code:
                      type: string
                      description: 社員コード
                      example: '1'
                    id:
                      type: integer
                      description: IDコード
                      example: 1
                    name:
                      type: string
                      description: |
                        氏名
                      example: 黒ノ巣 良子
                    lastName:
                      type: string
                      description: 姓
                      example: 黒ノ巣
                    firstName:
                      type: string
                      description: 名
                      example: 良子
                    kana:
                      type: string
                      description: |
                        氏名フリガナ
                      example: ｸﾛﾉｽ ﾘｮｳｺ
                    lastNameKana:
                      type: string
                      description: 姓フリガナ
                      example: ｸﾛﾉｽ
                    firstNameKana:
                      type: string
                      description: 名フリガナ
                      example: ﾘｮｳｺ
                    departmentCode:
                      type: string
                      description: 所属コード
                      example: 23-1
                    positionCode:
                      type: string
                      description: 役職コード
                      example: '45'
                    jobCode:
                      type: string
                      description: 職種コード
                      example: '67'
                    hireDate:
                      type: string
                      format: date
                      description: 入社年月日（yyyy-mm-dd）
                      example: '1999-01-01'
                    retirementDate:
                      type: string
                      format: date
                      description: 退職年月日（yyyy-mm-dd）
                      example: '2011-12-01'
                    gender:
                      type: string
                      example: female
                      description: 性別（male：男、female：女、unknown：未入力）
                    birthDate:
                      type: string
                      format: date
                      description: 生年月日（yyyy-mm-dd）
                      example: '1970-02-03'
                    mail:
                      type: string
                      description: メールアドレス
                      example: example@example.jp
                    idm:
                      type: string
                      description: 非接触IDm
                      example: 00112233AABBCCDD
        '400':
          description: 無効な値や構文
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getListResponse400'
        '401':
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response401'
        '403':
          description: |
            アクセス権限なし  
            権限はXronosLinkユーザーがアプリから設定可能。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response403'
    post:
      tags:
        - employees
      summary: 社員登録
      description: |
        社員情報をXronosLinkに新規登録します。  
        XronosLinkに保存されている社員データを削除後、POSTされたデータのみを登録します。
      operationId: postEmployees
      security:
        - AccessToken: []
      requestBody:
        description: 社員データ
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                required:
                  - code
                properties:
                  code:
                    type: string
                    description: |
                      社員コード  
                      半角英数のみ許容。
                    example: '1'
                    maxLength: 9
                  id:
                    type: integer
                    description: IDコード
                    example: 1
                    maxLength: 9
                  name:
                    type: string
                    description: |
                      氏名
                    example: 黒ノ巣 良子
                    maxLength: 64
                  lastName:
                    type: string
                    description: 姓
                    example: 黒ノ巣
                    maxLength: 64
                  firstName:
                    type: string
                    description: 名
                    example: 良子
                    maxLength: 64
                  kana:
                    type: string
                    description: |
                      氏名フリガナ  
                      半角カタカナのみ許容。
                    example: ｸﾛﾉｽ ﾘｮｳｺ
                    maxLength: 64
                  lastNameKana:
                    type: string
                    description: |
                      姓フリガナ  
                      半角カタカナのみ許容。
                    example: ｸﾛﾉｽ
                    maxLength: 64
                  firstNameKana:
                    type: string
                    description: |
                      名フリガナ  
                      半角カタカナのみ許容。
                    example: ﾘｮｳｺ
                    maxLength: 64
                  departmentCode:
                    type: string
                    description: |
                      所属コード  
                      最大9階層まで指定できます。  
                      半角英数字と階層のセパレート'-'のみ許容。
                    example: 23-1
                    maxLength: 35
                  positionCode:
                    type: string
                    description: |
                      役職コード  
                      半角数字の整数値のみ許容。
                    example: '45'
                    maxLength: 3
                  jobCode:
                    type: string
                    description: |
                      職種コード  
                      半角数字の整数値のみ許容。
                    example: '67'
                    maxLength: 3
                  hireDate:
                    type: string
                    format: date
                    description: 入社年月日（yyyy-mm-dd）
                    example: '1999-01-01'
                  retirementDate:
                    type: string
                    format: date
                    description: 退職年月日（yyyy-mm-dd）
                    example: '2011-12-01'
                  gender:
                    type: string
                    example: female
                    description: 性別（male：男、female：女、unknown：未入力）
                  birthDate:
                    type: string
                    format: date
                    description: 生年月日（yyyy-mm-dd）
                    example: '1970-02-03'
                  mail:
                    type: string
                    description: メールアドレス
                    example: example@example.jp
                    maxLength: 512
                  idm:
                    type: string
                    description: |
                      非接触IDm  
                      16桁の16進数
                    example: 00112233AABBCCDD
        required: true
      responses:
        '200':
          description: 登録成功
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    code:
                      type: string
                      description: 社員コード
                      example: '1'
                    id:
                      type: integer
                      description: IDコード
                      example: 1
                    name:
                      type: string
                      description: |
                        氏名
                      example: 黒ノ巣 良子
                    lastName:
                      type: string
                      description: 姓
                      example: 黒ノ巣
                    firstName:
                      type: string
                      description: 名
                      example: 良子
                    kana:
                      type: string
                      description: |
                        氏名フリガナ
                      example: ｸﾛﾉｽ ﾘｮｳｺ
                    lastNameKana:
                      type: string
                      description: 姓フリガナ
                      example: ｸﾛﾉｽ
                    firstNameKana:
                      type: string
                      description: 名フリガナ
                      example: ﾘｮｳｺ
                    departmentCode:
                      type: string
                      description: 所属コード
                      example: 23-1
                    positionCode:
                      type: string
                      description: 役職コード
                      example: '45'
                    jobCode:
                      type: string
                      description: 職種コード
                      example: '67'
                    hireDate:
                      type: string
                      format: date
                      description: 入社年月日（yyyy-mm-dd）
                      example: '1999-01-01'
                    retirementDate:
                      type: string
                      format: date
                      description: 退職年月日（yyyy-mm-dd）
                      example: '2011-12-01'
                    gender:
                      type: string
                      example: female
                      description: 性別（male：男、female：女、unknown：未入力）
                    birthDate:
                      type: string
                      format: date
                      description: 生年月日（yyyy-mm-dd）
                      example: '1970-02-03'
                    mail:
                      type: string
                      description: メールアドレス
                      example: example@example.jp
                    idm:
                      type: string
                      description: 非接触IDm
                      example: 00112233AABBCCDD
        '400':
          description: 無効な値や構文
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/postResponse400'
        '401':
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response401'
        '403':
          description: |
            アクセス権限なし  
            権限はXronosLinkユーザーがアプリから設定可能。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response403'
  /employees/{employeeCode}:
    get:
      tags:
        - employees
      summary: 社員取得
      description: |
        社員コードに紐づく社員を取得します。  
        XronosLinkにデータがない場合はエラーを返します。
      operationId: getEmployee
      security:
        - AccessToken: []
      parameters:
        - name: employeeCode
          in: path
          description: 社員コード
          required: true
          schema:
            type: string
      responses:
        '200':
          description: 取得成功
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: 社員コード
                    example: '1'
                  id:
                    type: integer
                    description: IDコード
                    example: 1
                  name:
                    type: string
                    description: |
                      氏名
                    example: 黒ノ巣 良子
                  lastName:
                    type: string
                    description: 姓
                    example: 黒ノ巣
                  firstName:
                    type: string
                    description: 名
                    example: 良子
                  kana:
                    type: string
                    description: |
                      氏名フリガナ
                    example: ｸﾛﾉｽ ﾘｮｳｺ
                  lastNameKana:
                    type: string
                    description: 姓フリガナ
                    example: ｸﾛﾉｽ
                  firstNameKana:
                    type: string
                    description: 名フリガナ
                    example: ﾘｮｳｺ
                  departmentCode:
                    type: string
                    description: 所属コード
                    example: 23-1
                  positionCode:
                    type: string
                    description: 役職コード
                    example: '45'
                  jobCode:
                    type: string
                    description: 職種コード
                    example: '67'
                  hireDate:
                    type: string
                    format: date
                    description: 入社年月日（yyyy-mm-dd）
                    example: '1999-01-01'
                  retirementDate:
                    type: string
                    format: date
                    description: 退職年月日（yyyy-mm-dd）
                    example: '2011-12-01'
                  gender:
                    type: string
                    example: female
                    description: 性別（male：男、female：女、unknown：未入力）
                  birthDate:
                    type: string
                    format: date
                    description: 生年月日（yyyy-mm-dd）
                    example: '1970-02-03'
                  mail:
                    type: string
                    description: メールアドレス
                    example: example@example.jp
                  idm:
                    type: string
                    description: 非接触IDm
                    example: 00112233AABBCCDD
        '400':
          description: 無効な値や構文
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getDataResponse400'
        '401':
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response401'
        '403':
          description: |
            アクセス権限なし  
            権限はXronosLinkユーザーがアプリから設定可能。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response403'
        '404':
          description: データなし
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response404'
  /departments:
    get:
      tags:
        - departments
      summary: 所属一覧取得
      description: XronosLinkに保存されている所属の一覧を取得します。
      operationId: getDepartments
      security:
        - AccessToken: []
      parameters:
        - in: query
          name: page
          description: 取得するページ番号（1以上の整数値）（未指定は1）
          schema:
            type: integer
        - in: query
          name: per
          description: 取得するページ当たりの件数（1～100の整数値）（未指定は20）
          schema:
            type: integer
      responses:
        '200':
          description: 取得成功
          content:
            application/json:
              schema:
                type: array
                description: 所属一覧
                items:
                  type: object
                  properties:
                    code:
                      type: string
                      description: 所属コード
                      example: 23-1
                    name:
                      type: string
                      description: 所属名
                      example: 本社営業部
                    shortName:
                      type: string
                      description: 所属名略称
                      example: 本社営業
        '400':
          description: 無効な値や構文
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getListResponse400'
        '401':
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response401'
        '403':
          description: |
            アクセス権限なし  
            権限はXronosLinkユーザーがアプリから設定可能。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response403'
    post:
      tags:
        - departments
      summary: 所属登録
      description: |
        所属をXronosLinkに新規登録します。  
        XronosLinkに保存されている所属データを削除後、POSTされたデータのみを登録します。
      operationId: postDepartments
      security:
        - AccessToken: []
      requestBody:
        description: 所属情報
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                required:
                  - code
                properties:
                  code:
                    type: string
                    description: |
                      所属コード  
                      最大9階層まで指定できます。  
                      半角英数字と階層のセパレート'-'のみ許容。
                    example: 23-1
                    maxLength: 35
                  name:
                    type: string
                    description: 所属名
                    example: 本社営業部
                    maxLength: 128
                  shortName:
                    type: string
                    description: 所属名略称
                    example: 本社営業
                    maxLength: 128
        required: true
      responses:
        '200':
          description: 登録成功
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    code:
                      type: string
                      description: 所属コード
                      example: 23-1
                    name:
                      type: string
                      description: 所属名
                      example: 本社営業部
                    shortName:
                      type: string
                      description: 所属名略称
                      example: 本社営業
        '400':
          description: 無効な値や構文
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/postResponse400'
        '401':
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response401'
        '403':
          description: |
            アクセス権限なし  
            権限はXronosLinkユーザーがアプリから設定可能。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response403'
  /departments/{departmentCode}:
    get:
      tags:
        - departments
      summary: 所属取得
      description: |
        所属コードに紐づく所属を取得します。  
        XronosLinkにデータがない場合はエラーを返します。
      operationId: getDepartment
      security:
        - AccessToken: []
      parameters:
        - name: departmentCode
          in: path
          description: 所属コード
          required: true
          schema:
            type: string
      responses:
        '200':
          description: 取得成功
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: 所属コード
                    example: 23-1
                  name:
                    type: string
                    description: 所属名
                    example: 本社営業部
                  shortName:
                    type: string
                    description: 所属名略称
                    example: 本社営業
        '400':
          description: 無効な値や構文
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getDataResponse400'
        '401':
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response401'
        '403':
          description: |
            アクセス権限なし  
            権限はXronosLinkユーザーがアプリから設定可能。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response403'
        '404':
          description: データなし
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response404'
  /positions:
    get:
      tags:
        - positions
      summary: 役職一覧取得
      description: XronosLinkに保存されている役職の一覧を取得します。
      operationId: getPositions
      security:
        - AccessToken: []
      parameters:
        - in: query
          name: page
          description: 取得するページ番号（1以上の整数値）（未指定は1）
          schema:
            type: integer
        - in: query
          name: per
          description: 取得するページ当たりの件数（1～100の整数値）（未指定は20）
          schema:
            type: integer
      responses:
        '200':
          description: 取得成功
          content:
            application/json:
              schema:
                type: array
                description: 役職一覧
                items:
                  type: object
                  properties:
                    code:
                      type: string
                      description: 役職コード
                      example: '45'
                    name:
                      type: string
                      description: 役職名
                      example: 主任
        '400':
          description: 無効な値や構文
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getListResponse400'
        '401':
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response401'
        '403':
          description: |
            アクセス権限なし  
            権限はXronosLinkユーザーがアプリから設定可能。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response403'
    post:
      tags:
        - positions
      summary: 役職登録
      description: |
        役職をXronosLinkに新規登録します。  
        XronosLinkに保存されている役職データを削除後、POSTされたデータのみを登録します。
      operationId: postPositions
      security:
        - AccessToken: []
      requestBody:
        description: 役職情報
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                required:
                  - code
                properties:
                  code:
                    type: string
                    description: |
                      役職コード  
                      半角数字の整数値のみ許容。
                    example: '45'
                    maxLength: 3
                  name:
                    type: string
                    description: 役職名
                    example: 主任
                    maxLength: 128
        required: true
      responses:
        '200':
          description: 登録成功
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    code:
                      type: string
                      description: 役職コード
                      example: '45'
                    name:
                      type: string
                      description: 役職名
                      example: 主任
        '400':
          description: 無効な値や構文
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/postResponse400'
        '401':
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response401'
        '403':
          description: |
            アクセス権限なし
            権限はXronosLinkユーザーがアプリから設定可能。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response403'
  /positions/{positionCode}:
    get:
      tags:
        - positions
      summary: 役職取得
      description: |
        役職コードに紐づく役職を取得します。  
        XronosLinkにデータがない場合はエラーを返します。
      operationId: getPosition
      security:
        - AccessToken: []
      parameters:
        - name: positionCode
          in: path
          description: 役職コード
          required: true
          schema:
            type: string
      responses:
        '200':
          description: 取得成功
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: 役職コード
                    example: '45'
                  name:
                    type: string
                    description: 役職名
                    example: 主任
        '400':
          description: 無効な値や構文
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getDataResponse400'
        '401':
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response401'
        '403':
          description: |
            アクセス権限なし  
            権限はXronosLinkユーザーがアプリから設定可能。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response403'
        '404':
          description: データなし
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response404'
  /jobs:
    get:
      tags:
        - jobs
      summary: 職種一覧取得
      description: XronosLinkに保存されている職種の一覧を取得します。
      operationId: getJobs
      security:
        - AccessToken: []
      parameters:
        - in: query
          name: page
          description: 取得するページ番号（1以上の整数値）（未指定は1）
          schema:
            type: integer
        - in: query
          name: per
          description: 取得するページ当たりの件数（1～100の整数値）（未指定は20）
          schema:
            type: integer
      responses:
        '200':
          description: 取得成功
          content:
            application/json:
              schema:
                type: array
                description: 職種一覧
                items:
                  type: object
                  properties:
                    code:
                      type: string
                      description: 職種コード
                      example: '67'
                    name:
                      type: string
                      description: 職種名
                      example: 営業業務
        '400':
          description: 無効な値や構文
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getListResponse400'
        '401':
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response401'
        '403':
          description: |
            アクセス権限なし
            権限はXronosLinkユーザーがアプリから設定可能。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response403'
    post:
      tags:
        - jobs
      summary: 職種登録
      description: |
        職種をXronosLinkに新規登録します。  
        XronosLinkに保存されている職種データを削除後、POSTされたデータのみを登録します。
      operationId: postJobs
      security:
        - AccessToken: []
      requestBody:
        description: 職種情報
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                required:
                  - code
                properties:
                  code:
                    type: string
                    description: |
                      職種コード  
                      半角数字の整数値のみ許容。
                    example: '67'
                    maxLength: 3
                  name:
                    type: string
                    description: 職種名
                    example: 営業業務
                    maxLength: 128
        required: true
      responses:
        '200':
          description: 登録成功
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    code:
                      type: string
                      description: 職種コード
                      example: '67'
                    name:
                      type: string
                      description: 職種名
                      example: 営業業務
        '400':
          description: 無効な値や構文
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/postResponse400'
        '401':
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response401'
        '403':
          description: |
            アクセス権限なし
            権限はXronosLinkユーザーがアプリから設定可能。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response403'
  /jobs/{jobCode}:
    get:
      tags:
        - jobs
      summary: 職種取得
      description: |
        職種コードに紐づく職種を取得します。  
        XronosLinkにデータがない場合はエラーを返します。
      operationId: getJob
      security:
        - AccessToken: []
      parameters:
        - name: jobCode
          in: path
          description: 職種コード
          required: true
          schema:
            type: string
      responses:
        '200':
          description: 取得成功
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: 職種コード
                    example: '67'
                  name:
                    type: string
                    description: 職種名
                    example: 営業業務
        '400':
          description: 無効な値や構文
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getDataResponse400'
        '401':
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response401'
        '403':
          description: |
            アクセス権限なし
            権限はXronosLinkユーザーがアプリから設定可能。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response403'
        '404':
          description: データなし
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response404'
  /salaries/processing-months:
    get:
      tags:
        - salaries
      summary: 給与移行データ処理月・管理領域一覧取得
      description: 給与移行データ（給与算出に利用する勤務データ）の処理月・管理領域の一覧を取得します。
      operationId: getSalariesProcessingMonths
      security:
        - AccessToken: []
      parameters:
        - in: query
          name: year
          description: |
            処理月（年）  
            未指定の場合は全件を取得します。
          schema:
            type: integer
        - in: query
          name: month
          description: |
            処理月（月）  
            処理月（年）が指定されていない場合は無効になります。
          schema:
            type: integer
        - in: query
          name: page
          description: 取得するページ番号（1以上の整数値）（未指定は1）
          schema:
            type: integer
        - in: query
          name: per
          description: |
            取得するページ当たりの件数（1～100の整数値）（未指定は20）  
            year、month、areasを含むオブジェクトを1件とします。
          schema:
            type: integer
      responses:
        '200':
          description: 取得成功
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    year:
                      type: integer
                      description: 処理月（年）
                      example: 2021
                    month:
                      type: integer
                      description: 処理月（月）
                      example: 11
                    areas:
                      type: array
                      description: 管理領域
                      items:
                        type: object
                        properties:
                          code:
                            type: integer
                            description: 管理領域コード
                            example: 0
                          name:
                            type: string
                            description: 管理領域名
                            example: 本社
                          startDate:
                            type: string
                            format: date
                            description: 集計開始日（yyyy-mm-dd）
                            example: '2021-11-01'
                          endDate:
                            type: string
                            format: date
                            description: 集計終了日（yyyy-mm-dd）
                            example: '2021-11-30'
                          description:
                            type: string
                            description: 処理月の表示用文言
                            example: 2021年11月（11/01～11/30）
        '400':
          description: 無効な値や構文
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getSalaryResponse400'
        '401':
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response401'
        '403':
          description: |
            アクセス権限なし  
            権限はXronosLinkユーザーがアプリから設定可能。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response403'
  /salaries/attendances/{year}/{month}/{areaCode}:
    get:
      tags:
        - salaries
      summary: 給与移行データ取得
      description: |
        処理月、管理領域コードに紐づく給与移行データを取得します。  
        ヘッダ項目とデータが取得できます。
      operationId: getSalariesAttendancesYearMonthAreas
      security:
        - AccessToken: []
      parameters:
        - in: path
          name: year
          description: |
            処理月（年）：YYYY  
            例：2021
          required: true
          schema:
            type: integer
        - in: path
          name: month
          description: |
            処理月（月）：MM  
            例：11
          required: true
          schema:
            type: integer
        - in: path
          name: areaCode
          description: 管理領域コード
          required: true
          schema:
            type: integer
        - in: query
          name: page
          description: 取得するページ番号（1以上の整数値）（未指定は1）
          schema:
            type: integer
        - in: query
          name: per
          description: |
            取得するページ当たりの件数（1～100の整数値）（未指定は20）  
            dataの配列を1件とします。
          schema:
            type: integer
      responses:
        '200':
          description: 取得成功
          content:
            application/json:
              schema:
                type: object
                properties:
                  year:
                    type: integer
                    description: 処理月（年）
                    example: 2021
                  month:
                    type: integer
                    description: 処理月（月）
                    example: 11
                  areas:
                    type: object
                    description: 管理領域
                    properties:
                      code:
                        type: integer
                        description: 管理領域コード
                        example: 0
                      name:
                        type: string
                        description: 管理領域名
                        example: 本社
                      startDate:
                        type: string
                        format: date
                        description: 集計開始日（yyyy-mm-dd）
                        example: '2021-11-01'
                      endDate:
                        type: string
                        format: date
                        description: 集計終了日（yyyy-mm-dd）
                        example: '2021-11-30'
                      description:
                        type: string
                        description: 処理月の表示用文言
                        example: 2021年11月（11/01～11/30）
                  header:
                    type: array
                    description: ヘッダ項目
                    example:
                      - 社員CD
                      - 氏名
                      - 勤務
                      - 欠勤
                      - 有給
                      - 特給
                      - 傷病
                      - 出勤時間
                      - 残業普通
                      - 深夜
                      - 早出
                      - 公出
                      - 公深
                      - 法出
                      - 法深
                      - 遅刻早退時間
                    items:
                      type: string
                  data:
                    type: array
                    description: 社員分の給与移行データ一覧
                    items:
                      type: array
                      description: 各社員の給与移行データ
                      example:
                        - '1'
                        - 黒ノ巣 良子
                        - '20'
                        - '0'
                        - '1'
                        - '0'
                        - '0'
                        - '160'
                        - '10'
                        - '2'
                        - '4'
                        - '0'
                        - '0'
                        - '0'
                        - '0'
                        - '0'
                      items:
                        type: string
        '400':
          description: 無効な値や構文
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getDataResponse400'
        '401':
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response401'
        '403':
          description: |
            アクセス権限なし
            権限はXronosLinkユーザーがアプリから設定可能。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response403'
        '404':
          description: データなし
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response404'
components:
  securitySchemes:
    AccessToken:
      type: apiKey
      in: header
      name: X-Xronos-Access-Token
  schemas:
    getListResponse400:
      type: object
      properties:
        errors:
          type: array
          description: エラー情報
          items:
            $ref: '#/components/schemas/errorStructure'
          example:
            - code: invalid_value
              message: pageは1以上、perは1～100が指定範囲です。
    getDataResponse400:
      type: object
      properties:
        errors:
          type: array
          description: エラー情報
          items:
            $ref: '#/components/schemas/errorStructure'
          example:
            - code: no_required
              message: 必須パラメータがありません。
    getSalaryResponse400:
      type: object
      properties:
        errors:
          type: array
          description: エラー情報
          items:
            $ref: '#/components/schemas/errorStructure'
          example:
            - code: invalid_value
              message: pageは1以上、perは1～100が指定範囲です。
            - code: invalid_value
              message: yearが指定されていません。
    postResponse400:
      type: object
      properties:
        errors:
          type: array
          description: エラー情報
          items:
            $ref: '#/components/schemas/errorStructure'
          example:
            - code: invalid_value
              message: パラメータに無効な値が含まれています。
            - code: invalid_syntax
              message: リクエストデータの形式が不正です。
            - code: no_required
              message: 必須パラメータがありません。
            - code: duplicate_value
              message: データが重複しています。
    Response401:
      type: object
      properties:
        errors:
          type: array
          description: エラー情報
          items:
            $ref: '#/components/schemas/errorStructure'
          example:
            - code: invalid_access_token
              message: アクセストークンが無効です。
    Response403:
      type: object
      properties:
        errors:
          type: array
          description: エラー情報
          items:
            $ref: '#/components/schemas/errorStructure'
          example:
            - code: no_permission
              message: アクセスが許可されていません。
            - code: no_permission
              message: 参照/更新権限がありません。
    Response404:
      type: object
      properties:
        errors:
          type: array
          description: エラー情報
          items:
            $ref: '#/components/schemas/errorStructure'
          example:
            - code: no_resource
              message: データがありません。
    errorStructure:
      type: object
      properties:
        code:
          type: string
          description: エラーコード
        message:
          type: string
          description: エラーメッセージ
