Point Of Marketing® v2.0.1

API Documentation > Documentation Home

Documentation Home

The Point Of Marketing® API

The Point Of Marketing® API represents a huge leap for all of us at Repeat Returns. We are excited to share with you the result of listening to your feedback, adoption of new technologies in the marketplace, and advancements in loyalty rewards programs.

If you're like us, you've noticed many companies with API's turn off their older API's once a major upgrade is released. This is frustrating, wastes development time, and generally harms end users. We are opposed to this policy and will keep the older API 100% functional, though new integrations will be required to implement the new API.

Turning A New Leaf

Clean

The previous API was SOAP'y, relying on XML and sometimes-unfriendly error messages. We've washed off the SOAP, replacing it with a largely RESTful implementation which returns JSON — in the era of mobile and data plans the savings in bandwidth and the increased responsiveness will serve all of us well.

Secure

A mixing of the HTTP Digest authentication protocol with some other security concepts is now used to allow for simple-to-implement, secure communication.

Concise

The previous API's power of having a method for each particular task came at a cost: some tasks required multiple calls. We've put the cutting board to good use, and simplified the API structure with optional parameters allowing for precision and complexity from a single call — a best of both worlds solution.

Getting The Point

Marketing in one spot — the Point Of Marketing® — has been our driving goal in the re-visioning. To that end, support for SMS and mobile push messaging is now available… soon to follow will be online ordering. From there? Well, keep your eyes open as you just never know what surprises we have in store!

Onward & Upward

Feel free to take a look around and see just how much functionality the API offers. When you're ready for endpoints, credentials, etc for development, just give us a ring or drop an email (contact info below). We'll answer your questions, talk the nitty gritty (even a little hex, octal, or binary), and get you moving forward.

Oh, and you're right: this API Documentation isn't a hand-holding how-to guide… it's a reference for when you're ready. Detailed guides are on the horizon! Check out our SDK page to get started faster.

Chat Soon

+d237Y8omd3pSy2udsjnmVsKqf5y36XMR7+vFQn4GR6w4IjoDw7az1YevpnooABm8t2uHPPKQwkosxpaJaTZGw==

POM Online

POM Online Rapid Deployment Guide

Introduction

If full integration can't be scheduled to fit a merchant's timeline, use this guide to deploy POM Online to your system in mere minutes.

POM Online offers the features most merchants need at the time of a transaction:

  1. Instant Customer Lookup
  2. Account Balances
  3. Customer Enrollment
  4. Update Customer Accounts
  5. Loyalty Transactions
  6. Gift Card Transactions
  7. Reward Redemption
  8. Full Merchant Guide Documentation

Deployment

Deployment is as easy as adding a button to your system which opens a browser to the URL http://online.pointofmarketing.net/ when clicked.

Optionally, URL parameters can be included to pre-populate all POM Online form fields:

Parameters
Parameter Type Description
search[field] String
Value Details
phone The default value. Only numbers without formatting.
memberId If known, the memberId from the Point Of Marketing® system.
email Only letters, numbers, a dot, and the @ symbol are allowed.
last The last name of the member.
first The first name of the member.
search[val] String The value to match against search[field].
amount Number The amount of the transaction in dollars.
clerk Integer Value < 1,000,000.

Examples

  1. Take the clerk to POM Online without pre-populating any fields:
    http://online.pointofmarketing.net/
  2. Take the clerk to POM Online to enter a transaction for the customer with an email address of :
    http://online.pointofmarketing.net/?search[field]=email&search[val]=
  3. Take clerk #123 to POM Online to finalize a transaction for the customer with phone number 702-966-3001 in the amount of $19.23:
    http://online.pointofmarketing.net/?search[field]=phone&search[val]=7029663001&amount=19.23&clerk=123

Resources > Member

/member

