A person represents a natural person (applicant, guarantor, contact, etc.) inside an enterprise. The V1 endpoints are effectively read-only: the store, update, and destroy routes exist in routes/api.php but PersonController short-circuits each with 403 Forbidden.
Attributes
The shape returned by App\Http\Resources\V1\PersonResource::toArray():
| Attribute | Type | Description |
|---|---|---|
ID |
string (UUID) | Stable public identifier. |
EnterpriseID |
string (UUID) | UUID of the owning enterprise. |
Title |
string | null | Title (e.g. Mr, Ms, Dr). |
FirstName |
string | null | First name (PII, encrypted at rest). |
MiddleName |
string | null | Middle name. |
LastName |
string | null | Last name. |
Salutation |
string | null | Preferred salutation. |
MaidenName |
string | null | Maiden name. |
Birthday |
string | null (date) | Date of birth. |
Gender |
string | null | Gender label. |
Licence |
string | null | Driver's licence number. |
LicenceCard |
string | null | Driver's licence card number. |
LicenceState |
string | null | Licence-issuing state name (licenceState->name). |
LicenceExpiry |
string | null (date) | Licence expiry date. |
Dependents |
integer | null | Number of dependents. |
DependentsAges |
string | null | Free-text ages of dependents. |
MaritalStatus |
string | null | Marital-status label (maritalStatus->name). |
ResidencyStatus |
string | null | Residency-status label (residencyStatus->name). |
CreatedAt |
string (ISO 8601) | Record creation timestamp. |
UpdatedAt |
string (ISO 8601) | Record updated timestamp. |
PhoneNumbers |
object | NumbersResource collection — see Nested resources. |
Emails |
object | EmailsResource collection. |
Addresses |
object | AddressesResource collection. |
Financials |
object | FinancialsResource collection. Only rows with amount > 0 are included. |
Nested resources
Each nested collection envelopes its rows under a data key. Nested-row timestamps use the lowercase created_at / updated_at keys (unlike the PascalCase CreatedAt / UpdatedAt on the parent person record).
PhoneNumbers[].* — NumberResource:
| Field | Type | Description |
|---|---|---|
ID |
string (UUID) | Identifier of the phone-number row. |
Type |
string | Type, capitalised via ucfirst() (e.g. Mobile). |
Number |
string | Phone number as stored. |
IsPrimary |
boolean | True when primary == 1. |
created_at / updated_at |
string (ISO 8601) | Timestamps. |
Emails[].* — EmailResource:
| Field | Type | Description |
|---|---|---|
ID |
string (UUID) | Identifier of the email row. |
Address |
string | Email address. |
IsPrimary |
boolean | True when primary == 1. |
created_at / updated_at |
string (ISO 8601) | Timestamps. |
Addresses[].* — AddressResource:
| Field | Type | Description |
|---|---|---|
ID |
string (UUID) | Identifier of the address row. |
Type |
string | null | Address-type label (addressType->name). |
Address |
string | null | Single-line composed address (line column). |
Line1 / Line2 / Line3 |
string | null | Individual address lines. |
Suburb |
string | null | Suburb. |
State |
string | null | State name (state->name). |
Postcode |
string | null | Postcode. |
created_at / updated_at |
string (ISO 8601) | Timestamps. |
Financials[].* — FinancialResource:
| Field | Type | Description |
|---|---|---|
ID |
string (UUID) | Identifier of the financial row. |
Type |
string | Type, capitalised via ucfirst() (e.g. Income, Expense). |
Amount |
string (decimal) | Amount as stored. |
Category |
string | null | Category label, title-cased via ucwords(). |
created_at / updated_at |
string (ISO 8601) | Timestamps. |
List people
GET /api/v1/people
Returns a paginated list of people belonging to the enterprise identified by EnterpriseID. Page size is fixed at 100.
Responses
200— paginatedPeopleResourcecollection.403 Forbidden— caller is not a member of the enterprise.
Retrieve a person
GET /api/v1/people/{person:uuid}
Responses
200— singlePersonResourceenvelope.403 Forbidden— caller is not a member of the enterprise or the person'steam_iddoes not match.
Create a person
POST /api/v1/people
The route is wired, but PersonController::store() short-circuits and always returns 403 Forbidden. Write access has not been enabled in V1.
Update a person
PUT /api/v1/people/{person:uuid}
PersonController::update() short-circuits and always returns 403 Forbidden.
Delete a person
DELETE /api/v1/people/{person:uuid}
PersonController::destroy() short-circuits and always returns 403 Forbidden.