RoadOpsDeveloper

Travel Parties

Travel parties are referenced as user groups in API paths, scopes, and schemas.

Ask

List user groups

GET/v1/teams/{teamId}/user-groups

Lists user groups for a team.

Required scopes: user_group:read

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

query.limitinteger

Maximum number of records to return. Defaults to 50 and is capped at 200.

query.cursorstring

Cursor returned by page.nextCursor from the previous list response.

Response 200

dataobject[]
data[].namestring
data[].labelColorstring | null
data[].idstring:uuid
data[].orgIdstring:uuid
data[].isDeletedboolean
data[].versioninteger

Current user group aggregate version.

data[].createdAtstring:date-time

ISO 8601 timestamp when the user group was created.

data[].createdBystring

User identifier that created the user group.

data[].updatedAtstring:date-time

ISO 8601 timestamp when the user group was last updated.

data[].updatedBystring

User identifier that last updated the user group.

data[].cursorinteger

Latest event-ledger cursor projected into this user group record.

pageobject
page.limitinteger

Maximum number of records returned in this page.

page.nextCursorstring | null

Cursor to pass as the next request's cursor query parameter, or null when there are no more results.

metaobject
meta.cursornumber | null

Highest record cursor represented by this response.

Create a user group

POST/v1/teams/{teamId}/user-groups

Accepts a command to create a user group.

Required scopes: user_group:write

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

header.Idempotency-Keystring:uuid

Optional caller-generated UUID used to make mutation retries safe. Reuse the same UUID only when retrying the same request.

Request body (application/json)

namerequiredstring
labelColorstring | null
idstring:uuid

Optional caller-supplied user group ID. RoadOps generates one when omitted.

Response 202

commandIdstring:uuid

Command identifier accepted into the RoadOps command ledger.

resourceIdstring:uuid

Identifier of the resource targeted by the command.

resourceTypestring

Resource type targeted by the command.

status"applied"

Command dispatch status.

aggregateVersioninteger

Aggregate version produced by the accepted command.

cursorinteger

Event-ledger cursor for the accepted update. Refetch until returned records reach this cursor.

linksobject
links.refetchstring

Relative URL to refetch the affected resource.

Retrieve a user group

GET/v1/teams/{teamId}/user-groups/{userGroupId}

Returns one user group by ID.

Required scopes: user_group:read

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

path.userGroupIdrequiredstring:uuid

User group identifier.

Response 200

dataobject
data.namestring
data.labelColorstring | null
data.idstring:uuid
data.orgIdstring:uuid
data.isDeletedboolean
data.versioninteger

Current user group aggregate version.

data.createdAtstring:date-time

ISO 8601 timestamp when the user group was created.

data.createdBystring

User identifier that created the user group.

data.updatedAtstring:date-time

ISO 8601 timestamp when the user group was last updated.

data.updatedBystring

User identifier that last updated the user group.

data.cursorinteger

Latest event-ledger cursor projected into this user group record.

metaobject
meta.cursorinteger

Highest record cursor represented by this response.

Update a user group

PATCH/v1/teams/{teamId}/user-groups/{userGroupId}

Accepts a command to update user group fields.

Required scopes: user_group:write

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

path.userGroupIdrequiredstring:uuid

User group identifier.

header.Idempotency-Keystring:uuid

Optional caller-generated UUID used to make mutation retries safe. Reuse the same UUID only when retrying the same request.

Request body (application/json)

expectedVersioninteger

Optional aggregate version guard.

namestring

Updated user group name.

labelColorstring | null

Updated user group label color as a 6 digit hex string, or null to clear it.

Response 202

commandIdstring:uuid

Command identifier accepted into the RoadOps command ledger.

resourceIdstring:uuid

Identifier of the resource targeted by the command.

resourceTypestring

Resource type targeted by the command.

status"applied"

Command dispatch status.

aggregateVersioninteger

Aggregate version produced by the accepted command.

cursorinteger

Event-ledger cursor for the accepted update. Refetch until returned records reach this cursor.

linksobject
links.refetchstring

Relative URL to refetch the affected resource.

Delete a user group

DELETE/v1/teams/{teamId}/user-groups/{userGroupId}

Accepts a command to delete a user group.

Required scopes: user_group:write

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

path.userGroupIdrequiredstring:uuid