Add member
POST
HTTP Headers
Parameter Type Constraints Required
pom-username String Required
pom-nonce String Required
pom-hash String Required
pom-clerk Integer Value < 1,000,000. Optional
Parameters
Parameter Type Constraints Default Required
title String Value must be one of these: Mr, Mrs, Ms, Miss, Dr NULL Optional
first String length ≤ 100. Empty String Required
last String length ≤ 100. Empty String Optional
email String length ≤ 100. Empty String Required
birthday String length = 4 or 8.
Format MMDD or YYYYMMDD.
Empty String Optional
phones Array length ≤ 10.
Array of string entries containing only digits.
Empty Optional
address String length ≤ 200. Empty String Optional
addressLine2 String length ≤ 100. Empty String Optional
city String length ≤ 100. Empty String Optional
state String length = 2. Empty String Optional
postcode String length ≤ 7. Empty String Optional
country String length = 2. Empty String Optional
anniversary String length = 4 or 8. Format MMDD or YYYYMMDD. Empty String Optional
householdSize Integer NULL Optional
spouseFirst String length ≤ 100. Empty String Optional
spouseLast String length ≤ 100. Empty String Optional
spouseEmail String length ≤ 100. Empty String Optional
spouseBirthday String length = 4 or 8. Format MMDD or YYYYMMDD. Empty String Optional
children Array length ≤ 10.
Array entries of format children[0][name]=value&children[0][birthday]=value .
Birthday of format MMDD or YYYYMMDD.
Empty Optional
storeField Array length ≤ 5. Array entries are strings. Empty Optional
chainField Array length ≤ 5. Array entries are strings. Empty Optional
unsubscribed Integer 0 or 1. 0 Optional
Return Object
Attribute Type Description
code Integer See Status Codes.
msg String English description of code meaning.
id Integer memberId of newly-created member. null if code ≠ 200.
url String URL of newly-created member. null if code ≠ 200.

/member/?operator={value}&{nameValuePairs}

Search for members
GET
HTTP Headers
Parameter Type Constraints Required
pom-username String Required
pom-nonce String Required
pom-hash String Required
pom-clerk Integer Value < 1,000,000. Optional
Parameters
Parameter Type Constraints Required
{nameValuePairs} Name-Value Pairs Conforms to name1=urlencodedValue1&name2=urlencodedValue2& Required
operator String Either AND or OR. Determines if name-value pairs are all required (AND) or only one must match (OR). Required
Return Object
Attribute Type Description
code Integer See Status Codes.
msg String English description of code meaning.
members Array Array of Member objects. Only memberId, first, email, and one entry in phones are guaranteed to be set. Perform a /member/{memberId} search to obtain all fields.

/member/{memberId}

Get member information
GET
HTTP Headers
Parameter Type Constraints Required
pom-username String Required
pom-nonce String Required
pom-hash String Required
pom-clerk Integer Value < 1,000,000. Optional
Return Object
Attribute Type Description
code Integer See Status Codes.
msg String English description of code meaning.
member Object If code = 200, then a Member object for the particular member; otherwise null.
Update a member's information
PUT
HTTP Headers
Parameter Type Constraints Required
pom-username String Required
pom-nonce String Required
pom-hash String Required
pom-clerk Integer Value < 1,000,000. Optional
Parameters
Parameter Type Constraints Required
first String length ≤ 100. Optional
last String length ≤ 100. Optional
email String length ≤ 100. Optional
birthday String length = 4 or 8.
Format MMDD or YYYYMMDD.
Optional
phones Array length ≤ 10.
Array of string entries containing only digits.
Optional
address String length ≤ 200. Optional
addressLine2 String length ≤ 100. Optional
city String length ≤ 100. Optional
state String length = 2. Optional
postcode String length ≤ 10. Optional
country String length = 2. Optional
anniversary String length = 4 or 8. Format MMDD or YYYYMMDD. Optional
householdSize Integer Optional
spouseFirst String length ≤ 100. Optional
spouseLast String length ≤ 100. Optional
spouseEmail String length ≤ 100. Optional
spouseBirthday String length = 4 or 8.
Format MMDD or YYYYMMDD.
Optional
children Array length ≤ 10.
Array entries of format children[0][name]=value&children[0][birthday]=value .
Birthday of format MMDD or YYYYMMDD.
Optional
storeField Array length ≤ 5. Array entries are strings. Optional
chainField Array length ≤ 5. Array entries are strings. Optional
active Integer 0 or 1. Optional
unsubscribed Integer 0 or 1. Optional
Return Object
Attribute Type Description
code Integer See Status Codes.
msg String English description of code meaning.
Delete member
DELETE
HTTP Headers
Parameter Type Constraints Required
pom-username String Required
pom-nonce String Required
pom-hash String Required
pom-clerk Integer Value < 1,000,000. Optional
Return Object
Attribute Type Description
code Integer See Status Codes.
msg String English description of code meaning.

