Skip to content

Search people you can invite

GET
/search/invitables
curl --request GET \
--url 'https://calendar.work.optidata.cloud/api/search/invitables?search=jane' \
--header 'Authorization: Bearer <token>'

Autocomplete over everyone the caller can invite to an event or share a calendar with: users of the tenant, groups, and guests already known from earlier events.

Filter by kind with either models (only these kinds) or -models (every kind except these). Sending both is rejected.

Results carry optiworkIdentifier, which is what attendees[]. optiworkIdentifier and members[].optiworkIdentifier expect elsewhere in this API. Responses may be cached for up to an hour.

search
string
<= 255 characters

Text to match against name and e-mail address.

models[]
Array<string>
Allowed values: user group guest

Restrict the search to these kinds. Repeat once per kind (models[]=user&models[]=group). Cannot be combined with -models[].

-models[]
Array<string>
Allowed values: user group guest

Exclude these kinds from the search. Cannot be combined with models[].

limit
integer
>= 1 <= 100

Maximum number of matches to return.

Matching people, groups and guests.

Media typeapplication/json
object
invitables
required
Array<object>

Somebody or something the caller may invite.

object
email
required
string
name
string | null
type
required

user is somebody with an Optiwork account in the tenant, group a user group, and guest an address outside it.

string
Allowed values: user guest group
avatar_url
string | null
id
string | null
zimbra_id
string | null
optiworkIdentifier

Send this back as attendees[].optiworkIdentifier or members[].optiworkIdentifier.

string | null
Examples
Exampleinvitables
{
"invitables": [
{
"email": "jane.doe@acme.example",
"name": "Jane Doe",
"type": "user",
"avatar_url": null,
"id": "75",
"zimbra_id": null,
"optiworkIdentifier": "9e926fb1-e1ff-4fc9-81a1-5740f10ba57f"
},
{
"email": "engineering@acme.example",
"name": "Engineering",
"type": "group",
"avatar_url": null,
"id": "12",
"zimbra_id": null,
"optiworkIdentifier": null
},
{
"email": "contractor@partner.example",
"name": "Alex Contractor",
"type": "guest",
"avatar_url": null,
"id": "1117",
"zimbra_id": null,
"optiworkIdentifier": null
}
]
}

Missing, malformed or expired authentication key.

Media typeapplication/json

Authentication failures use an error key rather than message.

object
error
required
string
Examples
Examplemissing

No bearer token sent

{
"error": "JWT passport exception: Missing bearer token in request"
}

The request body or query string failed validation.

Media typeapplication/json
object
message
required

The first validation message.

string
errors
required

Validation messages keyed by field name.

object
key
additional properties
Array<string>
Examples
Exampleinvalid
{
"message": "The event title field is required.",
"errors": {
"title": [
"The event title field is required."
]
}
}

Rate limit exceeded. Retry after the window resets.

Media typeapplication/json

Generic error envelope used by policy, binding and framework failures.

object
message
required

Human-readable description of the failure.

string
Examples
Examplethrottled
{
"message": "Too Many Attempts."
}