solarOS Organization API

Organization API

Create or resolve a draft Team Member

Creates a same-organization draft Team Member for external integrations, or returns an existing member matched by Salesforce identity, email, or External Reference. Draft Team Members can own imported records without being invited to sign in. Requires Idempotency-Key and team_members:write.

/api/v1/team-members

Creates a same-organization draft Team Member for external integrations, or returns an existing member matched by Salesforce identity, email, or External Reference. Draft Team Members can own imported records without being invited to sign in. Requires Idempotency-Key and team_members:write.

Create or resolve a draft Team Member. Use an organization API key with team_members:write. Check the response envelope and meta.requestId before triggering dependent workflow steps.

Required scopes

team_members:writeIdempotency-Key required

Parameters

No path or query parameters.

Request body

objectrequired
FieldTypeDescription
emailstring | nullOptional unless marked required.
firstNamestring | nullOptional unless marked required.
lastNamestring | nullOptional unless marked required.
displayNamestring | nullOptional unless marked required.
phonestring | nullOptional unless marked required.
roleOWNER | ADMIN | SALES_MANAGER | SALES_USER | OPERATIONS_MANAGER | OPERATIONS_USER | TECHNICIAN | MEMBEROptional unless marked required.
statusstringOptional unless marked required.
salesforceUserIdstring | nullOptional unless marked required.
salesforceServiceResourceIdstring | nullOptional unless marked required.
externalReferences[]array<object>Optional unless marked required.
externalReferences[].externalSystemrequiredstringOptional unless marked required.
externalReferences[].externalObjectrequiredstringOptional unless marked required.
externalReferences[].externalIdrequiredstringOptional unless marked required.
externalReferences[].metadataobjectOptional unless marked required.
createteammemberRequest
{
  "email": "technician@example.com",
  "firstName": "Grace",
  "lastName": "Hopper",
  "role": "TECHNICIAN",
  "status": "DRAFT"
}

Responses

200

Existing Team Member envelope

#/components/schemas/TeamMemberEnvelope

201

Created draft Team Member envelope

#/components/schemas/TeamMemberEnvelope

400

Validation or idempotency error

#/components/schemas/OrgApiError

401

Missing or invalid organization API key

#/components/schemas/OrgApiError

402

Organization billing access or an endpoint-specific business quota denied the request

#/components/schemas/OrgApiError

403

Missing required scope: team_members:write

#/components/schemas/OrgApiError

409

External Reference/idempotency conflict, or SEAT_LIMIT_REACHED when schedulable=true exceeds included seats.

#/components/schemas/OrgApiError

429

Rate limit exceeded

#/components/schemas/OrgApiError

Errors

400 Validation or idempotency error401 Missing or invalid organization API key402 Organization billing access or an endpoint-specific business quota denied the request403 Missing required scope: team_members:write409 External Reference/idempotency conflict, or SEAT_LIMIT_REACHED when schedulable=true exceeds included seats.429 Rate limit exceeded

Static examples

curl -X POST "$SOLAROS_BASE_URL/api/v1/team-members" \
  -H "Authorization: Bearer $SOLAROS_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $SOLAROS_IDEMPOTENCY_KEY" \
  --data '{"email":"technician@example.com","firstName":"Grace","lastName":"Hopper","role":"TECHNICIAN","status":"DRAFT"}'