Okendo
  • Introduction
  • Merchant REST API
    • Quick Start
    • Endpoints
  • On Site
    • On Site Widgets
      • Reviews Widget
      • Star Rating
      • Questions Widget
      • Reviews Carousel Widget
      • Media Grid Widget
      • Media Carousel Widget
      • Reviews Badge Widget
      • Reviews Modal Trigger
    • Storefront Javascript API
      • Widget Plus Window API
      • Surveys - Connect Window API
      • Quizzes - Connect Window API
      • Referrals Window API
      • Inspiration
    • Storefront REST API
      • Quick Start
      • Endpoints
    • Advanced Widget Installs
      • Installing Widget Plus on Headless Instances
      • Installing Connect Surveys on Headless Instances
      • Stores Running an Existing Vue App
      • Installing Quizzes on Headless Instances
  • Okendo Shopify Hydrogen Support
Powered by GitBook
On this page
  1. Merchant REST API

Endpoints

PreviousQuick StartNextOn Site Widgets

Last updated 1 month ago

Reviews

Loyalty

Customers

Groups

Webhooks

Retrieve basic details about a Loyalty Customer

get
Authorizations
Query parameters
loyaltyCustomerIdstring · uuidOptional

The ID of the Loyalty Customer. Note: May not be used in combination with the email parameter

emailstring · emailOptional

The email address of the Loyalty Customer. Note: May not be used in combination with the loyaltyCustomerId parameter

Example: email@example.com
Responses
200
An object containing basic details about a Loyalty Customer.
application/json
401
Authentication credentials are missing or incorrect.
403
The requested resource is forbidden.
application/json
404
The requested resource could not be found.
application/json
get
GET /enterprise/loyalty/customers HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
  "loyaltyCustomer": {
    "loyaltyCustomerId": "123e4567-e89b-12d3-a456-426614174000",
    "minimumVipTierName": "text",
    "points": {
      "balance": 1
    },
    "status": "pending",
    "vipTierName": "text"
  }
}

List ways to earn loyalty points

get

Lists the available ways to earn loyalty points. If a Loyalty Customer is specified, this returns ways of earning and amounts tailored to that customer.

Authorizations
Query parameters
loyaltyCustomerIdstring · uuidOptional

The ID of the Loyalty Customer. Note: May not be used in combination with the email parameter

emailstring · emailOptional

The email address of the Loyalty Customer. Note: May not be used in combination with the loyaltyCustomerId parameter

Example: email@example.com
Responses
200
An object containing a list of earning rules.
application/json
401
Authentication credentials are missing or incorrect.
403
The requested resource is forbidden.
application/json
404
The requested resource could not be found.
application/json
get
GET /enterprise/loyalty/earning_rules HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
  "rules": [
    {
      "type": "fixed-amount",
      "amount": 1
    }
  ]
}

List ways to redeem loyalty points for rewards

get

Lists the available ways to redeem loyalty points for rewards. If a Loyalty Customer is specified, this returns ways of earning and amounts tailored to that customer.

Authorizations
Query parameters
loyaltyCustomerIdstring · uuidOptional

The ID of the Loyalty Customer. Note: May not be used in combination with the email parameter

emailstring · emailOptional

The email address of the Loyalty Customer. Note: May not be used in combination with the loyaltyCustomerId parameter

Example: email@example.com
Responses
200
An object containing a list of redemption rules.
application/json
401
Authentication credentials are missing or incorrect.
403
The requested resource is forbidden.
application/json
404
The requested resource could not be found.
application/json
get
GET /enterprise/loyalty/redemption_rules HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
  "rules": [
    {
      "redemptionRuleId": "123e4567-e89b-12d3-a456-426614174000",
      "appliesToCollections": {
        "collectionId": 388918313199,
        "title": "Clothing",
        "url": "https://example.myshopify.com/collections/clothing"
      },
      "expiresAfterDays": 1,
      "minimumPurchase": 1,
      "purchaseType": "single",
      "recurringCycleLimit": 1,
      "type": "fixed-value",
      "reward": {
        "awardVia": "coupon",
        "points": 1,
        "value": 1
      }
    }
  ]
}

