V1 · Core resources

People

Read people (natural persons) and their contact details for an enterprise.

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 — paginated PeopleResource collection.
  • 403 Forbidden — caller is not a member of the enterprise.

Retrieve a person

GET /api/v1/people/{person:uuid}

Responses

  • 200 — single PersonResource envelope.
  • 403 Forbidden — caller is not a member of the enterprise or the person's team_id does 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.