{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/folio/main/json-schema/folio-authority-source-file-dto-collection-schema.json",
  "title": "authoritySourceFileDtoCollection",
  "description": "A collection of authority source files",
  "x-generated": "2026-10-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/folio-mod-entities-links-openapi.yml#/components/schemas/authoritySourceFileDtoCollection",
  "properties": {
    "authoritySourceFiles": {
      "description": "List of authority source files",
      "items": {
        "$ref": "#/$defs/authoritySourceFileDto"
      },
      "type": "array"
    },
    "totalRecords": {
      "description": "Total amount of records",
      "type": "integer"
    }
  },
  "required": [
    "totalRecords"
  ],
  "type": "object",
  "$defs": {
    "authoritySourceFileDto": {
      "description": "An Authority source file",
      "properties": {
        "id": {
          "description": "Unique ID of the Authority source file; a UUID",
          "format": "uuid",
          "type": "string",
          "x-fqm-essential": true,
          "x-fqm-visibility": "hidden",
          "x-fqm-value-getter": ":sourceAlias.id"
        },
        "name": {
          "description": "Authority source file name",
          "type": "string",
          "x-fqm-essential": true,
          "x-fqm-id-column-name": "id",
          "x-fqm-visible-by-default": true,
          "x-fqm-value-getter": ":sourceAlias.name",
          "x-fqm-value-source-api": {
            "path": "authority-source-files",
            "valueJsonPath": "$.authoritySourceFiles.*.id",
            "labelJsonPath": "$.authoritySourceFiles.*.name"
          }
        },
        "codes": {
          "description": "List of identifying prefix",
          "items": {
            "description": "identifying prefix, i.e. 'n', 'D', 'fst'",
            "type": "string"
          },
          "type": "array",
          "x-fqm-ignore": true
        },
        "type": {
          "description": "Type of authority records stored in source file",
          "type": "string",
          "x-fqm-ignore": true
        },
        "baseUrl": {
          "description": "Base URL of the source file origin",
          "format": "url",
          "type": "string",
          "x-fqm-ignore": true
        },
        "source": {
          "description": "label indicating where the authority source file entry originates from, i.e. 'folio' or 'local'",
          "enum": [
            "folio",
            "local"
          ],
          "type": "string",
          "x-fqm-ignore": true
        },
        "selectable": {
          "type": "boolean",
          "x-fqm-ignore": true
        },
        "hridManagement": {
          "$ref": "#/$defs/authoritySourceFileDto_hridManagement"
        },
        "_version": {
          "description": "Record version for optimistic locking",
          "type": "integer",
          "x-fqm-ignore": true
        },
        "metadata": {
          "$ref": "#/$defs/metadata"
        }
      },
      "required": [
        "codes",
        "name",
        "source"
      ],
      "type": "object"
    },
    "authoritySourceFileDto_hridManagement": {
      "description": "Identifies HRID management properties",
      "properties": {
        "startNumber": {
          "type": "integer"
        }
      },
      "type": "object",
      "x-fqm-ignore": true
    },
    "metadata": {
      "description": "Creater, updater, creation date, last updated date",
      "properties": {
        "createdDate": {
          "description": "Date and time when the record was created",
          "format": "date-time",
          "type": "string",
          "x-fqm-value-getter": ":sourceAlias.created_date",
          "x-fqm-value-function": "(:value)::timestamp"
        },
        "createdByUserId": {
          "description": "ID of the user who created the record (when available)",
          "format": "uuid",
          "type": "string",
          "x-fqm-value-getter": ":sourceAlias.created_by_user_id"
        },
        "updatedDate": {
          "description": "Date and time when the record was last updated",
          "format": "date-time",
          "type": "string",
          "x-fqm-value-getter": ":sourceAlias.updated_date",
          "x-fqm-value-function": "(:value)::timestamp"
        },
        "updatedByUserId": {
          "description": "ID of the user who last updated the record (when available)",
          "format": "uuid",
          "type": "string",
          "x-fqm-value-getter": ":sourceAlias.updated_by_user_id"
        }
      },
      "type": "object"
    }
  }
}