API Overview
Welcome to the GReminders API. The GReminders API has 2 parts:
- REST API
- Webhooks to notify you of new/updated/deleted Events and Records
For the REST API the system uses a OAuth2 implementation for Authentication.
Any breaking changes made to the API will result in a new version of the API. Currently we are on version 1.
If you don't see an endpoint that you need please contact [email protected] and share your Need and Use Case.
Embed API
Embed API is an easier to use integration that allows you to embed your scheduling/booking pages into your Website, Blog, Wordpress, Wix, Shopify, etc...
There is a basic HTML IFrame Version
Or a more advanced Javascript Version. This allows you to embed this as part of your intake workflow or similar.
If you need help please reach out to [email protected].
Webhooks Overview
Webhooks allow developers to trigger actions off things that happen in GReminders. Webhooks are triggered for New Bookings, Reschedules, Cancellations and Event Confirmations, and also other Objects. This guide introduces how webhooks work, including how to configure a webhook for your app and manage webhooks. Webhooks can also be used with Low Code Workflow applications such as Zapier, IFTTT, etc...
Concepts
Webhook: A single event message. GReminders sends a webhook to an Webhook receiving endpoint URL. A webhook contains a JSON payload in the body, and metadata in the headers.
object_type: type of the object that triggers an webhook event. Could be event, event_type and user
change_type: This reflects the type of callback you're receiving. Could be created, updated or deleted. Also, you may encounter url_verification during the configuration process.
Webhook subscription: A persisted data object, which defines the object_type and the change_type that the app wants to receive.
A webhook receiving endpoint URL is where GReminders sends webhooks for the specified object_type and change_type.
Payload
Webhook payload structure:
{
"object_type": "event",
"change_type": "created",
"data": {
...
}
}
Each webhook sent by GReminders has the same structure
Parameter | Description |
---|---|
object_type string |
Type of the object that triggers an webhook event |
change_type string |
Change Type of callback (created, updated, etc...) |
data one of Api Object |
data representing object |
Headers
In addition to the message payload, each webhook message has a predefined set of HTTP headers containing metadata.
HTTP Header | Use |
---|---|
X-Greminders-Api-Version | Version of the Webhook API |
X-Greminders-Request-Timestamp | UNIX Timestamp of the request |
X-Greminders-Signature | Used for verification of the request |
X-Greminders-Retry-Num | Indicates the delivery retry attempt number: 1, 2, or 3. |
X-Greminders-Retry-Reason | Describes why the request was retried |
Delivery Retries
GReminders will try to deliver a failed request up to 3 times in a gradually increasing timetable.
We'll tell you why we're retrying the request in the X-Greminders-Retry-Reason
HTTP header. Possible values are:
- http_timeout - Your server took longer than 3 seconds to respond to the previous webhook delivery attempt.
- too_many_redirects - If we encounter more than 5 redirects, we'll retry the request in hopes it won't be that many this time.
- connection_failed - Couldn't to connect to your server.
- http_error - We encountered an HTTP status code that was not in the HTTP 200 OK range.
- unknown_error - For some reason it didn't work and we don't know why.
Working with Webhooks
Webhook Subscription
To create webhook subscription follow next steps:
- Navigate to your GRemidners account and go to Org Settings > API. Click on the Webhooks Tab.
- Enable Webhooks
- create a New Webhook
- provide webhook Name, Receiving Endpoint URL, check desired Event Hooks and enable webhook by hitting Active toggle
- Save your webhook
- Copy your Signing Secret (to be used later, optional)
Verification of Receiving Endpoint URL
We'll dispatch a HTTP POST containing following body to your request URL:
{
"change_type": "url_verification",
"verification_key": "85cfdbc3dab3d0124aad1158b90b9fa745a1a00a4d15eea85f7d8db2ffc81400"
}
To ensure that webhooks are being delivered to a server under your control, GReminders must verify your ownership by sending you a url_verification request. You'll automatically receive url_verification request whenever configuring an Webhook Receiving Endpoint URL.
Once you receive the url_verification request, verify it and then respond in plaintext with the verification_key attribute value:
HTTP 200 OK
85cfdbc3dab3d0124aad1158b90b9fa745a1a00a4d15eea85f7d8db2ffc81400
Receive the Webhook
After you register an endpoint, GReminders sends an HTTP POST request to the URL specified every time that event occurs. The HTTP POST request parameters contain the JSON data relevant to the event that triggered the request.
Verify the Webhook (Optional)
The following example uses pseudocode to verify a webhook request
function verifyRequest(): bool {
$request = getRequest();
$signing_secret = 'YOURSIGNINGSECRETHERE';
$requestSignature = $request->headers('X-Greminders-Signature');
$timestamp = $request->headers('X-Greminders-Request-Timestamp');
$body = $request->getBody();
$calculatedSignature = hash_hmac('sha256', "$timestamp:$body", $signing_secret);
return ($requestSignature === $calculatedSignature);
}
def validate_webhook():
verified: bool = False
# We use request.get_data().decode("utf-8-sig") to remove BOM from the start of the string
body = request.get_data().decode("utf-8-sig")
signature: str = headers.get(GREMINDER_SIGNATURE_HEADER)
timestamp = headers.get(GREMINDER_TIMESTAMP_HEADER)
secret: str = self.__get_greminder_signing_secret()
if (secret is None):
CallContext.get_current().log_error(
message="No Signature")
if GeneralUtility.is_null_or_empty(signature) or \
GeneralUtility.is_null_or_empty(timestamp):
return verified
message = "{}:{}".format(timestamp, body)
calculated_signature = hmac.new(key=bytes(secret, encoding='utf-8'),
msg=bytes(message, 'utf-8'),
digestmod=hashlib.sha256).hexdigest().lower()
if signature == calculated_signature:
verified = True
return verified
app.MapPost("/webhook",async delegate(HttpContext context) {
using (StreamReader reader = new StreamReader(context.Request.Body, Encoding.UTF8))
{
var signature = context.Request.Headers["X-Greminders-Signature"];
var timestamp = context.Request.Headers["X-Greminders-Request-Timestamp"];
var signingSecret = "4d7df8f838cffac21219a7b74a77c3c2a6f1927c341c1b0d800296f5b772565a";
var body = await reader.ReadToEndAsync();
var hmacSha256 = new HMACSHA256(Encoding.UTF8.GetBytes(signingSecret));
var hash = hmacSha256.ComputeHash(Encoding.UTF8.GetBytes($"{timestamp}:{body}"));
var controlSignature = Convert.ToHexString(hash).ToLower();
if (signature == controlSignature)
{
Console.WriteLine("verified");
}
else
{
Console.WriteLine("not verified");
}
}
});
Before you respond to a webhook, you need to verify that the webhook was sent from GReminders. You can verify the webhook by calculating a digital signature and comparing it to the value of the X-Greminders-Signature HTTP header.
Respond to the webhook
Your webhook acknowledges that it received data by sending a 200 OK response.
OAuth2
Before you can start using OAuth2 in your application, you need to register it. In your GReminders account go to ORG SETTINGS -> API section of the site.
You need to create a new OAuth Application:
- Name - Application name
- Redirect URLs - These are the URLs to which the service will redirect the user after authorization
This will also generate a Client ID and Secret. Keep these in a safe place.
Each API request should be authorized with Bearer Token / Access Token in the Authorization
header, like so:
Authorization: Bearer eyJ0eXAiOiJKV1QiLC...
Authorize
First you need to go through the authorization process, for this use the following URL.
https://app.greminders.com/api/oauth/authorize
Example
GET https://app.greminders.com/api/oauth/authorize?response_type=code&scope=full-access&client_id=<CLIENT_ID>&r=<REDIRECT_URL>
Required query parameters
Parameter | Description |
---|---|
response_type string |
Only the "code" type is supported |
scope string |
"full-access" is the only scope available in current version |
client_id string |
Client ID of the registered application |
r string |
Redirect URL to which the authorization code is returned |
After after successful login the user will be redirected to the page specified in the redirect URL along with the authorization code
{your_redirect_url}?code=your_authorization_code
Helper Tool / Token
As a "Helper" we have given you the ability to generate a Refresh and Access token for your logged in user in the GReminders API Web Interface. This is only meant to be used temporarily to test the API via Postman or some other test harness without having to implement a whole OAuth2 flow.
Get the Access Token
The application must then request an access token using the authorization code given on the previous step. To do this, you need to send a POST resquest to the following URL.
https://app.greminders.com/api/oauth/access-token
Required body parameters
Parameter | Description |
---|---|
grant_type string |
The value "authorization_code" is used for this parameter |
client_id string |
Client ID of the registered application |
client_secret string |
Client secret of the registered application |
code string |
The code that was received after the authorization step |
In response, you should receive the Access Token in JSON format.
{
"token_type": "Bearer",
"expires_in": 7200,
"access_token": "eyJ0eXAiOiJKV1QiLCJ...",
"refresh_token": "def50200790340dc2a7..."
}
Parameter | Description |
---|---|
token_type string |
Type of token |
expires_in string |
Token lifetime, in seconds |
access_token string |
The value of the access token |
refresh_token string |
The refresh token value, used to obtain a new access token |
Response codes
Code | Description |
---|---|
200 | Successful response |
400 | Some of the parameters are specified incorrectly |
Get new Access Token using Refresh Token
To refresh your expired Access Token send a POST requst to the following URL. Please Note, when you get a new Access Token you will also receive a NEW Refresh Token. Use this NEW Refresh token to get a new Access Token. The old Refresh token will be invalidated.
https://app.greminders.com/api/oauth/access-token
Required body parameters
Parameter | Description |
---|---|
grant_type string |
The value "refresh_token" is used for this parameter |
client_id string |
Client ID of the registered application |
client_secret string |
Client secret of the registered application |
refresh_token string |
Refresh token value |
In response, you should receive new Access Token in JSON format.
{
"token_type": "Bearer",
"expires_in": 7200,
"access_token": "eyJ0eXAiOiJKV1QiLC...",
"refresh_token": "def50200640780cf3..."
}
Response codes
Code | Description |
---|---|
200 | Successful response |
400 | Some of the parameters are specified incorrectly |
Impersonation
Example
X-GReminders-Impersonation-ID: <UUID>
If the user you are authorized as has Administrator Permissions in GReminders, you can use the impersonation mechanism
to perform actions on behalf of other Users in your Organization. To do so, you can supply a X-GReminders-Impersonation-ID
header with
the ID of the User you want to impersonate with each API request.
In this case the API will return your requests as if impersonated User is making them.
Error Codes
Example:
{
"code": 429,
"error": "throttled",
"message": "You are hitting the API too frequently, please back off.",
"hint": "You can make 120 API requests per minute, otherwise you will be throttled. Thanks."
}
Error Codes you may encounter that you should account for:
HTTP Error Code | Description |
---|---|
400 |
Bad Request, query string malformed or similar |
401 |
Unauthorized, Access Token is bad/missing |
404 |
Resource Not Found, most likely the resource you are trying to access doesn't exist |
429 |
You are bring throttled, back off your requests, try again shortly |
500 |
Server Error, something bad happened, contact [email protected] if this persists |
503 |
Site Unavailable, most likely platform undergoing maintenance, try again shortly |
API Objects
Calendar
Each User has one or more Calendars.
Example:
{
"id": <UUID>,
"provider": "google",
"name": "[email protected]",
"external_id": "[email protected]",
"timezone": "UTC",
"color": "#9fe1e7",
"user_id": <UUID>,
"company_id": <UUID>,
"active": true,
"main": true,
"primary": true,
"created_date": "2023-01-05T16:18:34+00:00",
"updated_date": "2023-01-17T10:29:21+00:00",
"read_only": false,
"send_reminders": true,
"check_default_availability": true
}
Parameter | Description |
---|---|
id uuid |
Internal ID |
provider string |
Internal provider name |
name string |
Name of Calendar |
external_id string |
ID of the External Calendar (from Google, Microsoft, etc...) |
timezone string |
Time Zone of Calendar in IANA Time Zone format |
color string |
The color with which the calendar is displayed, HEX format |
user_id uuid |
Internal User ID |
company_id uuid |
Internal Company ID |
active bool |
Active Flag |
main bool |
Main Flag |
primary bool |
Primary Flag |
created_date date |
Date & Time Calendar was created in GReminders, ISO8601 format |
updated_date date |
Date & Time Calendar was last updated in GReminders, ISO8601 format |
read_only bool |
Read only Flag |
send_reminders bool |
Send reminders Flag |
check_default_availability bool |
Check default availability Flag |
Event
Events belong to a Calendar
Example:
{
"id": <UUID>,
"external_id": "26jkvg7t3sp1ugmkd72tih91hk",
"user_id": <UUID>,
"calendar_id": <UUID>,
"event_type_id": <UUID>,
"url": "https://app.greminders.com/event/2142ba19-64a3-4109-9e60-64f47d9bcb49",
"weburl": "https://www.google.com/calendar/event?eid=MjZqa3ZnN3Qzc3AxdWdta2Q3MnRpaDkxaGsgbG9wYXRpbnNreXN2LnNkYWlAbQ",
"reschedule_url": "https://www.greminders.com/r/TDL7xW",
"cancel_url": "https://www.greminders.com/c/TDL7xW",
"location": "https://meet.google.com/utd-yois-fsp",
"body": "Review Value Proposition of ACME",
"name": "Demo Meeting with ACME Inc",
"status": "confirmed",
"freebusy": "busy",
"provider": "google",
"timezone": "America/Los_Angeles",
"categories": [],
"origination_date": "2022-07-07T02:16:35-07:00",
"start_date": "2022-07-07T23:30:00-07:00",
"end_date": "2022-07-08T00:00:00-07:00",
"created_date": "2022-07-07T02:16:35-07:00",
"updated_date": "2022-07-07T09:16:57+00:00",
"is_organizer": true,
"reply_status": null,
"all_day_event": false,
"client_timezone": "America/Los_Angeles",
"meeting_type": "some meeting type",
"meeting_urls": [
{
"url": "https://meet.google.com/utd-yois-fsp",
"provider": "google_meet"
}
],
"organizer": {
"id": <UUID>,
"role": "organizer",
"email": "[email protected]",
"phone": null,
"status": "registered",
"internal": true,
"timezone": "America/Los_Angeles",
"last_name": "Person",
"questions": [],
"cancel_url": "https://www.greminders.com/c/BgIzRz",
"first_name": "Some",
"confirm_url": "https://www.greminders.com/f/BgIzRz",
"created_date": "2022-07-07T02:49:06-07:00",
"source_email": null,
"source_phone": "user",
"updated_date": "2022-07-07T02:49:06-07:00",
"external_role": "sender",
"reschedule_url": "https://www.greminders.com/r/BgIzRz",
"payment": null
},
"registrants": [
{
"id": <UUID>,
"role": "participant",
"email": "[email protected]",
"phone": null,
"status": "registered",
"internal": false,
"timezone": "America/Los_Angeles",
"last_name": "Person",
"questions": [
{
"key": <UUID>,
"label": "sample question",
"value": "sample answer"
}
],
"cancel_url": "https://www.greminders.com/c/BgIzRz",
"first_name": "Another",
"confirm_url": "https://www.greminders.com/f/BgIzRz",
"created_date": "2022-07-07T02:49:06-07:00",
"source_email": "eventregistration",
"source_phone": null,
"updated_date": "2022-07-07T02:50:21-07:00",
"external_role": "recipient",
"reschedule_url": "https://www.greminders.com/r/BgIzRz",
"payment": {
"amount": 50,
"currency": "USD",
"provider": "stripe",
"card_brand": "visa",
"discount_code": null,
"transaction_id": "pi_3MpLlbGEyKDZHOoW0fW1fm5C",
"card_holder_name": "Michael Scott",
"card_last4digits": "1111"
}
}
],
"participants": [
{
"id": <UUID>,
"role": "participant",
"email": "[email protected]",
"phone": null,
"status": "registered",
"internal": false,
"timezone": "America/Los_Angeles",
"last_name": "Person",
"questions": [],
"cancel_url": "https://www.greminders.com/c/BgIzRz",
"first_name": "Another",
"confirm_url": "https://www.greminders.com/f/BgIzRz",
"created_date": "2022-07-07T02:49:06-07:00",
"source_email": "eventregistration",
"source_phone": null,
"updated_date": "2022-07-07T02:50:21-07:00",
"external_role": "recipient",
"reschedule_url": "https://www.greminders.com/r/BgIzRz",
"payment": {
"amount": 50,
"currency": "USD",
"provider": "stripe",
"card_brand": "visa",
"discount_code": null,
"transaction_id": "pi_3MpLlbGEyKDZHOoW0fW1fm5C",
"card_holder_name": "Michael Scott",
"card_last4digits": "1111"
}
},
{
"id": <UUID>,
"role": "organizer",
"email": "[email protected]",
"phone": null,
"status": "registered",
"internal": true,
"timezone": "America/Los_Angeles",
"last_name": "Person",
"questions": [],
"cancel_url": "https://www.greminders.com/c/BgIzRz",
"first_name": "Some",
"confirm_url": "https://www.greminders.com/f/BgIzRz",
"created_date": "2022-07-07T02:49:06-07:00",
"source_email": null,
"source_phone": "user",
"updated_date": "2022-07-07T02:49:06-07:00",
"external_role": "sender",
"reschedule_url": "https://www.greminders.com/r/BgIzRz",
"payment": null
}
],
"payment": {
"amount": 50,
"currency": "USD",
"provider": "stripe",
"card_brand": "visa",
"discount_code": null,
"transaction_id": "pi_3MpLlbGEyKDZHOoW0fW1fm5C",
"card_holder_name": "Michael Scott",
"card_last4digits": "1111"
}
}
Parameter | Description |
---|---|
id uuid |
Internal ID |
external_id string |
ID of the External Event (from Google, Microsoft, etc...) Could be used to match up the Event against the Source Provider. |
user_id uuid |
Internal User ID |
calendar_id uuid |
Internal Calendar ID |
event_type_id uuid |
Internal Event Type ID |
url string |
GReminders Web UI URL |
weburl string |
External Event Provider URL (Link to the Google, Microsoft, etc... Event) |
reschedule_url string |
Public URL to be used for client rescheduling |
cancel_url string |
Public URL to be used for client cancellations |
location string |
Location of the Event |
body string |
Description of the Event |
name string |
Title/Subject of the Event |
status string |
Status of the Source Event (confirmed, tentative, cancelled) If event is "cancelled" it has been deleted from the source calendar |
freebusy string |
"free" or "busy", if busy the event is not considered as part of the availability check |
provider string |
Source Provider of the Event (google, microsoft, etc...) |
timezone string |
Time Zone of Event in IANA Time Zone format |
client_timezone string |
Client Time Zone of Event in IANA Time Zone format See Article |
meeting_type string |
Custom Question reserved by the system - "meeting type" and assigned to this event. |
reply_status string |
Internal Reply State (confirmed,rescheduling,optout,cancelled) GReminders Event Status. Result of client replies to notifications. |
is_organizer bool |
This user is the Organizer of this Meeting |
all_day_event bool |
This event is an all day event |
categories array |
Categories of this Event from Source Event/Calendar (only applies to Office 365 / Exchange Calendar Events) |
origination_date date |
Original Date the Event was created on the Source Calendar, ISO8601 format |
start_date date |
Start Date & Time of the Event, ISO8601 format |
end_date date |
End Date & Time of the Event, ISO8601 format |
created_date date |
Date & Time Event was created in GReminders, ISO8601 format |
updated_date date |
Date & Time Event was last updated in GReminders, ISO8601 format |
meeting_urls array of Meeting Url |
|
organizer Registrant |
Organizer of the Meeting |
participants array of Registrant |
List of People that are ON the Event Invitation List. |
registrants Registrant |
List of People who Registered for the Event via GReminders. In most cases this is one registrant, for Group Events this may contain more than one registrant. |
payment array |
Payment information if Event took Payment (this is handled at the Event level IF this is Not a Group Event), for Group Events please use the payment attribute on the Registrants Object, as multiple people can pay for the same Event. |
Event type
Event Types belong to Users or Teams and make up the Public Scheduling Pages
Example:
{
"id": <UUID>,
"url": "https://app.greminders.com/c/someperson/demomeeting",
"name": "Demo Meeting",
"type": "single",
"active": true,
"team_id": null,
"user_id": <UUID>,
"location": "",
"start_buffer": "+2 hours",
"tail_buffer": 0,
"shortname": "demomeeting",
"show_home": true,
"calendar_id": null,
"description": "",
"created_date": "2022-07-07T08:56:22+00:00",
"updated_date": "2022-07-07T08:56:22+00:00",
"meeting_type": "some meeting type",
"last_booked": "2022-07-07T08:56:22+00:00",
"times_used": 1,
"require_approval": false,
"sensitivity": "normal",
"location_type": "google_meet",
"event_duration_max": null,
"event_duration_min": null,
"event_duration_default": 30,
"event_duration_type": "fixed",
"event_duration" : 30,
"max_events_per_slot": null,
"can_schedule_from": null,
"can_schedule_until": null,
"can_schedule_within": "+60 days",
"add_customer_to_calendar_invite": true,
"add_organizer_to_calendar_invite": true,
"locations": [
{
"type": "location",
"description": "1234 Main St. Los Angeles, CA 90001"
},
{
"type": "web_meeting",
"provider": "google_meet",
"description": "Google Meet"
},
{
"type": "phone_call",
"description": "{{invitee.phone}}"
},
{
"type": "web_meeting",
"provider": "gotomeeting",
"description": "GoToMeeting"
}
]
}
Parameter | Description |
---|---|
id uuid |
Internal ID |
active bool |
Active Flag |
user_id uuid |
Internal User ID |
team_id uuid |
Internal Team ID |
url string |
Public Scheduling Link for this Event Type |
shortname string |
Shortname of the User or Team (used in the url above) |
type string |
The Type value for the Event Type |
calendar_id uuid |
Internal Calendar ID the Event will be booked on (if NULL then the Primary Calendar is used) |
name string |
Title of the Event Type |
description string |
Description of the Event Type |
location string |
Location of the Event Type |
start_buffer string |
A buffer before starting to schedule an event from now (ex. "+2 hours" or "+3 days") |
tail_buffer int |
The buffer for the next availability interval (after the meeting) in minutes |
location_type string |
If Location is "custom" this is the location of the Event Type |
can_schedule_within string |
Event can be scheduled within X time (ex. "+2 hours" or "+3 days") |
show_home bool |
Will the Event Type show on the main Booking Screen |
event_duration_type string |
Event Type Duration Type (fixed, variable) |
event_duration_min int |
if Event Type Duration Type = fixed, this is the min time duration for the event in minutes |
event_duration_max int |
if Event Type Duration Type = fixed, this is the max time duration for the event in minutes |
event_duration int |
Event duration value in minutes |
event_duration_default int |
Event duration default value |
max_events_per_slot int |
Max # of Events per Time Slot (Overlapping Bookings), default null |
can_schedule_from date |
Can schedule between this Start Date, ISO8601 format |
can_schedule_until date |
Can schedule between this End Date, ISO8601 format |
add_customer_to_calendar_invite bool |
Are we adding the client to the participant list (onto the Event Invitation) |
add_organizer_to_calendar_invite bool |
Are we adding the organizer to the participant list (onto the Event Invitation) |
created_date date |
Date & Time Event Type was originally created, ISO8601 format |
updated_date date |
Date & Time Event Type was last modified, ISO8601 format |
meeting_type string |
Meeting type configured for the current event type |
last_booked date |
The date this Event Type was last used/booked, ISO8601 format |
times_used int |
How many times was this event type used |
require_approval bool |
Whether user approval is required to complete the booking process |
sensitivity string |
Event visibility/sensitivity value (normal or private) |
deleted bool |
Soft-delete Flag |
locations array |
of possible locations for this event type |
Team
Teams are groups of Users for the purposes of Team Scheduling (Round Robin, All Together, etc...)
Example:
{
"id": <UUID>,
"company_id": <UUID>,
"name": "Sales Team West",
"shortname": "484ee5fb",
"avatar_url": "",
"banner_url": "https://app.greminders.com/static/build/banner-default.jpg",
"custom_fields": [
{
"key": <UUID>,
"api_name": c_region,
"label": "Region",
"value": "West"
}
],
"created_date": "2023-01-26T15:22:03+00:00",
"updated_date": "2023-01-26T15:22:03+00:00",
"deleted": false
}
Parameter | Description |
---|---|
id uuid |
Internal ID |
company_id uuid |
Internal Company ID |
name string |
Team name |
shortname string |
Shortname of the Team (used in the url above) |
avatar_url string |
Link to Team avatar |
banner_url string |
Link to Team banner |
custom_fields array of Question |
Custom field values |
created_date date |
Date & Time Team was originally created, ISO8601 format |
updated_date date |
Date & Time Team was last modified, ISO8601 format |
Team User
Team Users belong to Teams
Example:
{
"team_id": <UUID>,
"user_id": <UUID>,
"active": true,
"created_date": "2023-02-02T13:44:52+00:00",
"updated_date": "2023-02-02T13:45:52+00:00",
"permissions": "manager"
}
Parameter | Description |
---|---|
team_id uuid |
Internal Team ID |
user_id uuid |
Internal User ID |
active bool |
Active Flag |
created_date date |
Date & Time Team User was originally created, ISO8601 format |
updated_date date |
Date & Time Team User was last modified, ISO8601 format |
permissions string |
Team User permissions |
User
Users belong to your Organization
Example:
{
"id": <UUID>,
"first_name": "Michael",
"last_name": "Scott",
"shortname": "michaelscott",
"url": "https://app.greminders.com/c/michaelscott",
"avatar_url": null,
"email": "[email protected]",
"email_verified": true,
"alternative_emails": [],
"mobile_phone": "19495556666",
"active": true,
"deleted": false,
"country_code": "US",
"title": "",
"language": "en",
"timezone": "America/Los_Angeles",
"profile_id" : <UUID>,
"custom_fields": [
{
"key": <UUID>,
"api_name": c_expertise,
"label": "Expertise",
"value": "Management"
}
],
"created_date": "2022-06-13T10:58:45-07:00",
"updated_date": "2022-07-07T09:05:23+00:00"
}
Parameter | Description |
---|---|
id uuid |
Internal ID |
first_name string |
User first name |
last_name string |
User last name |
shortname string |
Shortname for User |
url string |
Public Scheduling Link for this User |
avatar_url string |
Link to this User avatar |
email string |
|
email_verified bool |
Has this email address been verified? |
alternative_emails array |
List of other/alternative email addresses of the User |
mobile_phone string |
Mobile Number in E.164 format |
active bool |
Is User Active, |
deleted bool |
Flag for scheduled deletion of the User from the database (If true, the user and his data will be deleted) |
country_code string |
ISO 3166-1 2 character Country Code |
title string |
Job Title |
language string |
Default Language |
timezone string |
Time Zone of User in IANA Time Zone format |
profile_id uuid |
Profile ID assigned to User |
custom_fields array of Question |
Custom field values |
created_date date |
Date & Time User was originally created, ISO8601 format |
updated_date date |
Date & Time User was last modified, ISO8601 format |
Registrant
Registrants belong to Events and are part of the Event Object Model
Example:
{
"id": <UUID>,
"first_name": "Some",
"last_name": "Person",
"email": "[email protected]",
"phone": null,
"role": "organizer",
"external_role": "required",
"status": "registered",
"internal": true,
"timezone": "America/Los_Angeles",
"confirm_url": "https://www.greminders.com/f/TDL7xW",
"reschedule_url": "https://www.greminders.com/r/TDL7xW",
"cancel_url": "https://www.greminders.com/c/TDL7xW",
"questions": [
{
"key": <UUID>,
"label": "sample question",
"value": "sample answer"
}
],
"source_email": "eventregistration",
"source_phone": "user",
"created_date": "2022-07-07T02:16:39-07:00",
"updated_date": "2022-07-07T02:16:39-07:00",
"payment": {
"amount": 50,
"currency": "USD",
"provider": "stripe",
"card_brand": "visa",
"discount_code": null,
"transaction_id": "pi_3MpLlbGEyKDZHOoW0fW1fm5C",
"card_holder_name": "Michael Scott",
"card_last4digits": "1111"
},
}
Parameter | Description |
---|---|
id uuid |
Internal Registrant ID |
first_name string |
First Name |
last_name string |
Last Name |
email string |
|
phone string |
Phone Number in E.164 Format |
role string |
Internal Role (organizer |
external_role string |
Role as defined by the External Calendar Event (sender,recipient,required,optional) |
status string |
Internal Status (registered,pending,confirmed,cancelled) |
internal bool |
Is this an Internal User (GReminders calculated) |
timezone string |
Time Zone of Registrant in IANA Time Zone format |
confirm_url string |
Public Confirmation URL |
reschedule_url string |
Public Reschedule URL |
cancel_url string |
Cancellation URL |
questions array of Question |
Custom Questions/Answers |
source_email string |
Source of the Email (where the email address was first found) |
source_phone string |
Source of the Phone Number (where the phone number was first found) |
created_date date |
Date & Time User was created, ISO8601 format |
updated_date date |
Date & Time User was last modified, ISO8601 format |
payment object |
Payment made by Registrant if used |
Meeting Url
Meeting Urls belong to Events and are part of the Event Object Model
Example:
{
"provider": "google_meet",
"url": "http://meetingurl"
}
Parameter | Description |
---|---|
provider string |
Provider Name (zoom, google_meet, etc...) |
url string |
URL of the Web Meeting |
Question
Questions belong to Registrants and are part of the Event/Registrant Object Model
Example:
{
"key": <UUID>,
"api_name": c_fav_color,
"label": "What is your favorite Color?",
"value": "Green"
}
Parameter | Description |
---|---|
key string |
Question Key |
api_name string |
Question API Name |
label string |
Question Label, the actual Question |
value string |
The Registrants Answer |
Profile
Profiles configured to your Organization
Example:
{
"id": <UUID>,
"name": "Standard User",
"permissions": [
"user"
],
"integrations": [
"zoom",
"gotomeeting"
],
"user_defaults": {
"allow_impersonate_calendar_view": true
},
"created_date": "2023-05-01T13:06:46+00:00",
"updated_date": "2023-05-02T11:47:55+00:00",
"created_by": <UUID>,
"updated_by": <UUID>
}
Parameter | Description |
---|---|
id uuid |
Internal ID |
name string |
Profile name |
permissions array |
Permissions list applied to users of the Profile |
integrations array |
Integrations list allowed to be used by users of the Profile |
user_defaults User Defaults |
Default settings for a new users |
created_date date |
Date & Time Profile was originally created, ISO8601 format |
updated_date date |
Date & Time Profile was last modified, ISO8601 format |
created_by uuid |
Internal User ID of the User who created Profile |
updated_by uuid |
Internal User ID of the user who last modified the Profile |
User Defaults
Default settings will be applied to a new users belonging to the provided user profile
Example:
{
"allow_impersonate_calendar_view": true
}
Parameter | Description |
---|---|
allow_impersonate_calendar_view bool |
Allow calendar viewing via Impersonation |
Pagination parameters
These parameters are used for pagination of the list of objects
Example:
GET https://api.greminders.com/calendars?limit=25&offset=0
Optional query parameters
Parameter | Description |
---|---|
limit int |
Limiting the number of objects on a page (default: 25) |
offset int |
Offset by a certain number of objects (default: 0) |
Pagination response
The response contains the "paging" object includes three links: the current page, the next page and the previous page.
Example:
{
"paging": {
"current": "https://api.greminders.com/calendars?limit=25&offset=25",
"previous": "https://api.greminders.com/calendars?limit=25&offset=0",
"next": "https://api.greminders.com/calendars?limit=25&offset=50"
}
}
Parameter | Description |
---|---|
current string |
Current page URL |
previous string |
Previous page URL |
next string |
Next page URL |
Single use link
Single use link belongs to Event types and is used to book an event only once
Example:
{
"link": "https://app.greminders.com/e/1464f5387dcd62a632d784a728b04d7b4dbc99ab"
}
Parameter | Description |
---|---|
link string |
Single use link to the Event |
Calendars API
List Calendars
Get a list of Calendars belonging to the authorized user
Example:
GET https://api.greminders.com/calendars?limit=25&offset=0
HTTP request
GET https://api.greminders.com/calendars
Standard Pagination parameters are used.
Example:
{
"results": [
{
"id": <UUID>,
"provider": "google",
"name": "[email protected]",
"external_id": "[email protected]",
"timezone": "UTC",
"color": "#9fe1e7",
"user_id": <UUID>,
"company_id": <UUID>,
"active": true,
"main": true,
"primary": true,
"created_date": "2023-01-05T16:18:34+00:00",
"updated_date": "2023-01-17T10:29:21+00:00",
"read_only": false,
"send_reminders": true,
"check_default_availability": true
}
],
"paging": {
"current": "https://api.greminders.com/calendars?limit=25&offset=0"
}
}
Responses
Returns list of Calendar objects and a Pagination response object.
Code | Description |
---|---|
200 | Successful response |
Get Calendar
Get a specific Calendar of the authorized user by ID
Example:
GET https://api.greminders.com/calendars/<UUID>
HTTP request
GET https://api.greminders.com/calendars/{id}
Path parameters
Parameter | Description |
---|---|
id uuid |
Internal user calendar ID |
Example:
{
"id": <UUID>,
"provider": "google",
"name": "[email protected]",
"external_id": "[email protected]",
"timezone": "UTC",
"color": "#9fe1e7",
"user_id": <UUID>,
"company_id": <UUID>,
"active": true,
"main": true,
"primary": true,
"created_date": "2023-01-05T16:18:34+00:00",
"updated_date": "2023-01-17T10:29:21+00:00",
"read_only": false,
"send_reminders": true,
"check_default_availability": true
}
Responses
Returns Calendar object
Code | Description |
---|---|
200 | Successful response |
404 | Calendar with requested ID does not exist |
Events API
List Events
Get a list of Events / Meetings / Appointments
Example:
GET https://api.greminders.com/events?from_date=2023-01-16&to_date=2023-01-17&include_canceled=true&calendar_id=<UUID>&event_type_id=<UUID>&limit=25&offset=0
HTTP request
GET https://api.greminders.com/events
Required query parameters
Parameter | Description |
---|---|
from_date date |
Start of date range to filter events, ISO8601 format |
to_date date |
End of date range to filter events, ISO8601 format |
Optional query parameters
Parameter | Description |
---|---|
include_canceled bool |
Filter to include canceled events |
include_all_users bool |
Filter to include All Users Events (You must be authenticated as an Administrator for this parameter to work). Default will filter to the Authenticated User. |
email string |
Filter on any Events with this email address as a participant |
calendar_id uuid |
Filter by Calendar ID |
event_type_id uuid |
Filter by Event Type ID |
Standard Pagination parameters are used.
Example:
{
"results": [
{
"id": <UUID>,
"external_id": "26jkvg7t3sp1ugmkd72tih91hk",
"user_id": <UUID>,
"calendar_id": <UUID>,
"event_type_id": <UUID>,
"url": "https://app.greminders.com/event/2142ba19-64a3-4109-9e60-64f47d9bcb49",
"weburl": "https://www.google.com/calendar/event?eid=MjZqa3ZnN3Qzc3AxdWdta2Q3MnRpaDkxaGsgbG9wYXRpbnNreXN2LnNkYWlAbQ",
"reschedule_url": "https://www.greminders.com/r/TDL7xW",
"cancel_url": "https://www.greminders.com/c/TDL7xW",
"location": "https://meet.google.com/utd-yois-fsp",
"body": "Review Value Proposition of ACME",
"name": "Demo Meeting with ACME Inc",
"status": "confirmed",
"freebusy": "busy",
"provider": "google",
"timezone": "America/Los_Angeles",
"categories": [],
"origination_date": "2022-07-07T02:16:35-07:00",
"start_date": "2022-07-07T23:30:00-07:00",
"end_date": "2022-07-08T00:00:00-07:00",
"created_date": "2022-07-07T02:16:35-07:00",
"updated_date": "2022-07-07T09:16:57+00:00",
"is_organizer": true,
"reply_status": null,
"all_day_event": false,
"client_timezone": "America/Los_Angeles",
"meeting_type": "some meeting type",
"meeting_urls": [
{
"url": "https://meet.google.com/utd-yois-fsp",
"provider": "google_meet"
}
],
"organizer": {
"id": <UUID>,
"role": "organizer",
"email": "[email protected]",
"phone": null,
"status": "registered",
"internal": true,
"timezone": "America/Los_Angeles",
"last_name": "Person",
"questions": [],
"cancel_url": "https://www.greminders.com/c/BgIzRz",
"first_name": "Some",
"confirm_url": "https://www.greminders.com/f/BgIzRz",
"created_date": "2022-07-07T02:49:06-07:00",
"source_email": null,
"source_phone": "user",
"updated_date": "2022-07-07T02:49:06-07:00",
"external_role": "sender",
"reschedule_url": "https://www.greminders.com/r/BgIzRz",
"payment": null
},
"registrants": [
{
"id": <UUID>,
"role": "participant",
"email": "[email protected]",
"phone": null,
"status": "registered",
"internal": false,
"timezone": "America/Los_Angeles",
"last_name": "Person",
"questions": [
{
"key": <UUID>,
"label": "sample question",
"value": "sample answer"
}
],
"cancel_url": "https://www.greminders.com/c/BgIzRz",
"first_name": "Another",
"confirm_url": "https://www.greminders.com/f/BgIzRz",
"created_date": "2022-07-07T02:49:06-07:00",
"source_email": "eventregistration",
"source_phone": null,
"updated_date": "2022-07-07T02:50:21-07:00",
"external_role": "recipient",
"reschedule_url": "https://www.greminders.com/r/BgIzRz",
"payment": {
"amount": 50,
"currency": "USD",
"provider": "stripe",
"card_brand": "visa",
"discount_code": null,
"transaction_id": "pi_3MpLlbGEyKDZHOoW0fW1fm5C",
"card_holder_name": "Michael Scott",
"card_last4digits": "1111"
}
}
],
"participants": [
{
"id": <UUID>,
"role": "participant",
"email": "[email protected]",
"phone": null,
"status": "registered",
"internal": false,
"timezone": "America/Los_Angeles",
"last_name": "Person",
"questions": [],
"cancel_url": "https://www.greminders.com/c/BgIzRz",
"first_name": "Another",
"confirm_url": "https://www.greminders.com/f/BgIzRz",
"created_date": "2022-07-07T02:49:06-07:00",
"source_email": "eventregistration",
"source_phone": null,
"updated_date": "2022-07-07T02:50:21-07:00",
"external_role": "recipient",
"reschedule_url": "https://www.greminders.com/r/BgIzRz",
"payment": {
"amount": 50,
"currency": "USD",
"provider": "stripe",
"card_brand": "visa",
"discount_code": null,
"transaction_id": "pi_3MpLlbGEyKDZHOoW0fW1fm5C",
"card_holder_name": "Michael Scott",
"card_last4digits": "1111"
}
},
{
"id": <UUID>,
"role": "organizer",
"email": "[email protected]",
"phone": null,
"status": "registered",
"internal": true,
"timezone": "America/Los_Angeles",
"last_name": "Person",
"questions": [],
"cancel_url": "https://www.greminders.com/c/BgIzRz",
"first_name": "Some",
"confirm_url": "https://www.greminders.com/f/BgIzRz",
"created_date": "2022-07-07T02:49:06-07:00",
"source_email": null,
"source_phone": "user",
"updated_date": "2022-07-07T02:49:06-07:00",
"external_role": "sender",
"reschedule_url": "https://www.greminders.com/r/BgIzRz",
"payment": null
}
]
}
],
"paging": {
"current": "https://api.greminders.com/events?from_date=2023-01-16&to_date=2023-01-16&limit=25&offset=0"
}
}
Responses
Returns list of Event objects and a Pagination response object.
Code | Description |
---|---|
200 | Successful response |
400 | Some of the parameters are specified incorrectly |
Get Event
Get Event by ID
Example:
GET https://api.greminders.com/events/<UUID>
HTTP request
GET https://api.greminders.com/events/{id}
Path parameters
Parameter | Description |
---|---|
id uuid |
Internal Event ID |
Optional query parameters
Parameter | Description |
---|---|
include_all_users bool |
Filter to include All Users Events (You must be authenticated as an Administrator for this parameter to work). Default will filter to the Authenticated User. |
Example:
{
"id": <UUID>,
"external_id": "26jkvg7t3sp1ugmkd72tih91hk",
"user_id": <UUID>,
"calendar_id": <UUID>,
"event_type_id": <UUID>,
"url": "https://app.greminders.com/event/2142ba19-64a3-4109-9e60-64f47d9bcb49",
"weburl": "https://www.google.com/calendar/event?eid=MjZqa3ZnN3Qzc3AxdWdta2Q3MnRpaDkxaGsgbG9wYXRpbnNreXN2LnNkYWlAbQ",
"reschedule_url": "https://www.greminders.com/r/TDL7xW",
"cancel_url": "https://www.greminders.com/c/TDL7xW",
"location": "https://meet.google.com/utd-yois-fsp",
"body": "Review Value Proposition of ACME",
"name": "Demo Meeting with ACME Inc",
"status": "confirmed",
"freebusy": "busy",
"provider": "google",
"timezone": "America/Los_Angeles",
"categories": [],
"origination_date": "2022-07-07T02:16:35-07:00",
"start_date": "2022-07-07T23:30:00-07:00",
"end_date": "2022-07-08T00:00:00-07:00",
"created_date": "2022-07-07T02:16:35-07:00",
"updated_date": "2022-07-07T09:16:57+00:00",
"is_organizer": true,
"reply_status": null,
"all_day_event": false,
"client_timezone": "America/Los_Angeles",
"meeting_type": "some meeting type",
"meeting_urls": [
{
"url": "https://meet.google.com/utd-yois-fsp",
"provider": "google_meet"
}
],
"organizer": {
"id": <UUID>,
"role": "organizer",
"email": "[email protected]",
"phone": null,
"status": "registered",
"internal": true,
"timezone": "America/Los_Angeles",
"last_name": "Person",
"questions": [],
"cancel_url": "https://www.greminders.com/c/BgIzRz",
"first_name": "Some",
"confirm_url": "https://www.greminders.com/f/BgIzRz",
"created_date": "2022-07-07T02:49:06-07:00",
"source_email": null,
"source_phone": "user",
"updated_date": "2022-07-07T02:49:06-07:00",
"external_role": "sender",
"reschedule_url": "https://www.greminders.com/r/BgIzRz",
"payment": null
},
"registrants": [
{
"id": <UUID>,
"role": "participant",
"email": "[email protected]",
"phone": null,
"status": "registered",
"internal": false,
"timezone": "America/Los_Angeles",
"last_name": "Person",
"questions": [
{
"key": <UUID>,
"label": "sample question",
"value": "sample answer"
}
],
"cancel_url": "https://www.greminders.com/c/BgIzRz",
"first_name": "Another",
"confirm_url": "https://www.greminders.com/f/BgIzRz",
"created_date": "2022-07-07T02:49:06-07:00",
"source_email": "eventregistration",
"source_phone": null,
"updated_date": "2022-07-07T02:50:21-07:00",
"external_role": "recipient",
"reschedule_url": "https://www.greminders.com/r/BgIzRz",
"payment": {
"amount": 50,
"currency": "USD",
"provider": "stripe",
"card_brand": "visa",
"discount_code": null,
"transaction_id": "pi_3MpLlbGEyKDZHOoW0fW1fm5C",
"card_holder_name": "Michael Scott",
"card_last4digits": "1111"
}
}
],
"participants": [
{
"id": <UUID>,
"role": "participant",
"email": "[email protected]",
"phone": null,
"status": "registered",
"internal": false,
"timezone": "America/Los_Angeles",
"last_name": "Person",
"questions": [],
"cancel_url": "https://www.greminders.com/c/BgIzRz",
"first_name": "Another",
"confirm_url": "https://www.greminders.com/f/BgIzRz",
"created_date": "2022-07-07T02:49:06-07:00",
"source_email": "eventregistration",
"source_phone": null,
"updated_date": "2022-07-07T02:50:21-07:00",
"external_role": "recipient",
"reschedule_url": "https://www.greminders.com/r/BgIzRz",
"payment": {
"amount": 50,
"currency": "USD",
"provider": "stripe",
"card_brand": "visa",
"discount_code": null,
"transaction_id": "pi_3MpLlbGEyKDZHOoW0fW1fm5C",
"card_holder_name": "Michael Scott",
"card_last4digits": "1111"
}
},
{
"id": <UUID>,
"role": "organizer",
"email": "[email protected]",
"phone": null,
"status": "registered",
"internal": true,
"timezone": "America/Los_Angeles",
"last_name": "Person",
"questions": [],
"cancel_url": "https://www.greminders.com/c/BgIzRz",
"first_name": "Some",
"confirm_url": "https://www.greminders.com/f/BgIzRz",
"created_date": "2022-07-07T02:49:06-07:00",
"source_email": null,
"source_phone": "user",
"updated_date": "2022-07-07T02:49:06-07:00",
"external_role": "sender",
"reschedule_url": "https://www.greminders.com/r/BgIzRz",
"payment": null
}
]
}
Responses
Returns Event object
Code | Description |
---|---|
200 | Successful response |
404 | Event with requested ID does not exist |
Event types API
List Event types
Get a list of Event types
Example:
GET https://api.greminders.com/event-types?limit=25&offset=0
HTTP request
GET https://api.greminders.com/event-types
Standard Pagination parameters are used.
Example:
{
"results": [
{
"id": <UUID>,
"url": "https://app.greminders.com/c/someperson/demomeeting",
"name": "Demo Meeting",
"type": "single",
"active": true,
"team_id": null,
"user_id": <UUID>,
"location": "",
"start_buffer": "+2 hours",
"tail_buffer": 0,
"shortname": "demomeeting",
"show_home": true,
"calendar_id": null,
"description": "",
"created_date": "2022-07-07T08:56:22+00:00",
"updated_date": "2022-07-07T08:56:22+00:00",
"meeting_type": "some meeting type",
"last_booked": "2022-07-07T08:56:22+00:00",
"times_used": 1,
"require_approval": false,
"sensitivity": "normal",
"location_type": "google_meet",
"event_duration_max": null,
"event_duration_min": null,
"event_duration_default": 30,
"event_duration_type": "fixed",
"event_duration" : 30,
"max_events_per_slot": null,
"can_schedule_from": null,
"can_schedule_until": null,
"can_schedule_within": "+60 days",
"add_customer_to_calendar_invite": true,
"add_organizer_to_calendar_invite": true,
"locations": [
{
"type": "location",
"description": "1234 Main St. Los Angeles, CA 90001"
},
{
"type": "web_meeting",
"provider": "google_meet",
"description": "Google Meet"
},
{
"type": "phone_call",
"description": "{{invitee.phone}}"
},
{
"type": "web_meeting",
"provider": "gotomeeting",
"description": "GoToMeeting"
}
]
}
],
"paging": {
"current": "https://api.greminders.com/event-types?limit=25&offset=0"
}
}
Responses
Returns list of Event type objects and a Pagination response object.
Code | Description |
---|---|
200 | Successful response |
Get Event type
Get Event type by ID
Example:
GET https://api.greminders.com/event-types/<UUID>
HTTP request
GET https://api.greminders.com/event-types/{id}
Path parameters
Parameter | Description |
---|---|
id uuid |
Internal Event type ID |
Example:
{
"id": <UUID>,
"url": "https://app.greminders.com/c/someperson/demomeeting",
"name": "Demo Meeting",
"type": "single",
"active": true,
"team_id": null,
"user_id": <UUID>,
"location": "",
"start_buffer": "+2 hours",
"tail_buffer": 0,
"shortname": "demomeeting",
"show_home": true,
"calendar_id": null,
"description": "",
"created_date": "2022-07-07T08:56:22+00:00",
"updated_date": "2022-07-07T08:56:22+00:00",
"meeting_type": "some meeting type",
"last_booked": "2022-07-07T08:56:22+00:00",
"times_used": 1,
"require_approval": false,
"sensitivity": "normal",
"location_type": "google_meet",
"event_duration_max": null,
"event_duration_min": null,
"event_duration_default": 30,
"event_duration_type": "fixed",
"event_duration" : 30,
"max_events_per_slot": null,
"can_schedule_from": null,
"can_schedule_until": null,
"can_schedule_within": "+60 days",
"add_customer_to_calendar_invite": true,
"add_organizer_to_calendar_invite": true,
"locations": [
{
"type": "location",
"description": "1234 Main St. Los Angeles, CA 90001"
},
{
"type": "web_meeting",
"provider": "google_meet",
"description": "Google Meet"
},
{
"type": "phone_call",
"description": "{{invitee.phone}}"
},
{
"type": "web_meeting",
"provider": "gotomeeting",
"description": "GoToMeeting"
}
]
}
Responses
Returns Event type object
Code | Description |
---|---|
200 | Successful response |
404 | Event type with requested ID does not exist |
Get Single use link
Get Single use link by Event type ID
Example:
GET https://api.greminders.com/event-types/<UUID>/single-use-link
HTTP request
GET https://api.greminders.com/event-types/{id}/single-use-link
Path parameters
Parameter | Description |
---|---|
id uuid |
Internal Event type ID |
Example:
{
"link": "https://app.greminders.com/e/1464f5387dcd62a632d784a728b04d7b4dbc99ab"
}
Responses
Returns Single use link object
Code | Description |
---|---|
200 | Successful response |
403 | You do not have permission for this |
404 | Event type with requested ID does not exist |
Teams API
List Teams
Get a list of Teams
Example:
GET https://api.greminders.com/teams?limit=25&offset=0
HTTP request
GET https://api.greminders.com/teams
Standard Pagination parameters are used.
Example:
{
"results": [
{
"id": <UUID>,
"company_id": <UUID>,
"name": "Sales Team West",
"shortname": "484ee5fb",
"avatar_url": "",
"banner_url": "https://app.greminders.com/static/build/banner-default.jpg",
"custom_fields": [
{
"key": <UUID>,
"api_name": c_region,
"label": "Region",
"value": "West"
}
],
"created_date": "2023-01-26T15:22:03+00:00",
"updated_date": "2023-01-26T15:22:03+00:00",
"deleted": false
}
],
"paging": {
"current": "https://api.greminders.com/teams?limit=25&offset=0"
}
}
Responses
Returns list of Team objects and a Pagination response object.
Code | Description |
---|---|
200 | Successful response |
Get Team
Get Team by ID
Example:
GET https://api.greminders.com/teams/<UUID>
HTTP request
GET https://api.greminders.com/teams/{id}
Path parameters
Parameter | Description |
---|---|
id uuid |
Internal Team ID |
Example:
{
"id": <UUID>,
"company_id": <UUID>,
"name": "Team name",
"shortname": "484ee5fb",
"avatar_url": "",
"banner_url": "https://app.greminders.com/static/build/banner-default.jpg",
"custom_fields": [],
"created_date": "2023-01-26T15:22:03+00:00",
"updated_date": "2023-01-26T15:22:03+00:00",
"deleted": false
}
Responses
Returns Team object
Code | Description |
---|---|
200 | Successful response |
404 | Team with requested ID does not exist |
Create Team
Create new Team
Example:
POST https://api.greminders.com/teams
{
"name": "Team name"
}
HTTP request
POST https://api.greminders.com/teams
Required body parameters
Parameter | Description |
---|---|
name string |
Name of new Team |
custom_fields array of Question |
Custom field values (optional) |
Example:
{
"id": <UUID>,
"company_id": <UUID>,
"name": "Team name",
"shortname": "484ee5fb",
"avatar_url": "",
"banner_url": "https://app.greminders.com/static/build/banner-default.jpg",
"custom_fields": [],
"created_date": "2023-01-26T15:22:03+00:00",
"updated_date": "2023-01-26T15:22:03+00:00",
"deleted": false
}
Responses
Returns Team object
Code | Description |
---|---|
200 | Successful response |
400 | Some of the parameters are specified incorrectly |
403 | You do not have permission for this |
Update Team
Update Team data
Example:
PUT https://api.greminders.com/teams/<UUID>
{
"name": "Sales Team East",
"custom_fields": [
{
"api_name": c_region,
"value": "East"
}
]
}
HTTP request
PUT https://api.greminders.com/teams/{id}
Path parameters
Parameter | Description |
---|---|
id uuid |
Internal Team ID |
Optional body parameters
Parameter | Description |
---|---|
name string |
Name of new Team |
custom_fields array of Question |
Custom field values (optional) |
Example:
{
"id": <UUID>,
"company_id": <UUID>,
"name": "Sales Team East",
"shortname": "484ee5fb",
"avatar_url": "",
"banner_url": "https://app.greminders.com/static/build/banner-default.jpg",
"custom_fields": [
{
"key": <UUID>,
"api_name": c_region,
"label": "Region",
"value": "East"
}
],
"created_date": "2023-01-26T15:22:03+00:00",
"updated_date": "2023-01-26T15:22:03+00:00",
"deleted": false
}
Responses
Returns Team object
Code | Description |
---|---|
200 | Successful response |
400 | Some of the parameters are specified incorrectly |
403 | You do not have permission for this |
404 | Team with requested ID does not exist |
Delete Team
Delete Team
Example:
DELETE https://api.greminders.com/teams/<UUID>
HTTP request
DELETE https://api.greminders.com/teams/{id}
Path parameters
Parameter | Description |
---|---|
id uuid |
Internal Team ID |
Responses
Code | Description |
---|---|
204 | Successful response |
403 | You do not have permission for this |
404 | Team with requested ID does not exist |
List Event Types of Team
Get a list of Event types belonging to a Team
Example:
GET https://api.greminders.com/teams/<UUID>/event-types?limit=25&offset=0
HTTP request
GET https://api.greminders.com/teams/{team_id}/event-types
Path parameters
Parameter | Description |
---|---|
team_id uuid |
Internal Team ID |
Standard Pagination parameters are used.
Example:
{
"results": [
{
"id": <UUID>,
"url": "https://app.greminders.com/c/someperson/demomeeting",
"name": "Demo Meeting",
"type": "single",
"active": true,
"team_id": null,
"user_id": <UUID>,
"location": "",
"start_buffer": "+2 hours",
"tail_buffer": 0,
"shortname": "demomeeting",
"show_home": true,
"calendar_id": null,
"description": "",
"created_date": "2022-07-07T08:56:22+00:00",
"updated_date": "2022-07-07T08:56:22+00:00",
"meeting_type": "some meeting type",
"last_booked": "2022-07-07T08:56:22+00:00",
"times_used": 1,
"require_approval": false,
"sensitivity": "normal",
"location_type": "google_meet",
"event_duration_max": null,
"event_duration_min": null,
"event_duration_default": 30,
"event_duration_type": "fixed",
"event_duration" : 30,
"max_events_per_slot": null,
"can_schedule_from": null,
"can_schedule_until": null,
"can_schedule_within": "+60 days",
"add_customer_to_calendar_invite": true,
"add_organizer_to_calendar_invite": true,
"locations": [
{
"type": "location",
"description": "1234 Main St. Los Angeles, CA 90001"
},
{
"type": "web_meeting",
"provider": "google_meet",
"description": "Google Meet"
},
{
"type": "phone_call",
"description": "{{invitee.phone}}"
},
{
"type": "web_meeting",
"provider": "gotomeeting",
"description": "GoToMeeting"
}
]
}
],
"paging": {
"current": "https://api.greminders.com/teams/ea21b85b-3cc0-49e3-ac7e-ffb267aa6263/event_types?limit=25&offset=0"
}
}
Responses
Returns list of Event type objects belonging to a Team and a Pagination response object.
Code | Description |
---|---|
200 | Successful response |
Get Event Type of Team
Get the Event type by ID that belongs to the Team
Example:
GET https://api.greminders.com/teams/<UUID>/event_types/<UUID>
HTTP request
GET https://api.greminders.com/teams/{team_id}/event_types/{event_type_id}
Path parameters
Parameter | Description |
---|---|
team_id uuid |
Internal Team ID |
event_type_id uuid |
Internal Event type ID |
Example:
{
"id": <UUID>,
"url": "https://app.greminders.com/c/someperson/demomeeting",
"name": "Demo Meeting",
"type": "single",
"active": true,
"team_id": null,
"user_id": <UUID>,
"location": "",
"start_buffer": "+2 hours",
"tail_buffer": 0,
"shortname": "demomeeting",
"show_home": true,
"calendar_id": null,
"description": "",
"created_date": "2022-07-07T08:56:22+00:00",
"updated_date": "2022-07-07T08:56:22+00:00",
"meeting_type": "some meeting type",
"last_booked": "2022-07-07T08:56:22+00:00",
"times_used": 1,
"require_approval": false,
"sensitivity": "normal",
"location_type": "google_meet",
"event_duration_max": null,
"event_duration_min": null,
"event_duration_default": 30,
"event_duration_type": "fixed",
"event_duration" : 30,
"max_events_per_slot": null,
"can_schedule_from": null,
"can_schedule_until": null,
"can_schedule_within": "+60 days",
"add_customer_to_calendar_invite": true,
"add_organizer_to_calendar_invite": true,
"locations": [
{
"type": "location",
"description": "1234 Main St. Los Angeles, CA 90001"
},
{
"type": "web_meeting",
"provider": "google_meet",
"description": "Google Meet"
},
{
"type": "phone_call",
"description": "{{invitee.phone}}"
},
{
"type": "web_meeting",
"provider": "gotomeeting",
"description": "GoToMeeting"
}
]
}
Responses
Returns Event type object
Code | Description |
---|---|
200 | Successful response |
404 | Team and event type with requested IDs do not exist |
Get Single use link
Get Single use link by Event type ID that belongs to the Team
Example:
GET https://api.greminders.com/teams/<UUID>/event-types/<UUID>/single-use-link
HTTP request
GET https://api.greminders.com/teams/{team_id}/event-types/{event_type_id}/single-use-link
Path parameters
Parameter | Description |
---|---|
team_id uuid |
Internal Team ID |
event_type_id uuid |
Internal Event type ID |
Example:
{
"link": "https://app.greminders.com/e/1464f5387dcd62a632d784a728b04d7b4dbc99ab"
}
Responses
Returns Single use link object
Code | Description |
---|---|
200 | Successful response |
403 | You do not have permission for this |
404 | Event type with requested ID does not exist |
Team Users API
List Team Users
Get a list of Team users
Example:
GET https://api.greminders.com/teams/<UUID>/members?limit=25&offset=0
HTTP request
GET https://api.greminders.com/teams/{team_id}/members
Path parameters
Parameter | Description |
---|---|
team_id uuid |
Internal Team ID |
Standard Pagination parameters are used.
Example:
{
"results": [
{
"team_id": <UUID>,
"user_id": <UUID>,
"active": true,
"created_date": "2023-02-02T13:44:52+00:00",
"updated_date": "2023-02-02T13:45:52+00:00",
"permissions": "manager"
}
],
"paging": {
"current": "https://api.greminders.com/teams/ea21b85b-3cc0-49e3-ac7e-ffb267aa6263/members?limit=25&offset=0"
}
}
Responses
Returns list of Team user objects and a Pagination response object.
Code | Description |
---|---|
200 | Successful response |
403 | You do not have permission for this |
Get Team User
Get Team User by ID
Example:
GET https://api.greminders.com/teams/<UUID>/members/<UUID>
HTTP request
GET https://api.greminders.com/teams/{team_id}/members/{user_id}
Path parameters
Parameter | Description |
---|---|
team_id uuid |
Internal Team ID |
user_id uuid |
Internal User ID |
Example:
{
"team_id": <UUID>,
"user_id": <UUID>,
"active": true,
"created_date": "2023-02-02T13:44:52+00:00",
"updated_date": "2023-02-02T13:45:52+00:00",
"permissions": "manager"
}
Responses
Returns Team User object
Code | Description |
---|---|
200 | Successful response |
403 | You do not have permission for this |
404 | Team and user with requested IDs do not exist |
Add Team User
Add User to Team
Example:
POST https://api.greminders.com/teams/<UUID>/members
{
"user_id": <UUID>,
"permissions": "member"
}
HTTP request
POST https://api.greminders.com/teams/{team_id}/members
Path parameters
Parameter | Description |
---|---|
team_id uuid |
Internal Team ID |
Required body parameters
Parameter | Description |
---|---|
user_id uuid |
Internal User ID |
permissions string |
String value of team user permission (can be "manager" or "member") |
Example:
{
"team_id": <UUID>,
"user_id": <UUID>,
"active": true,
"created_date": "2023-02-02T13:44:52+00:00",
"updated_date": "2023-02-02T13:45:52+00:00",
"permissions": "member"
}
Responses
Returns Team User object
Code | Description |
---|---|
200 | Successful response |
400 | Some of the parameters are specified incorrectly |
403 | You do not have permission for this |
404 | User with requested ID does not exist |
Update Team User
Update Team User data
PUT https://api.greminders.com/teams/
/members/<UUID>:
{
"user_id": <UUID>,
"permissions": "manager",
"active": true
}
HTTP request
PUT https://api.greminders.com/teams/{team_id}/members/{user_id}
Path parameters
Parameter | Description |
---|---|
team_id uuid |
Internal Team ID |
user_id uuid |
Internal User ID |
Optional body parameters
Parameter | Description |
---|---|
active bool |
Active Flag |
permissions string |
String value of team user permission (can be "manager" or "member") |
Example:
{
"team_id": <UUID>,
"user_id": <UUID>,
"active": false,
"created_date": "2023-02-02T13:44:52+00:00",
"updated_date": "2023-02-02T13:45:52+00:00",
"permissions": "manager"
}
Responses
Returns Team User object
Code | Description |
---|---|
200 | Successful response |
400 | Some of the parameters are specified incorrectly |
403 | You do not have permission for this |
404 | Team and user with requested IDs do not exist |
Delete Team User
Delete Team User
Example:
DELETE https://api.greminders.com/teams/<UUID>/members/<UUID>
HTTP request
DELETE https://api.greminders.com/teams/{team_id}/members/{user_id}
Path parameters
Parameter | Description |
---|---|
team_id uuid |
Internal Team ID |
user_id uuid |
Internal User ID |
Responses
Code | Description |
---|---|
204 | Successful response |
403 | You do not have permission for this |
404 | Team and user with requested IDs do not exist |
Users API
List Users
Get a list of Users
Example:
GET https://api.greminders.com/users?q=john
HTTP request
GET https://api.greminders.com/users
Optional query parameters
Parameter | Description |
---|---|
q string |
text search string (optional) |
Standard Pagination parameters are used.
Example:
{
"results": [
{
"id": <UUID>,
"url": "https://app.greminders.com/c/someperson",
"email": "[email protected]",
"title": "",
"active": true,
"language": "en",
"timezone": "America/Los_Angeles",
"shortname": "someperson",
"country_code": "US",
"created_date": "2022-06-13T10:58:45-07:00",
"mobile_phone": "19495556666",
"profile_id" : <UUID>,
"custom_fields": [
{
"key": <UUID>,
"api_name": c_apiname
"label": "sample field",
"value": "sample value"
}
],
"updated_date": "2022-07-07T09:05:23+00:00",
"email_verified": false
}
],
"paging": {
"current": "https://api.greminders.com/users?limit=25&offset=0"
}
}
Responses
The method returns a "results" object, which contains a list of User objects and a Pagination response object.
Code | Description |
---|---|
200 | Successful response |
400 | Some of the parameters are specified incorrectly |
403 | You do not have permission for this |
Get User
Get User by ID
Example:
GET https://api.greminders.com/users/<UUID>
HTTP request
GET https://api.greminders.com/users/{id}
Path parameters
Parameter | Description |
---|---|
id uuid |
Internal User ID |
Example:
{
"id": <UUID>,
"url": "https://app.greminders.com/c/someperson",
"email": "[email protected]",
"title": "",
"active": true,
"language": "en",
"timezone": "America/Los_Angeles",
"shortname": "someperson",
"country_code": "US",
"created_date": "2022-06-13T10:58:45-07:00",
"mobile_phone": "19495556666",
"profile_id" : <UUID>,
"custom_fields": [
{
"key": <UUID>,
"api_name": c_expertise,
"label": "Expertise",
"value": "Management"
}
],
"updated_date": "2022-07-07T09:05:23+00:00",
"email_verified": false
}
Responses
Returns User object
Code | Description |
---|---|
200 | Successful response |
403 | You do not have permission for this |
404 | User with requested ID does not exist |
Invite User
Invite a New User
Example:
POST https://api.greminders.com/users
{
"email": "[email protected]",
"send_invitations": true,
"profile_id": <UUID>
}
HTTP request
POST https://api.greminders.com/users
Body parameters
Parameter | Description |
---|---|
email string |
The email address to which the invitation letter will be sent (required) |
send_invitations bool |
Send Invite via Email? (optional) |
profile_id uuid |
User profile ID to Assign to user (optional). Standard User profile will be applied If not provided. |
Example:
{
"id": <UUID>,
"url": "https://app.greminders.com/c/someperson",
"email": "[email protected]",
"title": "",
"active": true,
"language": "en",
"timezone": "America/Los_Angeles",
"shortname": "someperson",
"country_code": "US",
"created_date": "2022-06-13T10:58:45-07:00",
"mobile_phone": "19495556666",
"updated_date": "2022-07-07T09:05:23+00:00",
"email_verified": false,
"profile_id" : <UUID>,
"invite_url": "https://app.greminders.com/gettingstarted/<UUID>/s"
}
Responses
Returns User object
Code | Description |
---|---|
200 | Successful response |
400 | Some of the parameters are specified incorrectly |
403 | You do not have permission for this |
Update User
Update User data
Example:
PUT https://api.greminders.com/users/<UUID>
{
"first_name": "some",
"last_name": "person",
"email": "[email protected]",
"mobile_phone": "19495556666",
"alternative_emails": [],
"title": "",
"country_code": "US",
"timezone": "America/Los_Angeles",
"active": true,
"profile_id": <UUID>,
"custom_fields": [
{
"api_name": c_expertise,
"value": "Sales"
}
],
}
HTTP request
PUT https://api.greminders.com/users/{id}
Path parameters
Parameter | Description |
---|---|
id uuid |
Internal User ID |
Optional body parameters
Parameter | Description |
---|---|
first_name string |
First name |
last_name string |
Last name |
email string |
|
mobile_phone string |
Mobile phone number in E.164 format |
alternate_emails array of strings |
Alternate User emails |
title string |
Job Title |
country_code string |
ISO 3166-1 2 character Country Code |
timezone string |
Time Zone of User in IANA Time Zone format |
active bool |
Active User Flag |
profile_id uuid |
User profile ID to Assign to user. |
custom_fields array of Question |
Custom field values (optional) |
Example:
{
"id": <UUID>,
"first_name": "some",
"last_name": "person",
"shortname": "someperson",
"url": "https://app.greminders.com/c/someperson",
"avatar_url": "https://avatar-url",
"email": "[email protected]",
"email_verified": true,
"alternative_emails": [],
"mobile_phone": "19495556666",
"active": true,
"deleted": false,
"country_code": "US",
"title": "",
"language": "en",
"timezone": "America/Los_Angeles",
"profile_id": <UUID>,
"custom_fields": [
{
"key": <UUID>,
"api_name": c_expertise,
"label": "Expertise",
"value": "Sales"
}
],
"created_date": "2022-07-07T09:05:23+00:00",
"updated_date": "2022-07-07T09:05:23+00:00"
}
Responses
Returns User object
Code | Description |
---|---|
200 | Successful response |
400 | Some of the parameters are specified incorrectly |
403 | You do not have permission for this |
404 | User with requested ID does not exist |
Delete User
Delete User
Example:
DELETE https://api.greminders.com/users/<UUID>
HTTP request
DELETE https://api.greminders.com/users/{id}
Path parameters
Parameter | Description |
---|---|
id uuid |
Internal User ID |
Responses
Code | Description |
---|---|
204 | Successful response |
403 | You do not have permission for this |
404 | User with requested ID does not exist |
User Invite URL
Return the Invite URL for the User. If the User has no invite URL or it has already expired the system will generate a new one. If the User has already accepted the invite the system will return "invite_accepted".
Example:
GET https://api.greminders.com/users/<UUID>/invite-url
HTTP request
GET https://api.greminders.com/users/{id}/invite-url
Path parameters
Parameter | Description |
---|---|
id uuid |
Internal User ID |
Example:
// A valid Invite URL
{ "invite_url": "https://app.greminders.com/gettingstarted/<UUID>/s" }
// The User has already accepted the invite
{ "invite_url": "invite_accepted" }
// The User is inactive. Inactive Users cannot have invite URLs
{ "invite_url": null }
Responses
Code | Description |
---|---|
204 | Successful response |
403 | You do not have permission for this |
404 | User with requested ID does not exist |
Profiles API
List Profiles
Get a list of Profiles
Example:
GET https://api.greminders.com/profiles
HTTP request
GET https://api.greminders.com/profiles
Standard Pagination parameters are used.
Example:
{
"results": [
{
"id": <UUID>,
"name": "Standard User",
"permissions": [
"user"
],
"integrations": [
"zoom",
"gotomeeting"
],
"user_defaults": {
"allow_impersonate_calendar_view": true
},
"created_date": "2023-05-01T13:06:46+00:00",
"updated_date": "2023-05-02T11:47:55+00:00",
"created_by": <UUID>,
"updated_by": <UUID>
},
{
"id": <UUID>,
"name": "Administrator",
"permissions": [
"administrator",
"reports",
"user"
],
"integrations": [
"zoom",
"gotomeeting",
"salesloft"
],
"user_defaults": {
"allow_impersonate_calendar_view": true
},
"created_date": "2023-05-01T13:06:46+00:00",
"updated_date": "2023-05-04T08:25:09+00:00",
"created_by": <UUID>,
"updated_by": <UUID>
}
],
"paging": {
"current": "https://.greminders.com/profiles?limit=25&offset=0"
}
}
Responses
The method returns a "results" object, which contains a list of Profiles objects and a Pagination response object.
Code | Description |
---|---|
200 | Successful response |
400 | Some of the parameters are specified incorrectly |
403 | You do not have permission for this |
Get Profile
Get Profile by ID
Example:
GET https://api.greminders.com/profiles/<UUID>
HTTP request
GET https://api.greminders.com/profiles/{id}
Path parameters
Parameter | Description |
---|---|
id uuid |
Internal User ID |
Example:
{
"id": <UUID>,
"name": "Standard User",
"permissions": [
"user"
],
"integrations": [
"zoom",
"gotomeeting"
],
"user_defaults": {
"allow_impersonate_calendar_view": true
},
"created_date": "2023-05-01T13:06:46+00:00",
"updated_date": "2023-05-02T11:47:55+00:00",
"created_by": <UUID>,
"updated_by": <UUID>
}
Responses
Returns Profile object
Code | Description |
---|---|
200 | Successful response |
403 | You do not have permission for this |
404 | Profile with requested ID does not exist |