IwiConnect API docs

Your account

Assignment groups

A group is a named set of people you can assign work to instead of naming an individual. Useful when the right answer is "the consents team", not "Aroha, unless she is on leave".

Why groups

A project assigned to a group can be picked up by anyone in it, and adding someone to the group brings them into everything the group holds. Membership changes apply to existing assignments, not just new ones.

Groups are per owner, and the owner is either a team or an iwi. The {type} path segment says which.

List groups

get /groups/{type}/{id} groups:read

{type} is team or iwi. {id} is the owner's id.

Request
curl "$IWICONNECT_URL/groups/team/3f1b0c77-9a5d-4d0b-8c3e-1f2a4b6c8d90" \
  -H "Authorization: Bearer $IWICONNECT_KEY"
Response
{
  "success": true,
  "message": "Groups retrieved",
  "status_code": 200,
  "response_object": [
    {
      "id": "e0d9...",
      "name": "Consents team",
      "description": "Resource consent applications and s92 responses",
      "colour": "#5b644a",
      "member_ids": ["0b6a51d2-...", "77c1..."],
      "created_on": "2026-03-04T21:00:00.000Z",
      "updated_on": "2026-08-19T02:30:00.000Z"
    }
  ]
}

Create a group

post /groups/{type}/{id} groups:write

Creates the group and sets its members in one call.

FieldTypeNotes
namestringrequired1 to 120 characters. Shown wherever the group is assigned.
colourstringrequiredSix digit hex with a leading hash, such as #5b644a. Three digit shorthand is rejected.
memberIdsarrayrequiredUser ids. Send [] for an empty group.
descriptionstring or nulloptionalUp to 500 characters.
Request
curl -X POST "$IWICONNECT_URL/groups/team/3f1b0c77-..." \
  -H "Authorization: Bearer $IWICONNECT_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Three Waters",
    "description": "Anything touching stormwater, wastewater or drinking water",
    "colour": "#4a5239",
    "memberIds": ["0b6a51d2-...", "77c1..."]
  }'

Update and delete

put /groups/{type}/{id}/{groupId} groups:write

A full replacement, not a patch. Send every field, including the complete memberIds array: anyone you leave out is removed from the group.

delete /groups/{type}/{id}/{groupId} groups:write

Deletes the group. Projects assigned to it become unassigned rather than being reassigned to anyone, so check what is on the group before you remove it.

Assigning a project to a group

Pass group_id instead of a user on the assign endpoint.

Request
curl -X PUT "$IWICONNECT_URL/projects/8f0c2c1e-.../assign" \
  -H "Authorization: Bearer $IWICONNECT_KEY" \
  -H 'Content-Type: application/json' \
  -d '{ "user_id": null, "group_id": "e0d9...", "side": "sender" }'

Assignment has two sides. sender is your team when you sent the project, recipient is the iwi side. You can only set your own, and the project response carries both.

A routing pattern

Keep a small map from project type to group in your own system and assign on creation: consents to the consents group, maintenance and emergency works to operations, plan changes to policy. That is one extra call per project, straight after POST /projects.