FOLIO · Schema
User Schema
A user
CompanyLibrariesLibrary Services PlatformOpen SourceMicroservicesEducation
Properties
| Name | Type | Description |
|---|---|---|
| username | string | A unique name belonging to a user. Typically used for login |
| id | string | A globally unique (UUID) identifier for the user |
| externalSystemId | string | An ID that corresponds to an external authority |
| barcode | string | The library barcode for this user |
| active | boolean | A flag to determine if a user can log in, take out loans, etc. |
| blocked | boolean | A flag to determine if the user has manual blocks |
| type | string | The class of user |
| patronGroup | string | A UUID corresponding to the group the user belongs to |
| patronGroupName | string | A group name corresponding to the group the user belongs to |
| departments | array | A UUIDs corresponding to the departments the user belongs to |
| meta | object | Deprecated |
| proxyFor | array | Deprecated |
| personal | object | Personal information about the user |
| enrollmentDate | string | The date in which the user joined the organization |
| expirationDate | string | The date for when the user becomes inactive |
| createdDate | string | Deprecated |
| updatedDate | string | Deprecated |
| metadata | object | |
| tags | object | |
| customFields | object | Object that contains custom field |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/folio/main/json-schema/folio-userdata-schema.json",
"title": "User Schema",
"description": "A user",
"x-generated": "2026-10-09",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/folio-edge-users-openapi.yml#/components/schemas/userdata",
"type": "object",
"properties": {
"username": {
"description": "A unique name belonging to a user. Typically used for login",
"type": "string"
},
"id": {
"description": "A globally unique (UUID) identifier for the user",
"type": "string"
},
"externalSystemId": {
"description": "An ID that corresponds to an external authority",
"type": "string"
},
"barcode": {
"description": "The library barcode for this user",
"type": "string"
},
"active": {
"description": "A flag to determine if a user can log in, take out loans, etc.",
"type": "boolean"
},
"blocked": {
"description": "A flag to determine if the user has manual blocks",
"type": "boolean"
},
"type": {
"description": "The class of user",
"type": "string"
},
"patronGroup": {
"description": "A UUID corresponding to the group the user belongs to",
"type": "string"
},
"patronGroupName": {
"type": "string",
"description": "A group name corresponding to the group the user belongs to"
},
"departments": {
"description": "A UUIDs corresponding to the departments the user belongs to",
"type": "array",
"uniqueItems": true,
"items": {
"type": "string",
"$ref": "#/$defs/uuid"
}
},
"meta": {
"description": "Deprecated",
"type": "object"
},
"proxyFor": {
"description": "Deprecated",
"type": "array",
"items": {
"type": "string"
}
},
"personal": {
"description": "Personal information about the user",
"type": "object",
"properties": {
"lastName": {
"description": "The user's surname",
"type": "string"
},
"firstName": {
"description": "The user's given name",
"type": "string"
},
"middleName": {
"description": "The user's middle name (if any)",
"type": "string"
},
"preferredFirstName": {
"description": "The user's preferred name",
"type": "string"
},
"email": {
"description": "The user's email address",
"type": "string"
},
"phone": {
"description": "The user's primary phone number",
"type": "string"
},
"mobilePhone": {
"description": "The user's mobile phone number",
"type": "string"
},
"dateOfBirth": {
"type": "string",
"description": "The user's birth date",
"format": "date-time"
},
"addresses": {
"description": "Physical addresses associated with the user",
"type": "array",
"minItems": 0,
"items": {
"type": "object",
"properties": {
"id": {
"description": "A unique id for this address",
"type": "string"
},
"countryId": {
"description": "The country code for this address",
"type": "string"
},
"addressLine1": {
"description": "Address, Line 1",
"type": "string"
},
"addressLine2": {
"description": "Address, Line 2",
"type": "string"
},
"city": {
"description": "City name",
"type": "string"
},
"region": {
"description": "Region",
"type": "string"
},
"postalCode": {
"description": "Postal Code",
"type": "string"
},
"addressTypeId": {
"description": "A UUID that corresponds with an address type object",
"type": "string"
},
"primaryAddress": {
"description": "Is this the user's primary address?",
"type": "boolean"
}
},
"additionalProperties": false
}
},
"preferredContactTypeId": {
"description": "Id of user's preferred contact type",
"type": "string"
}
},
"additionalProperties": false,
"required": [
"lastName"
]
},
"enrollmentDate": {
"description": "The date in which the user joined the organization",
"type": "string",
"format": "date-time"
},
"expirationDate": {
"description": "The date for when the user becomes inactive",
"type": "string",
"format": "date-time"
},
"createdDate": {
"description": "Deprecated",
"type": "string",
"format": "date-time"
},
"updatedDate": {
"description": "Deprecated",
"type": "string",
"format": "date-time"
},
"metadata": {
"type": "object",
"$ref": "#/$defs/metadata"
},
"tags": {
"type": "object",
"$ref": "#/$defs/tags"
},
"customFields": {
"description": "Object that contains custom field",
"type": "object",
"additionalProperties": true
}
},
"additionalProperties": false,
"$defs": {
"metadata": {
"title": "Metadata Schema",
"description": "Metadata about creation and changes to records, provided by the server (client should not provide)",
"type": "object",
"properties": {
"createdDate": {
"description": "Date and time when the record was created",
"type": "string",
"format": "date-time"
},
"createdByUserId": {
"description": "ID of the user who created the record (when available)",
"type": "string",
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
},
"createdByUsername": {
"description": "Username of the user who created the record (when available)",
"type": "string"
},
"updatedDate": {
"description": "Date and time when the record was last updated",
"type": "string",
"format": "date-time"
},
"updatedByUserId": {
"description": "ID of the user who last updated the record (when available)",
"type": "string",
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
},
"updatedByUsername": {
"description": "Username of the user who last updated the record (when available)",
"type": "string"
}
},
"additionalProperties": false,
"required": [
"createdDate"
]
},
"tags": {
"title": "tags",
"description": "List of simple tags that can be added to an object",
"type": "object",
"properties": {
"tagList": {
"description": "List of tags",
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"uuid": {
"description": "UUID",
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/folio-userdata"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.