{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/folio/main/json-schema/folio-report-cost-schema.json",
  "title": "reportCost",
  "description": "Cost report schema",
  "x-generated": "2026-10-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/folio-mod-eusage-reports-eusage-reports-1-0-openapi.yml#/components/schemas/reportCost",
  "type": "object",
  "properties": {
    "accessCountPeriods": {
      "description": "List of reporting periods, either a list of months or a list of years, for example [\"2020-03\", \"2020-04\", \"2020-05\"]",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "amountEncumberedTotal": {
      "description": "This number is sum of all encumbered amounts in the total access period",
      "type": "number"
    },
    "amountPaidTotal": {
      "description": "This number is sum of all paid amounts in the total access period",
      "type": "number"
    },
    "costByPeriod": {
      "type": "array",
      "description": "Total cost for each period",
      "items": {
        "type": [
          "number",
          "null"
        ]
      }
    },
    "items": {
      "description": "List of items, with access data per item",
      "type": "array",
      "items": {
        "$ref": "#/$defs/reportCostRow"
      }
    },
    "titleCountByPeriod": {
      "type": "array",
      "description": "Title count per period, total for all items",
      "items": {
        "type": [
          "integer",
          "null"
        ]
      }
    },
    "totalItemRequestsByPeriod": {
      "type": "array",
      "description": "Total access count per period",
      "items": {
        "type": [
          "integer",
          "null"
        ]
      }
    },
    "totalItemCostsPerRequestsByPeriod": {
      "type": "array",
      "description": "Cost per period, total for all items",
      "items": {
        "type": [
          "number",
          "null"
        ]
      }
    },
    "uniqueItemRequestsByPeriod": {
      "type": "array",
      "description": "Unique access count per period",
      "items": {
        "type": [
          "integer",
          "null"
        ]
      }
    },
    "uniqueItemCostsPerRequestsByPeriod": {
      "type": "array",
      "description": "Unique access count per period, total for all items",
      "items": {
        "type": [
          "number",
          "null"
        ]
      }
    },
    "execution": {
      "description": "Information about execution, such as various timings",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "$defs": {
    "reportCostRow": {
      "description": "Single row of cost report data",
      "type": "object",
      "properties": {
        "kbId": {
          "type": "string",
          "description": "KB identifier"
        },
        "title": {
          "type": "string",
          "description": "Title if the item"
        },
        "derivedTitle": {
          "type": "boolean",
          "description": "Indicate whether the resource is derived from an agreement line"
        },
        "printISSN": {
          "type": "string",
          "description": "ISSN for print instance"
        },
        "onlineISSN": {
          "type": "string",
          "description": "ISSN for online instance"
        },
        "ISBN": {
          "type": "string",
          "description": "ISBN for instance"
        },
        "orderType": {
          "type": "string",
          "enum": [
            "One-Time",
            "Ongoing"
          ],
          "description": "Order type from agreement - defaults to Ongoing"
        },
        "poLineIDs": {
          "type": "array",
          "description": "PO line IDs",
          "items": {
            "type": "string",
            "description": "PO line ID"
          }
        },
        "invoiceNumbers": {
          "type": "array",
          "description": "Invoice numbers",
          "items": {
            "type": "string",
            "description": "Invoice number"
          }
        },
        "fiscalDateStart": {
          "type": "string",
          "description": "Fiscal date start, YYYY-MM-DD"
        },
        "fiscalDateEnd": {
          "type": "string",
          "description": "Fiscal date end, YYYY-MM-DD"
        },
        "subscriptionDateStart": {
          "type": "string",
          "description": "Subscription date start, YYYY-MM-DD"
        },
        "subscriptionDateEnd": {
          "type": "string",
          "description": "Subscription date end, YYYY-MM-DD"
        },
        "publicationYear": {
          "type": "string",
          "description": "Publication year .. or range (eg 2000 for 1Y, or 2000-2001 for 2Y)"
        },
        "amountEncumbered": {
          "type": "number",
          "description": "Encumbered amount for PO lines"
        },
        "amountPaid": {
          "description": "Paid amount for invoices",
          "type": "number"
        },
        "totalItemRequests": {
          "description": "total item requests",
          "type": "integer"
        },
        "uniqueItemRequests": {
          "description": "unique item requests",
          "type": "integer"
        },
        "costPerTotalRequest": {
          "type": "number",
          "description": "Cost per total request for invoices"
        },
        "costPerUniqueRequest": {
          "type": "number",
          "description": "Cost per unique request for invoices"
        }
      },
      "additionalProperties": false
    }
  }
}