Retrieve basic details about a Customer

get
Authorizations
Path parameters
customerIdstring · uuidRequired

The ID of the Customer to retrieve. Use the /customer_lookup endpoint to get the Customer's ID.

Responses
200
An object containing basic details about a Customer.
application/json
401
Authentication credentials are missing or incorrect.
404
The requested resource could not be found.
application/json
get
GET /enterprise/customers/{customerId} HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
  "dateFirstActive": "2022-01-18T02:21:20.380Z",
  "dateLastActive": "2023-02-14T04:34:21.390Z",
  "email": "jane@example.com",
  "givenName": "Jane",
  "familyName": "Smith",
  "avatarUrl": "https://via.placeholder.com/160/1d2135/00eab6",
  "location": {
    "country": "Australia",
    "zoneCode": "NSW"
  }
}

List Customer Profiles and their included properties

get

A Customer Profile is a collection of data points (grouped by namespace) about a specific Customer.

Authorizations
Path parameters
customerIdstring · uuidRequired

The ID of the Customer to retrieve. Use the /customer_lookup endpoint to get the Customer's ID.

Query parameters
limitinteger · int32Optional

A limit on the number of items returned. Between 1 and 100. Default 25.

Example: 25
lastEvaluatedstringOptional

The URL-encoded JSON object representing the cursor for the next page of results.

namespacestringOptional

The identifier used to group Customer data. Specify this property to filter the Customer's profile data to a specific namespace.

Example: okendo-general
Responses
200
An object containing a list of Customer Profiles and a relative link to the next page of results if available.
application/json
400
Invalid request parameters.
application/json
401
Authentication credentials are missing or incorrect.
get
GET /enterprise/customers/{customerId}/profiles HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
  "profiles": [
    {
      "namespace": "okendo-general",
      "properties": [
        {
          "name": "Given Name",
          "value": "Jane",
          "valueType": "string",
          "date": "2025-05-09T04:10:26.610Z"
        }
      ]
    }
  ],
  "nextUrl": "https://example.com"
}

List Customer Activities

get

A Customer Activity is an action that the Customer has taken or an action that relates to the Customer.

Authorizations
Path parameters
customerIdstring · uuidRequired

The ID of the Customer to retrieve. Use the /customer_lookup endpoint to get the Customer's ID.

Query parameters
limitinteger · int32Optional

A limit on the number of items returned. Between 1 and 100. Default 25.

Example: 25
lastEvaluatedstringOptional

The URL-encoded JSON object representing the cursor for the next page of results.

namespacestringOptional

The identifier used to group Customer data. Specify this property to filter the Customer's activities to a specific namespace.

Example: okendo-general
Responses
200
An object containing a list of Customer Activities and a relative link to the next page of results if available.
application/json
400
Invalid request parameters.
application/json
401
Authentication credentials are missing or incorrect.
get
GET /enterprise/customers/{customerId}/activities HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
  "activities": [
    {
      "activityId": "123e4567-e89b-12d3-a456-426614174000",
      "namespace": "okendo-general",
      "date": "2025-05-09T04:10:26.610Z",
      "title": "Review Submitted"
    }
  ],
  "nextUrl": "https://example.com"
}

List Webhook Subscriptions

get

Returns a list of Webhook Subscriptions

Authorizations
Query parameters
limitinteger · int32Optional

A limit on the number of items returned. Between 1 and 100. Default 25.

Example: 25
lastEvaluatedstringOptional

The URL-encoded JSON object representing the cursor for the next page of results.

orderBystringOptional

The sort order of the webhook subscriptions. Format: 'asc|desc'. Default 'desc'