/member/{memberId}/offer

Get a member's available offers
GET
HTTP Headers
Parameter Type Constraints Required
pom-username String Required
pom-nonce String Required
pom-hash String Required
pom-clerk Integer Value < 1,000,000. Optional
Return Object
Attribute Type Description
code Integer See Status Codes.
msg String English description of code meaning.
offers Array An array of objects of the form {"offer":"", "instantAvailable":"", "instantExpires":"", "promotionCode":""} for offers available to the member. instant fields are of the form YYYY-MM-DD HH:II:SS

Resources > Invite

/invite

Send an invitation to join program
POST

These are merchant-driven invitations. Customer driven invitations are handled via communications with customers.

HTTP Headers
Parameter Type Constraints Required
pom-username String Required
pom-nonce String Required
pom-hash String Required
pom-clerk Integer Value < 1,000,000. Optional
Parameters
Parameter Type Constraints Required
first Integer Value < 1,000,000. Required
last Integer Value < 1,000,000. Optional
email String length ≤ 128. Required
Return Object
Attribute Type Description
code Integer See Status Codes.
msg String English description of code meaning.

Resources > Transaction

/transaction

Add a transaction
POST
HTTP Headers
Parameter Type Constraints Required
pom-username String Required
pom-nonce String Required
pom-hash String Required
pom-clerk Integer Value < 1,000,000. Optional
Parameters
Parameter Type Constraints Required
transactionTypeId Integer A transactionTypeId. Required
memberId Number Card Number or Phone Number. If length = 10, then phone number assumed. Required
amount Signed Number Decimal with 2 decimal places. The amount of the transaction. Required
promotionCode Integer length ≤ 3. The promotion code, if used in the transaction. Is not the same as promotionId. Optional.
terminal Integer length ≤ 3. Optional
Return Object
Attribute Type Description
code Integer See Status Codes.
msg String English description of code meaning.
id Integer transactionId of newly-created transaction. null if code ≠ 200.
url String URL of newly-created transaction. null if code ≠ 200.

/transaction/{transactionId}

Void a transaction
DELETE
HTTP Headers
Parameter Type Constraints Required
pom-username String Required
pom-nonce String Required
pom-hash String Required
pom-clerk Integer Value < 1,000,000. Optional
Return Object
Attribute Type Description
code Integer See Status Codes.
msg String English description of code meaning.

Resources > Promotion

/promotion/{promotionId}

