RoadOpsDeveloper

Members

Ask

List members

GET/v1/teams/{teamId}/members

Lists active team members.

Required scopes: member: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[].idstring:uuid

Stable member identifier used in API paths.

data[].orgIdstring:uuid

Team identifier.

data[].membershipIdstring:uuid

Stable membership aggregate identifier.

data[].userIdstring

RoadOps user identifier for the member.

data[].role"admin" | "user"

Member role in the team.

data[].status"active" | "departed" | "removed"

Current membership status.

data[].joinedAtstring:date-time

ISO 8601 timestamp when the member joined.

data[].grantedAtstring:date-time

ISO 8601 timestamp when access was granted.

data[].grantedBystring

User identifier that granted access.

data[].memberNamestring

Member display name.

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.

data[].memberPicturestring:uri

Member profile photo URL.

data[].scheduleNoticeWindow"24h" | "48h" | "off"

Member schedule notice preference.

data[].automaticRemovalDatestring

Date-only value in YYYY-MM-DD format when this member is scheduled for automatic removal.

data[].automaticRemovalSetBystring

User identifier that set the automatic removal date.

data[].automaticRemovalSetAtstring:date-time

ISO 8601 timestamp when automatic removal was set.

data[].updatedAtstring:date-time

ISO 8601 timestamp when this member record was last updated.

data[].updatedBystring

User identifier that last updated this member record.

data[].versioninteger

Current projected record version.

data[].membershipVersioninteger

Current membership aggregate version.

data[].cursorinteger

Latest event-ledger cursor projected into this member 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.

Invite a member

POST/v1/teams/{teamId}/members

Accepts a command to invite a team member. The active member record becomes available after the invitation is accepted and projected.

Required scopes: member: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)

invitationIdstring:uuid

Optional caller-supplied invitation ID. RoadOps generates one when omitted.

emailrequiredstring:email

Email address for the invited member.

rolerequired"admin" | "user"

Role to grant when the invitation is accepted.

messagestring

Optional invitation message.

expiresAtstring:date-time

Optional ISO 8601 timestamp when the invitation expires.

automaticRemovalDatestring

Optional date-only value in YYYY-MM-DD format when the member should be automatically removed.

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 member

GET/v1/teams/{teamId}/members/{memberId}

Returns one active team member by ID.

Required scopes: member:read

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

path.memberIdrequiredstring:uuid

Member identifier.

Response 200

dataobject
data.idstring:uuid

Stable member identifier used in API paths.

data.orgIdstring:uuid

Team identifier.

data.membershipIdstring:uuid

Stable membership aggregate identifier.

data.userIdstring

RoadOps user identifier for the member.

data.role"admin" | "user"

Member role in the team.

data.status"active" | "departed" | "removed"

Current membership status.

data.joinedAtstring:date-time

ISO 8601 timestamp when the member joined.

data.grantedAtstring:date-time

ISO 8601 timestamp when access was granted.

data.grantedBystring

User identifier that granted access.

data.memberNamestring

Member display name.

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.

data.memberPicturestring:uri

Member profile photo URL.

data.scheduleNoticeWindow"24h" | "48h" | "off"

Member schedule notice preference.

data.automaticRemovalDatestring

Date-only value in YYYY-MM-DD format when this member is scheduled for automatic removal.

data.automaticRemovalSetBystring

User identifier that set the automatic removal date.

data.automaticRemovalSetAtstring:date-time

ISO 8601 timestamp when automatic removal was set.

data.updatedAtstring:date-time

ISO 8601 timestamp when this member record was last updated.

data.updatedBystring

User identifier that last updated this member record.

data.versioninteger

Current projected record version.

data.membershipVersioninteger

Current membership aggregate version.

data.cursorinteger

Latest event-ledger cursor projected into this member record.

metaobject
meta.cursorinteger

Highest record cursor represented by this response.

Retrieve a member profile

GET/v1/teams/{teamId}/members/{memberId}/profile

Returns the member profile fields visible to the token user based on each profile field's visibility setting.

Required scopes: member:read

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

path.memberIdrequiredstring:uuid

Member identifier.

Response 200

dataobject
data.idstring:uuid

Stable member identifier used in API paths.

data.orgIdstring:uuid

Team identifier.

data.membershipIdstring:uuid

Stable membership aggregate identifier.

data.userIdstring

RoadOps user identifier for the member.

data.memberNamestring

Member display name.

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.fieldsobject

Profile detail fields visible to the caller based on each field's visibility setting.