Example: desc
Responses
200
An object containing a list of Webhook Subscriptions and a relative link to the next page of results if available.
application/json
400
Invalid request parameters.
application/json
401
Authentication credentials are missing or incorrect.
403
The requested resource is forbidden.
application/json
get
GET /enterprise/webhook_subscriptions HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
  "webhookSubscriptions": [
    {
      "subscriberId": "123e4567-e89b-12d3-a456-426614174000",
      "webhookSubscriptionId": "123e4567-e89b-12d3-a456-426614174000",
      "endpointUrl": "https://example.com",
      "version": "2025-02-01",
      "subscriptions": [
        {
          "resourceType": "review",
          "topic": "create"
        }
      ],
      "isEnabled": true,
      "dateCreated": "2025-05-09T04:10:26.610Z",
      "dateModified": "2025-05-09T04:10:26.610Z"
    }
  ],
  "nextUrl": "https://example.com"
}

Retrieve a Webhook Subscription

get
Authorizations
Path parameters
webhookSubscriptionIdstring · uuidRequired
Responses
200
A Webhook Subscription Object
application/json
401
Authentication credentials are missing or incorrect.
403
The requested resource is forbidden.
application/json
404
The requested resource could not be found.
application/json
get
GET /enterprise/webhook_subscriptions/{webhookSubscriptionId} HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
  "webhookSubscription": {
    "subscriberId": "123e4567-e89b-12d3-a456-426614174000",
    "webhookSubscriptionId": "123e4567-e89b-12d3-a456-426614174000",
    "endpointUrl": "https://example.com",
    "version": "2025-02-01",
    "subscriptions": [
      {
        "resourceType": "review",
        "topic": "create"
      }
    ],
    "isEnabled": true,
    "dateCreated": "2025-05-09T04:10:26.610Z",
    "dateModified": "2025-05-09T04:10:26.610Z"
  }
}

Delete a Webhook subscription

delete
Authorizations
Path parameters
webhookSubscriptionIdstring · uuidRequired
Responses
204
The resource was deleted successfully.
401
Authentication credentials are missing or incorrect.
403
The requested resource is forbidden.
application/json
404
The requested resource could not be found.
application/json
delete
DELETE /enterprise/webhook_subscriptions/{webhookSubscriptionId} HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*

No content

Rotate a Webhook Subscription Secret

post
Authorizations
Path parameters
webhookSubscriptionIdstring · uuidRequired
Responses
200
An object containing a Webhook Subscription Secret
application/json
401
Authentication credentials are missing or incorrect.
403
The requested resource is forbidden.
application/json
404
The requested resource could not be found.
application/json
post
POST /enterprise/webhook_subscriptions/{webhookSubscriptionId}/rotate_secret HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
  "webhookSubscriptionSecret": "text"
}

List Reviews

get

Returns a list of Reviews for the requested store

Authorizations
Query parameters
limitinteger · int32Optional

A limit on the number of items returned. Between 1 and 100. Default 25.

Example: 25
lastEvaluatedstringOptional

The URL-encoded JSON object representing the cursor for the next page of results.

orderBystringOptional

The sort order of the reviews. Format: '(date|rating) (asc|desc)'. Default 'date desc'

Example: date desc
statusstring · enumOptional

The moderation status of the review.