User group identifier.

header.Idempotency-Keystring:uuid

Optional caller-generated UUID used to make mutation retries safe. Reuse the same UUID only when retrying the same request.

Request body (application/json)

reasonstring

Optional deletion reason.

Response 202

commandIdstring:uuid

Command identifier accepted into the RoadOps command ledger.

resourceIdstring:uuid

Identifier of the resource targeted by the command.

resourceTypestring

Resource type targeted by the command.

status"applied"

Command dispatch status.

aggregateVersioninteger

Aggregate version produced by the accepted command.

cursorinteger

Event-ledger cursor for the accepted update. Refetch until returned records reach this cursor.

linksobject
links.refetchstring

Relative URL to refetch the affected resource.

List user group members

GET/v1/teams/{teamId}/user-groups/{userGroupId}/members

Lists members assigned to a travel party.

Required scopes: user_group:read

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

path.userGroupIdrequiredstring:uuid

User group identifier.

query.limitinteger

Maximum number of records to return. Defaults to 50 and is capped at 200.

query.cursorstring

Cursor returned by page.nextCursor from the previous list response.

Response 200

dataobject[]
data[].idstring:uuid

Stable user group membership identifier.

data[].orgIdstring:uuid

Team identifier.

data[].groupIdstring:uuid

Travel party identifier.

data[].userIdstring:uuid

RoadOps user identifier for the member.

data[].memberNamestring

Member display name visible to the caller.

data[].givenNamestring

Member first or given name visible to the caller.

data[].familyNamestring

Member last or family name visible to the caller.

data[].memberEmailstring:email

Member email address visible to the caller.

data[].memberPicturestring:uri

Member profile photo URL.

data[].createdAtstring:date-time

ISO 8601 timestamp when the member was added.

data[].createdBystring

User identifier that added the member.

data[].updatedAtstring:date-time

ISO 8601 timestamp when the membership was last updated.

data[].updatedBystring

User identifier that last updated the membership.

data[].versioninteger

Current user group membership version.

data[].cursorinteger

Latest cursor represented by this user group membership record.

pageobject
page.limitinteger

Maximum number of records returned in this page.

page.nextCursorstring | null

Cursor to pass as the next request's cursor query parameter, or null when there are no more results.

metaobject
meta.cursornumber | null

Highest record cursor represented by this response.

Add a user group member

POST/v1/teams/{teamId}/user-groups/{userGroupId}/members

Accepts a command to add an existing team member to a travel party.

Required scopes: user_group:write

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

path.userGroupIdrequiredstring:uuid

User group identifier.

header.Idempotency-Keystring:uuid

Optional caller-generated UUID used to make mutation retries safe. Reuse the same UUID only when retrying the same request.

Request body (application/json)

userIdrequiredstring:uuid

RoadOps user identifier to add to the travel party. The user must already be a member of the team.

Response 202

commandIdstring:uuid

Command identifier accepted into the RoadOps command ledger.

resourceIdstring:uuid

Identifier of the resource targeted by the command.

resourceTypestring

Resource type targeted by the command.

status"applied"

Command dispatch status.

aggregateVersioninteger

Aggregate version produced by the accepted command.

cursorinteger

Event-ledger cursor for the accepted update. Refetch until returned records reach this cursor.

linksobject
links.refetchstring

Relative URL to refetch the affected resource.

Remove a user group member

DELETE/v1/teams/{teamId}/user-groups/{userGroupId}/members/{userId}

Accepts a command to remove a member from a travel party.

Required scopes: user_group:write

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

path.userGroupIdrequiredstring:uuid

User group identifier.

path.userIdrequiredstring:uuid

RoadOps user identifier for the member to remove.

header.Idempotency-Keystring:uuid

Optional caller-generated UUID used to make mutation retries safe. Reuse the same UUID only when retrying the same request.

Response 202

commandIdstring:uuid

Command identifier accepted into the RoadOps command ledger.

resourceIdstring:uuid

Identifier of the resource targeted by the command.

resourceTypestring

Resource type targeted by the command.

status"applied"

Command dispatch status.

aggregateVersioninteger

Aggregate version produced by the accepted command.

cursorinteger

Event-ledger cursor for the accepted update. Refetch until returned records reach this cursor.

linksobject
links.refetchstring

Relative URL to refetch the affected resource.