---
title: 日付・タイムゾーン・欠損値
sidebar:
  order: 5
---

## 日付とタイムゾーン

- 日付は `YYYY-MM-DD`、日時は ISO 8601 で返します
- 開示日時・営業日はすべて **JST（日本標準時）** 基準です

## 欠損値の意味

`null` には複数の意味があります。

| ケース | 例 |
| --- | --- |
| 会計基準上存在しない | IFRS 企業の経常利益 |
| 企業が非開示 | 一部のセグメント情報 |
| 収録期間外 | ライセンス上提供できない期間 |
| 未到来・未確定 | 未発表の決算 |

## 空配列の意味（reason フィールド）

リクエストは成功したがデータが 0 件の場合、レスポンスは 404 ではなく **200 + 空配列**です。このとき、なぜ空かをトップレベルの `reason` フィールドで返します（データが 1 件以上ある場合は `null`）。

```json
{
  "segments": [],
  "reason": {
    "code": "no_results",
    "message": "No segment disclosure is currently recorded for this organization within the most recent 20 fiscal years. Companies operating in a single segment do not disclose segment information. Values sourced from TDnet become available 24 hours after disclosure, so very recent disclosures may appear later."
  }
}
```

`reason.code` は現在 `no_results` の 1 値です。**`message` は人間向けの補足なので、分岐は必ず `code` で行ってください**（`message` の文面は予告なく改善されることがあります）。

| code | 意味 | 対処 |
| --- | --- | --- |
| `no_results` | このリクエストに該当するデータが 0 件。**収録が無い場合**と**指定した条件に合致しない場合**の両方を含みます（両者は現在の実装では区別できないため、機械可読な値としては区別していません） | 通常はリトライ不要。ただし TDnet 由来のデータは開示から 24 時間は未収録のため、直近開示分は後から追加されることがあります（下記「配信制約による欠損」を参照）。条件を指定していた場合は、`message` に実際に適用された条件が入るので参考にしてください |

`message` は適用された条件（`fiscal_year` / `period` / `as_of` / `from` / `to` / `cursor` 等）を事実として述べますが、**「その条件を外せば取得できる」ことは意味しません**。たとえばセグメントを 1 件も開示していない企業では、`fiscal_year` を外しても 0 件のままです。

一時的にデータを解決できずサーバー側が回答を返せない場合は、200 ではなく **`503` + `{"error": {"code": "data_unavailable", ...}}`** を返します（指数バックオフで再試行してください）。「空である」ことと「答えを出せない」ことがステータスコードで区別できます。

対象は `/segments` `/financials` `/indicators` `/dividends` `/shareholders` `/valuations` `/peers` `/securities/{code}/prices` `/securities/{code}/officers` `/persons/{id}/appointments` `/persons/{id}/compensation-history` `/persons/{id}/holdings` `/rankings/{metric}` です。

`reason` が付かないエンドポイントと、その理由:

- `/securities` の一覧・`/screening` — 検索系。「条件に合致する銘柄が 0 件」は結果そのものであり、理由の説明を要しません
- `/persons/{id}`（プロファイル） — 氏名・生年月日という本体を返すため、`current_appointments` が空でもレスポンス自体は空ではありません。全て退任済みの人物がこれに当たり、過去の就任先は `/persons/{id}/appointments` で取得できます
- `/organizations/{edinet_code}` — `listed_security_codes` は必ず 1 件返ります（上場していない法人は `404`）
- `/disclosures/{doc_id}`・`/disclosures/{doc_id}/sections/{section}` — 該当セクションが無い場合は `available_sections` で取得可能なセクションを案内します
- `/industries`・`/screening/fields` — 固定のマスタ・カタログで空になりません
- `/securities/{code}/jsf-margin-daily` — 貸借取引の残高が 1 件も無い銘柄（貸借銘柄でないもの）は `404` を返すため、`days[]` が空の `200` は返りません。上場廃止などで収録が古い時点で止まっている銘柄は、会員区分の下限日より新しい行が無くなるため同じく `404` になります。`reverse[]` と `other_exchange_reverse[]` は**逆日歩が発生した日だけ**を持つ配列なので、空は「その期間に逆日歩が発生しなかった」という結果そのものです

## 配信制約による欠損

適時開示（TDnet）由来のデータは、**開示から 24 時間以内は返しません**。同じ企業の同じ項目でも、IRBANK の Web サイトと API とで表示が異なる場合があります。詳細は[データカタログ](/data-catalog)を参照してください。