Example: approvedPossible values:
Responses
200
An object containing a list of Reviews and a relative link to the next page of results if available.
application/json
400
Invalid request parameters.
application/json
401
Authentication credentials are missing or incorrect.
get
GET /enterprise/reviews HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
  "reviews": [
    {
      "subscriberId": "123e4567-e89b-12d3-a456-426614174000",
      "reviewId": "123e4567-e89b-12d3-a456-426614174000",
      "productId": "shopify-123456789",
      "attributesWithRating": [
        {
          "minLabel": "Too Small",
          "midLabel": "Just Right",
          "maxLabel": "Too Big",
          "title": "Sizing",
          "type": "centered-range",
          "value": 1
        }
      ],
      "body": "Great quality! Great price! Would buy again!",
      "containsProfanity": true,
      "dateCreated": "2025-05-09T04:10:26.610Z",
      "helpfulCount": 1,
      "isRecommended": true,
      "media": [
        {
          "streamId": "123e4567-e89b-12d3-a456-426614174000",
          "fullSizeUrl": "https://example.com",
          "largeUrl": "https://example.com",
          "thumbnailUrl": "https://example.com",
          "type": "image",
          "isHidden": true
        }
      ],
      "productAttributes": [
        {
          "title": "Pros",
          "type": "drop-down",
          "value": "Powerful"
        }
      ],
      "productName": "MacBook Pro",
      "order": {
        "orderId": "123456789",
        "orderNumber": "#OKRXXXX"
      },
      "rating": 5,
      "reply": {
        "body": "<p><b>Thanks</b> for your review</p>",
        "dateCreated": "2025-05-09T04:10:26.610Z",
        "rawBody": "*Thanks* for your review",
        "isPrivate": true
      },
      "reviewer": {
        "attributes": [
          {
            "title": "Pros",
            "type": "drop-down",
            "value": "Powerful"
          }
        ],
        "avatarUrl": "https://example.com",
        "displayName": "Tim C.",
        "email": "name@gmail.com",
        "isVerified": true,
        "location": {
          "country": {
            "code": "au",
            "name": "Australia"
          },
          "zoneCode": "NSW"
        },
        "name": "Tim Cook",
        "socialConnection": "facebook",
        "verifiedStatus": "Verified Buyer"
      },
      "reward": {
        "description": "$10 off your next order over $40",
        "integration": "loyaltyLion",
        "type": "coupon",
        "value": "OKRX-XXXXX-XXXX",
        "isCouponUpgrade": true
      },
      "sentiment": "positive",
      "status": "approved",
      "tags": [
        "Support Needed",
        "Favourite"
      ],
      "title": "Love these shoes!",
      "unhelpfulCount": 1,
      "variantId": "1234567890",
      "variantName": "MacBook Pro - 15 Inch"
    }
  ],
  "nextUrl": "https://example.com"
}

Reply to a Review

post
Authorizations
Path parameters
reviewIdstring · uuidRequired

The ID of the Review to reply to.

Body
shouldEmailReplybooleanOptional

Whether the Customer should be notified of the reply via email.

Example: true
Responses
200
The updated Review with the reply included.
application/json
400
Invalid request parameters.
application/json
401
Authentication credentials are missing or incorrect.
404
The requested resource could not be found.
application/json
post
POST /enterprise/reviews/{reviewId}/reply HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 91