data.fields.firstNameobject
data.fields.firstName.valuestring
data.fields.firstName.visibility"private" | "org-admins" | "org-members"
data.fields.firstName.updatedByobject
data.fields.firstName.updatedBy.actorIdstring
data.fields.firstName.updatedBy.actorType"user" | "admin"
data.fields.firstName.updatedAtstring:date-time
data.fields.lastNameobject
data.fields.lastName.valuestring
data.fields.lastName.visibility"private" | "org-admins" | "org-members"
data.fields.lastName.updatedByobject
data.fields.lastName.updatedBy.actorIdstring
data.fields.lastName.updatedBy.actorType"user" | "admin"
data.fields.lastName.updatedAtstring:date-time
data.fields.preferredNameobject
data.fields.preferredName.valuestring
data.fields.preferredName.visibility"private" | "org-admins" | "org-members"
data.fields.preferredName.updatedByobject
data.fields.preferredName.updatedBy.actorIdstring
data.fields.preferredName.updatedBy.actorType"user" | "admin"
data.fields.preferredName.updatedAtstring:date-time
data.fields.emailobject
data.fields.email.valuestring:email
data.fields.email.visibility"private" | "org-admins" | "org-members"
data.fields.email.updatedByobject
data.fields.email.updatedBy.actorIdstring
data.fields.email.updatedBy.actorType"user" | "admin"
data.fields.email.updatedAtstring:date-time
data.fields.profileImageUrlobject
data.fields.profileImageUrl.valuestring:uri
data.fields.profileImageUrl.visibility"private" | "org-admins" | "org-members"
data.fields.profileImageUrl.updatedByobject
data.fields.profileImageUrl.updatedBy.actorIdstring
data.fields.profileImageUrl.updatedBy.actorType"user" | "admin"
data.fields.profileImageUrl.updatedAtstring:date-time
data.fields.phoneNumberobject
data.fields.phoneNumber.valuestring
data.fields.phoneNumber.visibility"private" | "org-admins" | "org-members"
data.fields.phoneNumber.updatedByobject
data.fields.phoneNumber.updatedBy.actorIdstring
data.fields.phoneNumber.updatedBy.actorType"user" | "admin"
data.fields.phoneNumber.updatedAtstring:date-time
data.fields.mailingAddressobject
data.fields.mailingAddress.valuestring
data.fields.mailingAddress.visibility"private" | "org-admins" | "org-members"
data.fields.mailingAddress.updatedByobject
data.fields.mailingAddress.updatedBy.actorIdstring
data.fields.mailingAddress.updatedBy.actorType"user" | "admin"
data.fields.mailingAddress.updatedAtstring:date-time
data.fields.genderobject
data.fields.gender.value"male" | "female" | "other"
data.fields.gender.visibility"private" | "org-admins" | "org-members"
data.fields.gender.updatedByobject
data.fields.gender.updatedBy.actorIdstring
data.fields.gender.updatedBy.actorType"user" | "admin"
data.fields.gender.updatedAtstring:date-time
data.fields.birthplaceobject
data.fields.birthplace.valuestring
data.fields.birthplace.visibility"private" | "org-admins" | "org-members"
data.fields.birthplace.updatedByobject
data.fields.birthplace.updatedBy.actorIdstring
data.fields.birthplace.updatedBy.actorType"user" | "admin"
data.fields.birthplace.updatedAtstring:date-time
data.fields.nationalityobject
data.fields.nationality.valuestring
data.fields.nationality.visibility"private" | "org-admins" | "org-members"
data.fields.nationality.updatedByobject
data.fields.nationality.updatedBy.actorIdstring
data.fields.nationality.updatedBy.actorType"user" | "admin"
data.fields.nationality.updatedAtstring:date-time
data.fields.hotelRoomTypeobject
data.fields.hotelRoomType.valuestring
data.fields.hotelRoomType.visibility"private" | "org-admins" | "org-members"
data.fields.hotelRoomType.updatedByobject
data.fields.hotelRoomType.updatedBy.actorIdstring
data.fields.hotelRoomType.updatedBy.actorType"user" | "admin"
data.fields.hotelRoomType.updatedAtstring:date-time
data.fields.busBunkPreferenceobject
data.fields.busBunkPreference.valueobject
data.fields.busBunkPreference.value.side"driver-side" | "passenger-side"
data.fields.busBunkPreference.value.bunk"top" | "middle" | "bottom"
data.fields.busBunkPreference.value.position"front" | "back"
data.fields.busBunkPreference.visibility"private" | "org-admins" | "org-members"
data.fields.busBunkPreference.updatedByobject
data.fields.busBunkPreference.updatedBy.actorIdstring
data.fields.busBunkPreference.updatedBy.actorType"user" | "admin"
data.fields.busBunkPreference.updatedAtstring:date-time
data.fields.flightSeatingPreferenceobject
data.fields.flightSeatingPreference.value"aisle" | "window"
data.fields.flightSeatingPreference.visibility"private" | "org-admins" | "org-members"
data.fields.flightSeatingPreference.updatedByobject
data.fields.flightSeatingPreference.updatedBy.actorIdstring
data.fields.flightSeatingPreference.updatedBy.actorType"user" | "admin"
data.fields.flightSeatingPreference.updatedAtstring:date-time
data.fields.travelTimePreferenceobject
data.fields.travelTimePreference.value"am" | "pm"
data.fields.travelTimePreference.visibility"private" | "org-admins" | "org-members"
data.fields.travelTimePreference.updatedByobject
data.fields.travelTimePreference.updatedBy.actorIdstring
data.fields.travelTimePreference.updatedBy.actorType"user" | "admin"
data.fields.travelTimePreference.updatedAtstring:date-time
data.fields.passportsobject
data.fields.passports.valueobject[]
data.fields.passports.value[].countrystring
data.fields.passports.value[].numberstring
data.fields.passports.value[].expirationstring:date
data.fields.passports.value[].issuedstring:date
data.fields.passports.value[].scanUrlstring:uri
data.fields.passports.value[].nameOnPassportstring
data.fields.passports.visibility"private" | "org-admins" | "org-members"
data.fields.passports.updatedByobject
data.fields.passports.updatedBy.actorIdstring
data.fields.passports.updatedBy.actorType"user" | "admin"
data.fields.passports.updatedAtstring:date-time
data.fields.frequentFlyerNumbersobject
data.fields.frequentFlyerNumbers.valueobject[]
data.fields.frequentFlyerNumbers.value[].programstring
data.fields.frequentFlyerNumbers.value[].numberstring
data.fields.frequentFlyerNumbers.visibility"private" | "org-admins" | "org-members"
data.fields.frequentFlyerNumbers.updatedByobject
data.fields.frequentFlyerNumbers.updatedBy.actorIdstring
data.fields.frequentFlyerNumbers.updatedBy.actorType"user" | "admin"
data.fields.frequentFlyerNumbers.updatedAtstring:date-time
data.fields.dietaryRestrictionsobject
data.fields.dietaryRestrictions.valuestring
data.fields.dietaryRestrictions.visibility"private" | "org-admins" | "org-members"
data.fields.dietaryRestrictions.updatedByobject
data.fields.dietaryRestrictions.updatedBy.actorIdstring
data.fields.dietaryRestrictions.updatedBy.actorType"user" | "admin"
data.fields.dietaryRestrictions.updatedAtstring:date-time
data.fields.allergiesobject
data.fields.allergies.valuestring
data.fields.allergies.visibility"private" | "org-admins" | "org-members"
data.fields.allergies.updatedByobject
data.fields.allergies.updatedBy.actorIdstring
data.fields.allergies.updatedBy.actorType"user" | "admin"
data.fields.allergies.updatedAtstring:date-time
data.fields.emergencyContactobject
data.fields.emergencyContact.valueobject
data.fields.emergencyContact.value.namestring
data.fields.emergencyContact.value.relationshipstring
data.fields.emergencyContact.value.phonestring
data.fields.emergencyContact.value.emailstring:email
data.fields.emergencyContact.visibility"private" | "org-admins" | "org-members"
data.fields.emergencyContact.updatedByobject
data.fields.emergencyContact.updatedBy.actorIdstring
data.fields.emergencyContact.updatedBy.actorType"user" | "admin"
data.fields.emergencyContact.updatedAtstring:date-time
data.fields.swagSizesobject
data.fields.swagSizes.valueobject
data.fields.swagSizes.value.heightstring
data.fields.swagSizes.value.weightstring
data.fields.swagSizes.value.shirtstring
data.fields.swagSizes.value.pantsstring
data.fields.swagSizes.value.shoesstring
data.fields.swagSizes.value.jacketstring
data.fields.swagSizes.value.hatstring
data.fields.swagSizes.visibility"private" | "org-admins" | "org-members"
data.fields.swagSizes.updatedByobject
data.fields.swagSizes.updatedBy.actorIdstring
data.fields.swagSizes.updatedBy.actorType"user" | "admin"
data.fields.swagSizes.updatedAtstring:date-time
data.versioninteger

Current profile detail version.

data.cursorinteger

Latest cursor represented by the membership, profile, and profile details.

metaobject
meta.cursorinteger

Highest record cursor represented by this response.

Update a member

PATCH/v1/teams/{teamId}/members/{memberId}

Accepts one or more commands to update member role and automatic removal settings.

Required scopes: member:write

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

path.memberIdrequiredstring:uuid

Member 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 membership aggregate version guard.

role"admin" | "user"

Updated member role.

automaticRemovalDatestring | null

Updated automatic removal date in YYYY-MM-DD format, 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.

Remove a member

DELETE/v1/teams/{teamId}/members/{memberId}

Accepts a command to remove an active team member.

Required scopes: member:write

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

path.memberIdrequiredstring:uuid

Member 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.

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.