Models
Models are complex data structures representing real-world entities like users and addresses.
Each model combines multiple primitive generators to create rich, structured objects with properly related fields. For example, a User model generates consistent email addresses based on the person’s name, and birthdate that matches the specified age range.
Models are accessed through pseudo-arrays that provide random access to infinite objects. Each array is seeded with a world seed for deterministic generation.
Each model type has a unique TypeSequence identifier used in PseudoIDs to distinguish object types.
Address
Section titled “Address”Address object following OpenID Connect (OIDC) Address Claim.
Represents a physical mailing address with components for street address, locality (city), region (state/province), postal code, country, and locale.
TypeSequence: 110
Fields
Section titled “Fields”| Field | Type | Description |
|---|---|---|
id | string | Deterministic, sortable PseudoID for this address object. |
formatted | string | Full mailing address, formatted for display or use on a mailing label. |
street_address | string | Full street address component, may include house number, street name, |
locality | string | City or locality component. |
region | string | State, province, prefecture, or region component. |
postal_code | string | Zip code or postal code component. |
country | string | Country name or code component. |
locale | string | Locale associated with the address. |
AddressLink
Section titled “AddressLink”The AddressLink class provides type-safe navigation methods for relationships between Address objects and related entities.
Methods:
me(): Address- Returns the current Address objecthomeAddressFor(): User- Reverse ofhomeAddress()on User ( access)owner(): User- Reverse ofaddresses()on User ( access)
Usage:
addresss := NewAddressArray(worldSeed)link := addresss.LinkAt(index)address := link.Me()related := link.HomeAddressFor()AddressArray addresss = new AddressArray(worldSeed);AddressLink link = addresss.linkAt(index);Address address = link.me();User related = link.homeAddressFor();addresss = AddressArray(world_seed)link = addresss.link_at(index)address = link.me()related = link.homeAddressFor()const addresss = new AddressArray(worldSeed);const link = addresss.linkAt(index);const address = link.me();const related = link.homeAddressFor();AddressArray
Section titled “AddressArray”pseudo-array providing access to infinite Address objects.
Usage:
addresss := NewAddressArray(worldSeed)address := addresss.At(index)AddressArray addresss = new AddressArray(worldSeed);Address address = addresss.at(index);addresss = AddressArray(world_seed)address = addresss.at(index)const addresss = new AddressArray(worldSeed);const address = addresss.at(index);Methods:
at(index: int): Address- Get Address at specified index ( access)constructor(worldSeed: uint64)- Create array with given world seedlinkAt(index: int): AddressLink- Get AddressLink for relationship navigation at specified indexlinkFor(obj: Address): AddressLink- Get AddressLink for a given Address object
Group object representing a simple named group.
Used to model collections of users, teams, or other entities with a single group name. The group name is generated as a deterministic, human-friendly nickname.
This model is intentionally minimal, but can be extended to include additional group attributes as needed.
TypeSequence: 102
Fields
Section titled “Fields”| Field | Type | Description |
|---|---|---|
id | string | Deterministic, sortable pseudo-id for this group object. |
name | string | Deterministic, human-friendly group name. |
GroupLink
Section titled “GroupLink”The GroupLink class provides type-safe navigation methods for relationships between Group objects and related entities.
Methods:
me(): Group- Returns the current Group objectmembers(): Generator<User>- Reverse ofprimaryGroup()on User (iterates through related objects, )
Usage:
groups := NewGroupArray(worldSeed)link := groups.LinkAt(index)group := link.Me()related := link.Members()GroupArray groups = new GroupArray(worldSeed);GroupLink link = groups.linkAt(index);Group group = link.me();User related = link.members();groups = GroupArray(world_seed)link = groups.link_at(index)group = link.me()related = link.members()const groups = new GroupArray(worldSeed);const link = groups.linkAt(index);const group = link.me();const related = link.members();GroupArray
Section titled “GroupArray”pseudo-array providing access to infinite Group objects.
Usage:
groups := NewGroupArray(worldSeed)group := groups.At(index)GroupArray groups = new GroupArray(worldSeed);Group group = groups.at(index);groups = GroupArray(world_seed)group = groups.at(index)const groups = new GroupArray(worldSeed);const group = groups.at(index);Methods:
at(index: int): Group- Get Group at specified index ( access)constructor(worldSeed: uint64)- Create array with given world seedlinkAt(index: int): GroupLink- Get GroupLink for relationship navigation at specified indexlinkFor(obj: Group): GroupLink- Get GroupLink for a given Group object
User object following OpenID Connect (OIDC) Standard Claims.
Represents a virtual user with identity information including name components, contact details, gender, locale, and profile picture.
TypeSequence: 101
Fields
Section titled “Fields”| Field | Type | Description |
|---|---|---|
id | string | Deterministic, sortable pseudo-id for this user object. |
sub | string | Subject identifier - a unique identifier for the user. |
name | string | Full name in displayable form including all name parts. |
given_name | string | Given name(s) or first name(s). |
family_name | string | Family name(s) or last name(s). |
middle_name | string | Middle name(s). |
nickname | string | Casual name that may or may not be the same as given_name. |
preferred_username | string | Shorthand name by which the user wishes to be referred to. |
email | string | Email address. |
gender | string | User’s gender. |
locale | string | Locale of the user. |
picture | string | URL of the user’s profile picture. |
profile | string | URL of the End-User’s profile page. |
website | string | URL of the End-User’s web page or blog. |
email_verified | boolean | True if the End-User’s email address has been verified; otherwise false. |
birthdate | string | End-User’s birthday. |
zoneinfo | string | String from IANA Time Zone Database representing the End-User’s time zone. |
phone_number | string | End-User’s preferred telephone number. |
phone_number_verified | boolean | True if the End-User’s phone number has been verified; otherwise false. |
updated_at | safeint | Time the End-User’s information was last updated. |
UserLink
Section titled “UserLink”The UserLink class provides type-safe navigation methods for relationships between User objects and related entities.
Methods:
me(): User- Returns the current User objectmanager(): User- Navigates to related User (many-to-one) ( access)directs(): Generator<User>- Reverse ofmanager()(iterates through related objects, )primaryGroup(): Group- Navigates to related Group (many-to-one) ( access)members(): Generator<User>- Reverse ofprimaryGroup()(iterates through related objects, )homeAddress(): Address- The primary residential location where the user lives and receives personal mail. ( access)homeAddressFor(): User- Reverse ofhomeAddress()( access)workAddress(): Address- The professional office or job site location where the user is stationed during business hour. ( access)addresses(): Generator<Address>- A list of supplemental or miscellaneous locations associated with the user, such as temporary vacation rentals, secondary properties, or old historical records. (iterates through related objects, )owner(): User- Reverse ofaddresses()( access)directs(): Generator<User>- Reverse ofmanager()on User (iterates through related objects, )
Usage:
users := NewUserArray(worldSeed)link := users.LinkAt(index)user := link.Me()related := link.Manager()UserArray users = new UserArray(worldSeed);UserLink link = users.linkAt(index);User user = link.me();User related = link.manager();users = UserArray(world_seed)link = users.link_at(index)user = link.me()related = link.manager()const users = new UserArray(worldSeed);const link = users.linkAt(index);const user = link.me();const related = link.manager();UserArray
Section titled “UserArray”pseudo-array providing access to infinite User objects.
Usage:
users := NewUserArray(worldSeed)user := users.At(index)UserArray users = new UserArray(worldSeed);User user = users.at(index);users = UserArray(world_seed)user = users.at(index)const users = new UserArray(worldSeed);const user = users.at(index);Methods:
at(index: int): User- Get User at specified index ( access)constructor(worldSeed: uint64)- Create array with given world seedlinkAt(index: int): UserLink- Get UserLink for relationship navigation at specified indexlinkFor(obj: User): UserLink- Get UserLink for a given User object
© 2025 Pseudata Project. Open Source under Apache License 2.0. · RSS Feed