{
  "reply": {
    "body": "Thank you for your feedback!",
    "isPrivate": false
  },
  "shouldEmailReply": true
}
{
  "review": {
    "subscriberId": "123e4567-e89b-12d3-a456-426614174000",
    "reviewId": "123e4567-e89b-12d3-a456-426614174000",
    "productId": "shopify-123456789",
    "attributesWithRating": [
      {
        "minLabel": "Too Small",
        "midLabel": "Just Right",
        "maxLabel": "Too Big",
        "title": "Sizing",
        "type": "centered-range",
        "value": 1
      }
    ],
    "body": "Great quality! Great price! Would buy again!",
    "containsProfanity": true,
    "dateCreated": "2025-05-09T04:10:26.610Z",
    "helpfulCount": 1,
    "isRecommended": true,
    "media": [
      {
        "streamId": "123e4567-e89b-12d3-a456-426614174000",
        "fullSizeUrl": "https://example.com",
        "largeUrl": "https://example.com",
        "thumbnailUrl": "https://example.com",
        "type": "image",
        "isHidden": true
      }
    ],
    "productAttributes": [
      {
        "title": "Pros",
        "type": "drop-down",
        "value": "Powerful"
      }
    ],
    "productName": "MacBook Pro",
    "order": {
      "orderId": "123456789",
      "orderNumber": "#OKRXXXX"
    },
    "rating": 5,
    "reply": {
      "body": "<p><b>Thanks</b> for your review</p>",
      "dateCreated": "2025-05-09T04:10:26.610Z",
      "rawBody": "*Thanks* for your review",
      "isPrivate": true
    },
    "reviewer": {
      "attributes": [
        {
          "title": "Pros",
          "type": "drop-down",
          "value": "Powerful"
        }
      ],
      "avatarUrl": "https://example.com",
      "displayName": "Tim C.",
      "email": "name@gmail.com",
      "isVerified": true,
      "location": {
        "country": {
          "code": "au",
          "name": "Australia"
        },
        "zoneCode": "NSW"
      },
      "name": "Tim Cook",
      "socialConnection": "facebook",
      "verifiedStatus": "Verified Buyer"
    },
    "reward": {
      "description": "$10 off your next order over $40",
      "integration": "loyaltyLion",
      "type": "coupon",
      "value": "OKRX-XXXXX-XXXX",
      "isCouponUpgrade": true
    },
    "sentiment": "positive",
    "status": "approved",
    "tags": [
      "Support Needed",
      "Favourite"
    ],
    "title": "Love these shoes!",
    "unhelpfulCount": 1,
    "variantId": "1234567890",
    "variantName": "MacBook Pro - 15 Inch"
  }
}

Trigger a custom earning rule for a Loyalty Customer

post
Authorizations
Body
actionIdstringRequired

The action ID of the custom earning rule.

Example: k2d6ne
customerIdentifierone ofRequired

An object identifying the Loyalty Customer by email or loyaltyCustomerId.

or
valuenumberOptional

The value to be multiplied with the 'points per' value. Required for Custom Points Per Value Rules.

Example: 10
Responses
200
The transaction was successfully created and the Customer was awarded points based on the configured earning rule.
application/json
400
Invalid request parameters.
application/json
401
Authentication credentials are missing or incorrect.
403
The requested resource is forbidden.
application/json
404
The requested resource could not be found.
application/json
422
The request was well-formed but was unable to be followed due to semantic errors.
application/json
post
POST /enterprise/loyalty/earning_transactions HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 114

{
  "actionId": "k2d6ne",
  "customerIdentifier": {
    "loyaltyCustomerId": "123e4567-e89b-12d3-a456-426614174000"
  },
  "value": 10
}
{
  "pointsEarned": 1,
  "loyaltyCustomer": {
    "loyaltyCustomerId": "123e4567-e89b-12d3-a456-426614174000",
    "points": {
      "balance": 1
    }
  }
}

Redeem a redemption reward for a Loyalty Customer

post
Authorizations
Body
customerIdentifierone ofRequired

An object identifying the Loyalty Customer by email or loyaltyCustomerId.

or
redemptionRuleIdstring · uuidRequired

The unique identifier for the redemption rule.

Responses
200
The redemption transaction was successfully created and the Loyalty Customer's points balance was updated.
application/json
400
Invalid request parameters.
application/json
403
The requested resource is forbidden.
application/json
404
The requested resource could not be found.
application/json
500
Failed to redeem points.
application/json
post
POST /enterprise/loyalty/redemption_transactions HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 183

{
  "customerIdentifier": {
    "loyaltyCustomerId": "123e4567-e89b-12d3-a456-426614174000"
  },
  "redemptionRuleId": "123e4567-e89b-12d3-a456-426614174000",
  "variableValue": {
    "points": 100,
    "value": 10
  }
}
{
  "loyaltyCustomer": {
    "points": {
      "balance": 1000
    }
  },
  "transactionDetails": {
    "amount": 100
  },
  "reward": {
    "status": "completed",
    "storeCredit": {
      "balanceAmount": "100",
      "transactionAmount": "10"
    },
    "type": "store-credit"
  }
}

Adjust the points balance of a Loyalty Customer

post
Authorizations
Body
customerIdentifierone ofRequired