Get promotion
GET
HTTP Headers
Parameter Type Constraints Required
pom-username String Required
pom-nonce String Required
pom-hash String Required
pom-clerk Integer Value < 1,000,000. Optional
Return Object
Attribute Type Description
code Integer See Status Codes.
msg String English description of code meaning.
promotion Object If code = 200, then a promotion object for the particular promotion; otherwise null.
Update/send a promotion
PUT
HTTP Headers
Parameter Type Constraints Required
pom-username String Required
pom-nonce String Required
pom-hash String Required
pom-clerk Integer Value < 1,000,000. Optional
Parameters
Parameter Type Constraints Default Required
active Integer 0 or 1. 0 Optional
subject String The subject line. Applies to emails only. Empty String Optional
bodyHtml String An HTML string for the HTML content of the promotional email. Empty String Optional
bodyText String A text string equivalent to the bodyHtml or the SMS/Push Notification text, depending on the deliveryMethod value. Empty String Optional
sendDate Date MMDD format. NULL Optional
sendHour Integer A value between 0 and 23 representing the hour to send the promotional item. Emails & Push Notifications are sent on the top of the hour while SMS are sent at the bottom of the hour. NULL Optional
promoText String An HTML string containing the text of the promotional offer. NULL Optional
promoExpiration Date YYYYMMDD format. NULL Optional
deliveryMethod Integer A value representing one or more delivery methods from this table:
Value Delivery Method
1 Email
2 SMS
4 Push Notification
1 Optional
memberSegment Integer A value representing one and only one of the following segments:
Value Member Segment
0 Send Email to Everyone
100 New Members This Month
200 Members who Ordered this Month
1200 Members who haven't ordered in 30 Days
1201 Members who haven't ordered in 60 Days
1202 Members who haven't ordered in 90 Days
1203 Members who haven't ordered in 120 Days
1204 Members who haven't ordered in 150 Days
201 Members who Ordered in the Last 7 Days
210 Top 25% Members - Lifetime Spend
1210 Bottom 25% Members - Lifetime Spend
300 Members who Referred a New Member
310 Top 25% Members - # of Transactions
311 Bottom 25% Members - # of Transactions
400 Members who earned a Reward Offer this Month
401 Members who earned a Reward Offer last Month
500 Male Members
501 Female Members
502 Members With 3 or more in Household
503 Members with Birthdays this Month
504 Members with Anniversaries this Month
0 Optional
Return Object
Attribute Type Description
code Integer See Status Codes.
msg String English description of code meaning.

Resources > Chain

/chain/{chainId}

Get chain information
GET
HTTP Headers
Parameter Type Constraints Required
pom-username String Required
pom-nonce String Required
pom-hash String Required
pom-clerk Integer Value < 1,000,000. Optional
Return Object
Attribute Type Description
code Integer See Status Codes.
msg String English description of code meaning.
chain Object If code = 200, then a chain object for the particular chain; otherwise null.
Update chain information
PUT
HTTP Headers
Parameter Type Constraints Required
pom-username String Required
pom-nonce String Required
pom-hash String Required
pom-clerk Integer Value < 1,000,000. Optional
Parameters
Parameter Type Constraints Required
name String length ≤ 100. Optional
address String length ≤ 200. Optional
addressLine2 String length ≤ 100. Optional
city String length ≤ 100. Optional
state String length = 2. Optional
postcode String length ≤ 7. Optional
country String length = 2. Optional
timezone String IANA Time Zone Database value.
E.G. America/Los_Angeles, America/Boise, America/Chicago, America/New_York, …
Optional
phone String length ≤ 10 Optional
cell String length ≤ 10 Optional
fax String length ≤ 10 Optional
url String length ≤ 100 Optional
contactName String length ≤ 100 Optional
contactEmail String length ≤ 100 Optional
managerName String length ≤ 100 Optional
managerEmail String length ≤ 100 Optional
managerPhone String length ≤ 10 Optional
Return Object
Attribute Type Description
code Integer See Status Codes.
msg String English description of code meaning.

/chain/{chainId}/store

Get chain's list of stores
GET
HTTP Headers
Parameter Type Constraints Required
pom-username String Required
pom-nonce String Required
pom-hash String Required
pom-clerk Integer Value < 1,000,000. Optional
Return Object
Attribute Type Description
code Integer See Status Codes.
msg String English description of code meaning.
stores Array An array of Store objects with only the storeId set.

Resources > Store

/store/{storeId}

