{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/edinetdb-jp/json-schema/edinetdb-jp-buyback-program-schema.json",
  "title": "BuybackProgram",
  "description": "/companies/{code}/buyback-programs が返す自己株式取得プログラム（2026-07-24 追加）。\n1件 = 1決議(プログラム) × docID。同一 docID 内で株主総会決議と取締役会決議は別プログラムとして扱われ、\nprogram_seq は resolutionKind ごとに独立採番される（同じ programSeq が異なる resolutionKind で\n重複しうる — 一意キーは (edinetCode, docID, resolutionKind, programSeq)）。\n金額系フィールドは native（開示された単位のまま）と yen（円換算、unitRaw 検出成功時のみ非null）の\n2系統を常にペアで持つ。誤った値より NULL を優先する方針のため、一意に確定できない値は NULL。\n",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/edinetdb-jp-openapi.json#/components/schemas/BuybackProgram",
  "properties": {
    "acquisitionPeriodEnd": {
      "description": "取得期間終了日",
      "format": "date",
      "type": [
        "string",
        "null"
      ]
    },
    "acquisitionPeriodStart": {
      "description": "取得期間開始日（和暦→西暦変換。パース失敗時は null、原文は acquisitionPeriodText に残る）",
      "format": "date",
      "type": [
        "string",
        "null"
      ]
    },
    "acquisitionPeriodText": {
      "description": "取得期間の原文（和暦・年省略等の表記ゆれをそのまま保持）",
      "type": [
        "string",
        "null"
      ]
    },
    "consumptionRatePctAmount": {
      "description": "消化率（金額ベース）",
      "type": [
        "number",
        "null"
      ]
    },
    "consumptionRatePctShares": {
      "description": "消化率（株数ベース）= 100 - unexercisedPctFilingShares（提出日値優先、無ければfy_end値）",
      "type": [
        "number",
        "null"
      ]
    },
    "currentPeriodAmountNative": {
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "currentPeriodAmountYen": {
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "currentPeriodShares": {
      "description": "当期間（事業年度末日〜有報提出日）における取得自己株式数",
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "currentYearAmountNative": {
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "currentYearAmountYen": {
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "currentYearShares": {
      "description": "当事業年度における取得自己株式数（株）",
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "docID": {
      "description": "出所の有価証券報告書 docID",
      "type": "string"
    },
    "edinetCode": {
      "description": "提出会社のEDINETコード",
      "type": "string"
    },
    "extractedAt": {
      "description": "抽出処理時刻",
      "format": "date-time",
      "type": [
        "string",
        "null"
      ]
    },
    "extractionStatus": {
      "description": "プログラム単位の抽出品質。ok=主要フィールド抽出成功、partial=一部フィールドのみ、failed=ほぼ全滅（それでも行としては投入される）",
      "enum": [
        "ok",
        "partial",
        "failed"
      ],
      "type": "string"
    },
    "extractionWarnings": {
      "description": "行単位の解決方法・警告（例 'unit_sanity_failed' — unitRaw ヘッダーの表記と表内の値の桁が食い違っていたため、疑わしい *AmountYen をNULL化した場合。*AmountNative は影響を受けない。2026-07-25 追加）",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "fiscalYear": {
      "description": "有報の対象事業年度。提出日から periodStart を逆算できなかった場合は null（全体の約5.5%）",
      "type": [
        "integer",
        "null"
      ]
    },
    "limitAmountNative": {
      "description": "決議による取得価額総額の上限（unitRaw単位のまま、円換算前）",
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "limitAmountYen": {
      "description": "limitAmountNative の円換算。unitRaw を検出できた場合のみ非null",
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "limitIsCeiling": {
      "description": "原文に「（上限）」等の上限明示があったか",
      "type": [
        "boolean",
        "null"
      ]
    },
    "limitShares": {
      "description": "決議による取得株数の上限",
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "okFieldCount": {
      "description": "7フィールド（限度枠除く）のうち非nullペアの数。品質の目安",
      "type": [
        "integer",
        "null"
      ]
    },
    "priorYearAmountNative": {
      "description": "priorYearShares に対応する取得総額（unitRaw単位のまま）",
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "priorYearAmountYen": {
      "description": "priorYearAmountNative の円換算",
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "priorYearShares": {
      "description": "当事業年度前における取得自己株式数（株）",
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "programSeq": {
      "description": "同一 docID・同一 resolutionKind 内でのプログラム連番（0始まり、テキスト内の出現順）。resolutionKind をまたいだ一意性は保証しない",
      "type": "integer"
    },
    "remainingAmountNative": {
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "remainingAmountYen": {
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "remainingShares": {
      "description": "当事業年度末日時点の残存決議（授権）株式数",
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "resolutionHeaderText": {
      "description": "決議日を含む見出し原文（トレーサビリティ用）",
      "type": [
        "string",
        "null"
      ]
    },
    "resolutionKind": {
      "description": "shareholders_meeting=株主総会決議、board=取締役会決議",
      "enum": [
        "shareholders_meeting",
        "board"
      ],
      "type": "string"
    },
    "source": {
      "description": "抽出方式識別子（例 'regex_v1'）",
      "type": "string"
    },
    "totalAcquiredAmountNative": {
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "totalAcquiredAmountYen": {
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "totalAcquiredShares": {
      "description": "priorYearShares + currentYearShares + currentPeriodShares の合計（非null項目のみ加算）",
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "unexercisedPctFilingAmount": {
      "type": [
        "number",
        "null"
      ]
    },
    "unexercisedPctFilingShares": {
      "description": "提出日現在の未行使割合（株数ベース、%）",
      "type": [
        "number",
        "null"
      ]
    },
    "unexercisedPctFyEndAmount": {
      "description": "同上、金額ベース",
      "type": [
        "number",
        "null"
      ]
    },
    "unexercisedPctFyEndShares": {
      "description": "当事業年度末日現在の未行使割合（株数ベース、% = 0-100スケール）",
      "type": [
        "number",
        "null"
      ]
    },
    "unitRaw": {
      "description": "開示された金額単位。検出できない場合 null（この場合 *AmountYen 系は全て null になるが *AmountNative は保持される）",
      "enum": [
        "円",
        "千円",
        "百万円",
        "億円"
      ],
      "type": [
        "string",
        "null"
      ]
    }
  },
  "type": "object"
}