An object identifying the Loyalty Customer by email or loyaltyCustomerId.

or
amountinteger · int32Required

The number of points by which the customer's points balance is to be adjusted. Specify either a positive number to add points or a negative number to remove points.

Example: 10
internalReasonstringOptional

Description of the transaction which is displayed to the store owner.

Example: Gifted points due to bad shipping experience
notificationTextstringOptional

Description of the transaction which is displayed to the Customer.

Example: Gifted Points
Responses
200
The transaction was successfully created and the Loyalty Customer's points balance was updated.
application/json
400
Invalid request parameters.
application/json
401
Authentication credentials are missing or incorrect.
403
The requested resource is forbidden.
application/json
404
The requested resource could not be found.
application/json
422
The request was well-formed but was unable to be followed due to semantic errors.
application/json
post
POST /enterprise/loyalty/adjustment_transactions HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 194

{
  "customerIdentifier": {
    "loyaltyCustomerId": "123e4567-e89b-12d3-a456-426614174000"
  },
  "amount": 10,
  "internalReason": "Gifted points due to bad shipping experience",
  "notificationText": "Gifted Points"
}
{
  "loyaltyCustomer": {
    "points": {
      "balance": 1
    }
  }
}

Set a Loyalty Customer's minimum VIP Tier

post
Authorizations
Body
customerIdentifierone ofRequired

An object identifying the Loyalty Customer by email or loyaltyCustomerId.

or
minimumVipTierNamestring | nullableRequired

The name of the VIP Tier, or null to remove a previously configured minimum VIP Tier.

Example: Silver
Responses
200
The Loyalty Customer's minimum VIP Tier was updated, in addition to any resultant change to the current VIP Tier.
application/json
400
Invalid request parameters.
application/json
401
Authentication credentials are missing or incorrect.
403
The requested resource is forbidden.
application/json
404
The requested resource could not be found.
application/json
422
The request was well-formed but was unable to be followed due to semantic errors.
application/json
post
POST /enterprise/loyalty/customer_minimum_vip_tiers HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 113

{
  "customerIdentifier": {
    "loyaltyCustomerId": "123e4567-e89b-12d3-a456-426614174000"
  },
  "minimumVipTierName": "Silver"
}
{
  "minimumVipTierName": "text",
  "vipTierName": "text"
}

Look up a Customer's ID by email address

post
Authorizations
Body
emailstring · emailRequired

The email address of the Customer to look up.

Example: jane@example.com
Responses
200
A Customer was found matching the provided email address.
application/json
400
Invalid request parameters.
application/json
401
Authentication credentials are missing or incorrect.
404
The requested resource could not be found.
application/json
post
POST /enterprise/customer_lookup HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 28

{
  "email": "jane@example.com"
}
{
  "customerId": "123e4567-e89b-12d3-a456-426614174000"
}

Create a Shopify backed group and return the group created

post
Authorizations
Body
namestringRequired

The name of the group.

isAutoAssignProductsEnabledbooleanRequired

Indicates if the products in the group are automatically assigned to show reviews from other products within the same group.

shopifyCollectionIdstringRequired

The ID of Shopify collection that will be used to create the group.

Example: 123456789
Responses
200
An object containing the group that was just created.
application/json
400
Invalid request parameters.
application/json
401
Authentication credentials are missing or incorrect.
409
This response is sent when a request conflicts with the current state of the server.
application/json
422
The request was well-formed but was unable to be followed due to semantic errors.
application/json
post
POST /enterprise/groups HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 82