Get store information
GET
HTTP Headers
Parameter Type Constraints Required
pom-username String Required
pom-nonce String Required
pom-hash String Required
pom-clerk Integer Value < 1,000,000. Optional
Return Object
Attribute Type Description
code Integer See Status Codes.
msg String English description of code meaning.
store Object If code = 200, then a store object for the particular store; otherwise null.
Update store information
PUT
HTTP Headers
Parameter Type Constraints Required
pom-username String Required
pom-nonce String Required
pom-hash String Required
pom-clerk Integer Value < 1,000,000. Optional
Parameters
Parameter Type Constraints Required
name String length ≤ 100. Optional
address String length ≤ 200. Optional
addressLine2 String length ≤ 100. Optional
city String length ≤ 100. Optional
state String length = 2. Optional
postcode String length ≤ 7. Optional
country String length = 2. Optional
timezone String IANA Time Zone Database value.
E.G. America/Los_Angeles, America/Boise, America/Chicago, America/New_York, …
Optional
phone String length ≤ 10 Optional
cell String length ≤ 10 Optional
fax String length ≤ 10 Optional
url String length ≤ 100 Optional
contactName String length ≤ 100 Optional
contactEmail String length ≤ 100 Optional
managerName String length ≤ 100 Optional
managerEmail String length ≤ 100 Optional
managerPhone String length ≤ 10 Optional
Return Object
Attribute Type Description
code Integer See Status Codes.
msg String English description of code meaning.

Resources > FacebookTab

/facebook-tab

Get Facebook tab content
GET
HTTP Headers
Parameter Type Constraints Required
pom-username String Required
pom-nonce String Required
pom-hash String Required
pom-clerk Integer Value < 1,000,000. Optional
Return Object
Attribute Type Description
code Integer See Status Codes.
msg String English description of code meaning.
contents Array An object of the form {"content":"", "contentFriend":""} for the Facebook tab content.
Update Facebook tab content
PUT
HTTP Headers
Parameter Type Constraints Required
pom-username String Required
pom-nonce String Required
pom-hash String Required
pom-clerk Integer Value < 1,000,000. Optional
Parameters
Parameter Type Constraints Required
content String The HTML content to be displayed on the Facebook Tab. Optional
contentFriend String The HTML content to be displayed on the Facebook Tab if the viewer is a friend. This content will be shown instead of content. Optional
Return Object
Attribute Type Description
code Integer See Status Codes.
msg String English description of code meaning.

Object Reference > Member

Fields

Field Type Description
title String Value must be one of these: Mr, Mrs, Ms, Miss, Dr
first String length ≤ 100.
last String length ≤ 100.
email String length ≤ 100.
birthday String length = 4 or 8.
Format MMDD or YYYYMMDD.
phones Array length ≤ 10.
Array of string entries containing only digits.
address String length ≤ 200.
addressLine2 String length ≤ 100.
city String length ≤ 100.
state String length = 2.
postcode String length ≤ 7.
country String length = 2.
anniversary String length = 4 or 8. Format MMDD or YYYYMMDD.
householdSize Integer
spouseFirst String length ≤ 100.
spouseLast String length ≤ 100.
spouseEmail String length ≤ 100.
spouseBirthday String length = 4 or 8. Format MMDD or YYYYMMDD.
children Array length ≤ 10.
Array entries of format children[0][name]=value&children[0][birthday]=value .
Birthday of format MMDD or YYYYMMDD.
storeField Array length ≤ 5. Array entries are strings.
chainField Array length ≤ 5. Array entries are strings.
pointBalance Integer Number of current points
cashBalance Decimal Total current Gift Card & Rebate balances.
unsubscribed Integer 0 or 1.

Object Reference > Promotion

Promotion Ids

