NAV
php python csharp

API Overview

Welcome to the GReminders API. The GReminders API has 2 parts:

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:

Working with Webhooks

Webhook Subscription

To create webhook subscription follow next steps:

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:

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
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 Email
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 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 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 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 Email
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