{
  "name": "text",
  "isAutoAssignProductsEnabled": true,
  "shopifyCollectionId": 123456789
}
{
  "group": {
    "shopifyCollectionId": 123456789,
    "subscriberId": "123e4567-e89b-12d3-a456-426614174000",
    "groupId": "123e4567-e89b-12d3-a456-426614174000",
    "dateCreated": "2022-01-18T02:21:20.380Z",
    "isAutoAssignProductsEnabled": true,
    "name": "text"
  }
}
  • Reviews
  • GETList Reviews
  • POSTReply to a Review
  • Loyalty
  • GETRetrieve basic details about a Loyalty Customer
  • GETList ways to earn loyalty points
  • POSTTrigger a custom earning rule for a Loyalty Customer
  • GETList ways to redeem loyalty points for rewards
  • POSTRedeem a redemption reward for a Loyalty Customer
  • POSTAdjust the points balance of a Loyalty Customer
  • POSTSet a Loyalty Customer's minimum VIP Tier
  • Customers
  • POSTLook up a Customer's ID by email address
  • GETRetrieve basic details about a Customer
  • GETList Customer Profiles and their included properties
  • GETList Customer Activities
  • Groups
  • POSTCreate a Shopify backed group and return the group created
  • Webhooks
  • POSTCreate a Webhook Subscription
  • GETList Webhook Subscriptions
  • GETRetrieve a Webhook Subscription
  • PUTUpdate a Webhook Subscription
  • DELETEDelete a Webhook subscription
  • POSTRotate a Webhook Subscription Secret

Create a Webhook Subscription

post
Authorizations
Body
endpointUrlstring · uriRequired

The URL that the webhook event will be sent to

isEnabledbooleanRequired
versionstring · enumRequired

Webhook event version

Possible values:
Responses
200
A new Webhook Subscription object which also contains the Webhook Secret
application/json
Responseall of
401
Authentication credentials are missing or incorrect.
403
The requested resource is forbidden.
application/json
404
The requested resource could not be found.
application/json
422
The request was well-formed but was unable to be followed due to semantic errors.
application/json
post
POST /enterprise/webhook_subscriptions HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 138

{
  "endpointUrl": "https://example.com",
  "isEnabled": true,
  "subscriptions": [
    {
      "resourceType": "review",
      "topic": "create"
    }
  ],
  "version": "2025-02-01"
}
{
  "subscriberId": "123e4567-e89b-12d3-a456-426614174000",
  "webhookSubscriptionId": "123e4567-e89b-12d3-a456-426614174000",
  "endpointUrl": "https://example.com",
  "version": "2025-02-01",
  "subscriptions": [
    {
      "resourceType": "review",
      "topic": "create"
    }
  ],
  "isEnabled": true,
  "dateCreated": "2025-05-09T04:10:26.610Z",
  "dateModified": "2025-05-09T04:10:26.610Z",
  "webhookSecret": "text"
}

Update a Webhook Subscription

put
Authorizations
Path parameters
webhookSubscriptionIdstring · uuidRequired
Body
endpointUrlstring · uriOptional

The URL that the webhook event will be sent to

versionstring · enumOptional

Webhook event version

Possible values:
isEnabledbooleanOptional
Responses
200
An updated Webhook Subscription Object
application/json
401
Authentication credentials are missing or incorrect.
403
The requested resource is forbidden.
application/json
404
The requested resource could not be found.
application/json
422
The request was well-formed but was unable to be followed due to semantic errors.
application/json
put
PUT /enterprise/webhook_subscriptions/{webhookSubscriptionId} HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 138

{
  "endpointUrl": "https://example.com",
  "subscriptions": [
    {
      "resourceType": "review",
      "topic": "create"
    }
  ],
  "version": "2025-02-01",
  "isEnabled": true
}
{
  "webhookSubscription": {
    "subscriberId": "123e4567-e89b-12d3-a456-426614174000",
    "webhookSubscriptionId": "123e4567-e89b-12d3-a456-426614174000",
    "endpointUrl": "https://example.com",
    "version": "2025-02-01",
    "subscriptions": [
      {
        "resourceType": "review",
        "topic": "create"
      }
    ],
    "isEnabled": true,
    "dateCreated": "2025-05-09T04:10:26.610Z",
    "dateModified": "2025-05-09T04:10:26.610Z"
  }
}