Id Promotion Send Date
Monthly Promotions
24 Monthly Promotion (Newsletter/eStatement) 1st of the month
30 January Promotion (Game Day)
33 February Promotion (Valentine's Day)
48 March Promotion (St. Patrick's Day)
28 April Promotion (Spring)
19 May Promotion #1 (Mother's Day)
12 May Promotion #2 (Good Grades)
11 June Promotion (Father's Day)
29 July Promotion (Summer)
6 August Promotion (Back to School)
21 September Promotion (Take a Night Off)
47 October Promotion (Halloween)
32 November Promotion (Thanksgiving)
43 December Promotion #1 (Gift Cards)
15 December Promotion #2 (Happy Holidays)
20 December Promotion #3 (New Year)
Member-Specific Promotions
36 Welcome Email (Member Enrollment)
57 Welcome Email (In-Store / Merchant Enrollment)
191 Double Opt-In
14 Half Birthday
2 Birthday 1 week prior to member's birthday
235 Birthday Club (2 Weeks Prior)
234 Birthday Club (6 Weeks Prior)
233 Birthday Club (8 Weeks Prior)
40 Spouse's Half-Birthday
41 Spouse's Birthday
192 Child's Birthday
35 Wedding Anniversary
3 Enrollment Anniversary
Loyalty-Based Promotions
228 Post-Transaction Thank You
45 Member Referral Invitation
46 Member Referral Thank You
227 Menu Promotion
23 30 - Reminder
25 60 - Something For You
8 90 - Member of the Month
16 120 - We Miss You
7 150 - Come Back
58 Halfway to Reward #1
61 Halfway to Reward #2
64 Halfway to Reward #3
67 Halfway to Reward #4
70 Halfway to Reward #5
73 Halfway to Reward #6
76 Halfway to Reward #7
79 Halfway to Reward #8
82 Halfway to Reward #9
85 Halfway to Reward #10
59 Almost to Reward #1
62 Almost to Reward #2
65 Almost to Reward #3
68 Almost to Reward #4
71 Almost to Reward #5
74 Almost to Reward #6
77 Almost to Reward #7
80 Almost to Reward #8
83 Almost to Reward #9
86 Almost to Reward #10
60 Reward Earned #1
63 Reward Earned #2
66 Reward Earned #3
69 Reward Earned #4
72 Reward Earned #5
75 Reward Earned #6
78 Reward Earned #7
81 Reward Earned #8
84 Reward Earned #9
87 Reward Earned #10
Additional Promotions
42 Extra Promotion #1
49 Extra Promotion #2
50 Extra Promotion #3
51 Extra Promotion #4
182 Extra Promotion #5
300 Extra Promotion #6
301 Extra Promotion #7
302 Extra Promotion #8
303 Extra Promotion #9
304 Extra Promotion #10

Fields

Field Type Description
active Integer 0 or 1.
subject String The subject line. Applies to emails only.
bodyHtml String An HTML string for the HTML content of the promotional email.
bodyText String A text string equivalent to the bodyHtml or the SMS/Push Notification text, depending on the deliveryMethod value.
sendDate Date Format: MMDD. If not set and not one of the "Additional Promotions" listed above, this promotion will not be sent.
sendHour Integer A value between 0 and 23 representing the hour to send the promotional item. Emails & Push Notifications are sent on the top of the hour while SMS are sent at the bottom of the hour. If not set and not one of the "Additional Promotions" listed above, this promotion will not be sent.
promoText String An HTML string containing the text of the promotional offer. If empty, the promotion will not be associated with the respective promotionId as active for redemption on a transaction.
promoExpiration Date YYYYMMDD format.
deliveryMethod Integer A value representing one or more delivery methods from this table:
Value Delivery Method
1 Email
2 SMS
4 Push Notification
memberSegment Integer A value representing one and only one of the following segments:
Value Member Segment
0 Send Email to Everyone
100 New Members This Month
200 Members who Ordered this Month
1200 Members who haven't ordered in 30 Days
1201 Members who haven't ordered in 60 Days
1202 Members who haven't ordered in 90 Days
1203 Members who haven't ordered in 120 Days
1204 Members who haven't ordered in 150 Days
201 Members who Ordered in the Last 7 Days
210 Top 25% Members - Lifetime Spend
1210 Bottom 25% Members - Lifetime Spend
300 Members who Referred a New Member
310 Top 25% Members - # of Transactions
311 Bottom 25% Members - # of Transactions
400 Members who earned a Reward Offer this Month
401 Members who earned a Reward Offer last Month
500 Male Members
501 Female Members
502 Members With 3 or more in Household
503 Members with Birthdays this Month
504 Members with Anniversaries this Month

Object Reference > Chain

Fields

Field Type Description
name String length ≤ 100.
address String length ≤ 200.
addressLine2 String length ≤ 100.
city String length ≤ 100.
state String length = 2.
postcode String length ≤ 7.
country String length = 2.
timezone String IANA Time Zone Database value.
E.G. America/Los_Angeles, America/Boise, America/Chicago, America/New_York, …
phone String length ≤ 10
cell String length ≤ 10
fax String length ≤ 10
url String length ≤ 100
contactName String length ≤ 100
contactEmail String length ≤ 100
managerName String length ≤ 100
managerEmail String length ≤ 100
managerPhone String length ≤ 10

Object Reference > Store

Fields

Field Type Description
name String length ≤ 100.
address String length ≤ 200.
addressLine2 String length ≤ 100.
city String length ≤ 100.
state String length = 2.
postcode String length ≤ 7.
country String length = 2.
timezone String IANA Time Zone Database value.
E.G. America/Los_Angeles, America/Boise, America/Chicago, America/New_York, …
phone String length ≤ 10
cell String length ≤ 10
fax String length ≤ 10
url String length ≤ 100
contactName String length ≤ 100
contactEmail String length ≤ 100
managerName String length ≤ 100
managerEmail String length ≤ 100
managerPhone String length ≤ 10

Object Reference > Transaction

Transaction Type Ids

Id Transaction Type
100 Sale
200 Points
300 Rebate
400 Promotion
500 Social Media
600 Gift Card

Fields

Field Type Description
instant String Date & time of transaction. YYYY-MM-DD HH:MM:SS format.
memberId Integer
amount Signed Number Decimal with 2 decimal places.
clerk Integer
terminal Integer
type String Indicates the type of transaction record.
status String Good or Void
points Integer Number of points earned/redeemed.
rebate Decimal Amount of rebate, if any, in dollars.
promotionId Integer promotionId, if used.

Appendix > hash Algorithm

hash Algorithm

Custom HTTP headers are used for verifying payloads. There are 3 HTTP headers required for every call: pom-username, pom-nonce, pom-hash.

The value for pom-username is provided upon account approval. At that time you will also be provided with a password which will be needed in calculating the value of pom-hash.

The pom-nonce is case-sensitive and must be a nonce which minimally conforms to the following requirements:

  1. A character string of at least 8 characters.
  2. Randomly generated.
  3. Used for one-and-only-one call.

The pom-hash is calculated by calculating the SHA-256 value of a string composed by concatenating the following UTF-8 encoded strings in the order shown here:

  1. pom-nonce
  2. :
  3. pom-username
  4. :
  5. Account Password
  6. :
  7. Payload Body

Payload Body by Request Method

The payload body for GET is empty unless there is a search clause or id. If there is a search clause, then the search clause excluding the ? is the payload body. If there is an id, then the id is the payload body.

The payload body for POST and PUT is the body of the submission exactly as submitted.

The payload body for DELETE is empty.

Examples

pom-nonce for all examples is aChw4QfmwA.

pom-username for all examples is exampleUser.

Account Password for all examples is 1UserPass4Example.

GET Request Method

No Payload

pom-hash = SHA-256 of aChw4QfmwA:exampleUser:1UserPass4Example:

= dfc31965637240fbf8c1be819e97b5547de70d6f46a0de4ec061a6dcb254a73c.
GET Request Method With Id
/member/12345

Payload = 12345

pom-hash = SHA-256 of aChw4QfmwA:exampleUser:1UserPass4Example:12345

= bc8192d4d49e5e085c70e9ad706ddee67c738ff2a46cff1adb6cc6a7937245e9.
GET Request Method With Search
/member/?operator=OR&last=doe&first=jane

Payload = last=doe&first=jane

pom-hash = SHA-256 of aChw4QfmwA:exampleUser:1UserPass4Example:operator=OR&last=doe&first=jane

= a28204700447c6e74650c57bcbf3bb6febfb46d7c6d2af4c6157fc49e9721c96.
POST Request Method

Payload = first=John&email=john@example.com

pom-hash = SHA-256 of aChw4QfmwA:exampleUser:1UserPass4Example:first=John&email=john@example.com

= 49a5c464aec8bd31bdba50c5d367769a5fcf1903452bc5f22617bc6b3a547d2b.
PUT Request Method

Payload = phones[2]=555-123-4567&email=jane@example.com

pom-hash = SHA-256 of aChw4QfmwA:exampleUser:1UserPass4Example:phones[2]=555-123-4567&email=jane@example.com

= 18f1a3033eb5221bb15acd2565e44125f12d4029da5cd9ec07398673085ff365.
DELETE Request Method

No Payload

pom-hash = SHA-256 of aChw4QfmwA:exampleUser:1UserPass4Example:

= dfc31965637240fbf8c1be819e97b5547de70d6f46a0de4ec061a6dcb254a73c.

Appendix > Extension Affordances

Extension Affordances

Service providers can choose to build an extension to the Point Of Marketing® API. Some of these providers may make use of additional data within existing calls or need to have new calls made available.

The additional elements used by a specific provider must be obtained by that provider. API support is available only for API-questions not specific to a particular service provider.

Developers can be assured that all API Extensions conform with the guidelines set forth below.

Existing Method Calls

GET & DELETE Methods

To allow extension developers to include additional data in method calls, header elements may include additional headers of this form:

pom-extensionIdentifier-extension-field-name

For example, if an extensionIdentifier is eg, then for the field custom-field-name, the additional header would be pom-eg-custom-field-name.

The extension-field-name must consist of alphanumeric characters, the dash (-), or the underscore (_) only and will be treated as case-insensitive.

POST & PUT Methods

For these methods, the additional header options permitted for GET & DELETE are also permitted. When used, these should be consistent with those used for the GET & DELETE methods.

Additionally, POST & PUT support custom fields of this form:

extensionIdentifier-extensionFieldName

For example, if an extensionIdentifier is eg, then for the field customFieldName, the additional parameter would be eg-customFieldName.

The extensionFieldName must consist of alphanumeric characters, the dash (-), or the underscore (_) only and will be treated as case-sensitive. Furthermore, the extensionFieldName should follow a camelCase naming convention for consistency with the rest of the API.

Custom Resource Calls

Each extension will be provided with an extensionIdentifier. For a given extensionIdentifier, supported calls to the custom resource extensionCustomResource with a resource id of extensionCustomResourceId must be of the following formats:

Add/Insert An Object
POST

/extensionIdentifier-extensionCustomResource

Retrieve An Object
GET

/extensionIdentifier-extensionCustomResource/extensionCustomResourceId

extensionCustomResourceId is numeric.

Update An Object
PUT

/extensionIdentifier-extensionCustomResource/extensionCustomResourceId

extensionCustomResourceId is numeric.

Delete An Object
DELETE

/extensionIdentifier-extensionCustomResource/extensionCustomResourceId

extensionCustomResourceId is numeric.

SDK

Software Development Kit

Contact Us for Username/Password credentials.

Contact Us to request an SDK for one not provided below.

PHP
SDK

The PHP SDK is a fully-functional implementation of the Point Of Marketing® API. Simply upload to a PHP-enabled server and run the example.php script.

The SDK comes with a pre-packaged implementation allowing for calls as simple as these:

$response = $POM->get('member', $memberId);
$response = $POM->put('facebook-tab', '', $fields);
$response = $POM->post('member', $fields);
$response = $POM->delete('member', $memberId);

Download the PHP SDK
Menu

Status Codes

200 OK For GET or PUT, the object is returned.
201 Created For POST, the object resource URL is returned.
300 Multiple Choices Returned on search results with more than one result. The object resource URLs are returned.
301 Moved Permanently Returned on search results with a single result. The object resource URL is returned.
400 Bad Request Constraints were not satisfied. Details will be provided.
401 Unauthorized Invalid POM or extension authentication credentials did not validate.
404 Not Found The entity attempting to be accessed does not exist. It may have been deleted.
413 Request Entity Too Large Details will be provided on which entity is too large.
501 Not Implemented This call has not been implemented or does not exist.
503 Service Unavailable This is for planned down times.