An organisation represents a legal entity (Pty Ltd, trust, sole trader, etc.) inside an enterprise. As with People, V2 is effectively read-only: store, update, and destroy routes return 403 Forbidden because their form requests use App\Http\Requests\Api\V2\Concerns\DeniesAccess.
- Attributes
- List organisations
- Retrieve an organisation
- Create an organisation
- Update an organisation
- Delete an organisation
Attributes
The shape returned by App\Http\Resources\V2\OrganisationResource::toArray():
| Attribute | Type | Description |
|---|---|---|
id |
string (UUID) | Stable public identifier. |
enterprise_id |
string (UUID) | null | UUID of the owning enterprise. |
legal_name |
string | Legal name (maps to the name column). |
legal_structure |
string | null | Organisation-type label (OrganisationType->name). |
short_name |
string | null | Short / abbreviated name (shortname column). |
trust_name |
string | null | Trust name (where applicable). |
acn |
string | null | Australian Company Number. |
abn |
string | null | Australian Business Number. |
entity_type |
string | null | ABN entity-type label (AbnType->name). |
abn_registration |
string | null (date) | ABN registration date (abn_date column). |
abn_status |
string | null | ABN status label (AbnStatus->name). |
gst_registered |
boolean | True when gst_registered == 1. |
gst_date |
string | null (date) | GST registration date. |
business_name / business_name2 / business_name3 |
string | null | Up to three trading names (trading_name, trading_name2, trading_name3). |
former_name / former_name2 / former_name3 |
string | null | Up to three former names. |
description |
string | null | Free-text description. |
established_date |
string | null (date) | Date the organisation was established. |
employees_count |
integer | null | Employee count. |
industry |
string | null | Industry label (industry->name). |
website |
string | null | Website URL. |
created_at |
string (ISO 8601) | Record creation timestamp. |
updated_at |
string (ISO 8601) | Record updated timestamp. |
phone_numbers |
object | NumbersResource collection — same shape as on People. |
emails |
object | EmailsResource collection — same shape as on People. |
addresses |
object | AddressesResource collection — same shape as on People. |
The nested resource shapes are documented on the People page.
List organisations
GET /api/v2/organisations
Returns a paginated list of organisations belonging to the enterprise identified by X-Enterprise-Id. Page size is fixed at 100.
Responses
200— paginatedOrganisationsResourcecollection.403 Forbidden— caller is not a member of the enterprise.
Retrieve an organisation
GET /api/v2/organisations/{organisation:uuid}
Responses
200— singleOrganisationResourceenvelope.403 Forbidden— caller is not a member of the enterprise or the organisation'steam_iddoes not match.
Create an organisation
POST /api/v2/organisations
StoreOrganisationRequest uses the DeniesAccess trait — always returns 403 Forbidden.
Update an organisation
PUT /api/v2/organisations/{organisation:uuid}
UpdateOrganisationRequest uses the DeniesAccess trait — always returns 403 Forbidden.
Delete an organisation
DELETE /api/v2/organisations/{organisation:uuid}
DestroyOrganisationRequest uses the DeniesAccess trait — always returns 403 Forbidden.
V2 differences — Although the write endpoints currently deny access, every V2 request body is normalised by
App\Http\Middleware\NormalizeApiInput. Keys are recursivelyStr::snake()-converted, soLegalName,legalName, andlegal_namewill all resolve to the same key when write support is enabled. Mixing casings within one payload is supported but order-sensitive: the later sibling wins.