{"docs":{"name":"FanMaker Rewards API","info":"\n\u003Ch1 id=\"fanmaker_api_v1\"\u003EFanMaker API v1\u003C/h1\u003E\n\n\u003Ch3 id=\"getting_started\"\u003EGetting started\u003C/h3\u003E\n\n\u003Cp\u003ETo being using the FanMaker API you will need to obtain a Vendor ID, a Site ID, and a Secret Key. These can be obtained your your activation coordinator.\u003C/p\u003E\n\n\u003Ch3 id=\"authentication\"\u003EAuthentication\u003C/h3\u003E\n\n\u003Cp\u003EFanMaker uses HMAC signing via HTTP headers to authenticate requests to the API. Each request has two parts, the HTTP headers and then the request itself sent as raw POST data.\u003C/p\u003E\n\n\u003Ch3 id=\"supported_formats\"\u003ESupported Formats\u003C/h3\u003E\n\n\u003Cp\u003EThe FanMaker API supports only JSON for both input and output. Ensure that requests made to the API set the \u2018Content-Type\u2019 and \u2018Accepts\u2019 headers to \u2018application/json\u2019 All posted params must be sent as JSON in the post body.\u003C/p\u003E\n\n\u003Ch3 id=\"http_headers\"\u003EHTTP headers\u003C/h3\u003E\n\n\u003Cp\u003EThe following headers need to be set and sent for every request:\u003C/p\u003E\n\n\u003Cul\u003E\n\u003Cli\u003EX-FanMaker-Auth\u003C/li\u003E\n\n\u003Cli\u003EX-FanMaker-Vendor\u003C/li\u003E\n\n\u003Cli\u003EX-FanMaker-Site-Id\u003C/li\u003E\n\u003C/ul\u003E\n\n\u003Ch4 id=\"xfanmakervendor__xfanmakersiteid\"\u003EX-FanMaker-Vendor \u0026amp; X-FanMaker-Site-ID\u003C/h4\u003E\n\n\u003Cp\u003EThese should be set to the values provided to you by FanMaker.\u003C/p\u003E\n\n\u003Ch4 id=\"xfanmakerauth\"\u003EX-FanMaker-Auth\u003C/h4\u003E\n\n\u003Cp\u003EThe value of this header should be a Hashed Message Authentication Code (HMAC) generated using your secret and the SHA256 algorithm. The code should not be sent as binary data, but rather lower case hexits.\u003C/p\u003E\n\n\u003Cp\u003EFor POST requests you must generate the header by hashing the JSON content of your post body with your secret key.\u003C/p\u003E\n\n\u003Cp\u003EFor GET requests you must generate the header by hashing an empty string with your secret key.\u003C/p\u003E\n\n\u003Cp\u003ESome examples of generating the auth header. The message is the JSON encoded post body and secret is your assigned secret key\u003C/p\u003E\n\n\u003Ch5 id=\"php\"\u003EPHP\u003C/h5\u003E\n\n\u003Cpre\u003E\u003Ccode\u003E$AuthHeader = hash_hmac(\u0026#39;sha256\u0026#39;, $message, $secret, self::OUTPUT_LC_HEXITS);\u003C/code\u003E\u003C/pre\u003E\n\n\u003Ch5 id=\"ruby\"\u003ERuby\u003C/h5\u003E\n\n\u003Cpre\u003E\u003Ccode\u003Erequire \u0026#39;openssl\u0026#39;\nauth_header = OpenSSL::HMAC.hexdigest(\u0026#39;sha256\u0026#39;, secret, message)\u003C/code\u003E\u003C/pre\u003E\n\n\u003Ch3 id=\"api_errors\"\u003EAPI Errors\u003C/h3\u003E\n\n\u003Cp\u003EWhen you encounter errors, API v1 will set a real error header with the response. This can be problamatic with javascript-based clients like jQuery, as they will route non-200 responses into handlers other than \u003Ccode\u003Esuccess\u003C/code\u003E.\u003C/p\u003E\n","copyright":"\u0026copy; FanMaker LLC","doc_url":"/docs/1.0","api_url":"api/v1/","resources":{"api-v1-adjustments":{"doc_url":"/docs/1.0/api-v1-adjustments","api_url":"api/v1/","name":"Point Spend","short_description":null,"full_description":"","version":"1.0","formats":null,"metadata":null,"methods":[{"doc_url":"/docs/1.0/api-v1-adjustments/create","name":"create","apis":[{"api_url":"api/v1/point_spend","http_method":"POST","short_description":"Spend a users points","deprecated":null}],"formats":["json"],"full_description":"\n\u003Cp\u003EThis method allows you deduct points from a user account.\u003C/p\u003E\n","errors":[],"params":[{"name":"email","full_name":"email","description":"\n\u003Cp\u003EThe email address of the user you wish to grant points to. This is the unique identifier for rewards users. Optionally you may also use a combination of identifier and identifier_type to find your user (see below). Either email or identifier MUST be submitted.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"identifier","full_name":"identifier","description":"\n\u003Cp\u003EAn identifier for the user you wish to grant points to. By default this is an email address. You may pass alternate identifier values if you specifiy which identifier to use with the identifier_type param. Either email or identifier MUST be submitted.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"identifier_type","full_name":"identifier_type","description":"\n\u003Cp\u003EThe type of identifier you wish to find the user by.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be one of: pid, cust_id, oktaid, netid, pbr_id, qrcode, outbox_id, gpsid, ssbid, usatrimemberid, yinzcam_id, nfl_oidc, mlb_oidc, tunespeak_user_id, stripe_cid, tdc_id, user_id, email, student_id, member_id.","expected_type":"string","metadata":null,"show":true},{"name":"spend","full_name":"spend","description":"\n\u003Cp\u003EThe quantity of points you wish to deduct. Will be treated as the absolute value of the integer.\u003C/p\u003E\n","required":true,"allow_nil":false,"validator":"Must be Integer","expected_type":"numeric","metadata":null,"show":true},{"name":"reason","full_name":"reason","description":"\n\u003Cp\u003EA sentence describing what the user spent points on. This will be viewable by site administrators in your dashboard. The default is \u2018Spent via API request\u2019\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"date","full_name":"date","description":"\n\u003Cp\u003EThe date on which you wish the spend to be recorded as having taken place.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true}],"examples":["Success Response\n{\n  status: 'success',\n  messages: [],\n  success: true,\n  data: [\n    {\n      \"points_spent\": 400,\n      \"points_available\": 12000\n    }\n  ]\n}\n\nError Response\n{\n  status: 'error',\n  messages: ['User does not have enough points for this transaction.'],\n  success: false,\n  data: [\n    {\n      \"points_available\": 200\n    }\n  ]\n}\n"],"metadata":null,"see":[]}]},"api-v1-checkins":{"doc_url":"/docs/1.0/api-v1-checkins","api_url":"api/v1/","name":"Event Checkins","short_description":null,"full_description":"","version":"1.0","formats":null,"metadata":null,"methods":[{"doc_url":"/docs/1.0/api-v1-checkins/create","name":"create","apis":[{"api_url":"api/v1/events/:event_id/checkins","http_method":"POST","short_description":"Checkin to an event","deprecated":null}],"formats":["json"],"full_description":"\n\u003Cp\u003EThis method allows you to create checkins on behalf of a user. Checkins can only be created with respect to events so it is necessary to provide an event id.\u003C/p\u003E\n","errors":[{"code":401,"description":"Unauthorized","metadata":null},{"code":404,"description":"Event does not exist","metadata":null}],"params":[{"name":"user_id","full_name":"user_id","description":"\n\u003Cp\u003EThe user_id of the user to check in.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be Integer","expected_type":"numeric","metadata":null,"show":true},{"name":"rid","full_name":"rid","description":"\n\u003Cp\u003EA unique identifier and identifier type for the user. Either user_id or email or RID MUST BE provided.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"params":[{"name":"type","full_name":"rid[type]","description":"\n\u003Cp\u003EThe identifier type associated to look a user up by.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be one of: pid, cust_id, oktaid, netid, pbr_id, qrcode, outbox_id, gpsid, ssbid, usatrimemberid, yinzcam_id, nfl_oidc, mlb_oidc, tunespeak_user_id, stripe_cid, tdc_id.","expected_type":"string","metadata":null,"show":true},{"name":"identifier","full_name":"rid[identifier]","description":"\n\u003Cp\u003EThe unique user identifier\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true}]},{"name":"email","full_name":"email","description":"\n\u003Cp\u003EThe email address of the user to check in. Either user_id or email MUST BE provided.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"latitude","full_name":"latitude","description":"\n\u003Cp\u003ELatitude of the checkin.\u003C/p\u003E\n","required":true,"allow_nil":false,"validator":"Must be Float","expected_type":"numeric","metadata":null,"show":true},{"name":"longitude","full_name":"longitude","description":"\n\u003Cp\u003ELongitude of the checkin.\u003C/p\u003E\n","required":true,"allow_nil":false,"validator":"Must be Float","expected_type":"numeric","metadata":null,"show":true},{"name":"checked_in_at","full_name":"checked_in_at","description":"\n\u003Cp\u003ETime that the checkin occured. This should be ISO8601 formatted, e.g. \u201c2014-10-05T03:15:04-500\u201d\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"points_to_award","full_name":"points_to_award","description":"\n\u003Cp\u003EThe points you wish to award this user for this checkin. This is an optional parameter. Otherwise the default checkin value will be used.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be Integer","expected_type":"numeric","metadata":null,"show":true},{"name":"override","full_name":"override","description":"\n\u003Cp\u003EIf true the checkin time and location constraints will be skipped.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be one of: true, false.","expected_type":"string","metadata":null,"show":true},{"name":"override_location","full_name":"override_location","description":"\n\u003Cp\u003EIf true the submitted location will not be validated. Coordinants must still be submitted.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be one of: true, false.","expected_type":"string","metadata":null,"show":true},{"name":"override_time","full_name":"override_time","description":"\n\u003Cp\u003EIf true we will not attempt to validate when this checkin occured. If submitted, \u201cchecked_in_at\u201d will be used as the checkin time, otherwise the time of submission will be recorded\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be one of: true, false.","expected_type":"string","metadata":null,"show":true}],"examples":["Request POST\n{\n  user_id: 456,\n  latitude: 45.234234234,\n  longitude: -93.1233534,\n  checked_in_at: '2014-10-05T03:15:04-500'\n}\n\nRequest POST\n{\n  rid: {\n    type: 'oktaid',\n    identifier: '1234567890'\n  },\n  latitude: 45.234234234,\n  longitude: -93.1233534,\n  checked_in_at: '2014-10-05T03:15:04-500'\n}\n\nError Response\n{\n  status: 'error',\n  messages: 'Position out of range.',\n  success: false,\n  data: null\n}\n\nSuccess Response\n{\n  status: 'success',\n  messages: 'Checkin created.',\n  success: true,\n  data: {\n    activity_id: 1235,\n    points_awarded: 200,\n    points_available: 400,\n    point_total: 3000,\n    # If your event has an attendee_message set, it will be sent back here\n    attendee_message: 'You checked in! You earned 200 points!'\n  }\n}\n"],"metadata":{"Authentication":"Required"},"see":[]}]},"api-v1-events":{"doc_url":"/docs/1.0/api-v1-events","api_url":"api/v1/","name":"Events","short_description":null,"full_description":"","version":"1.0","formats":null,"metadata":null,"methods":[{"doc_url":"/docs/1.0/api-v1-events/index","name":"index","apis":[{"api_url":"api/v1/events","http_method":"GET","short_description":"Get a list of events","deprecated":null}],"formats":["json"],"full_description":"\n\u003Cp\u003EThis method allows you to retrieve a list of events for your site ordered chronologically.\u003C/p\u003E\n","errors":[{"code":401,"description":"Unauthorized","metadata":null}],"params":[{"name":"before","full_name":"before","description":"\n\u003Cp\u003EIf included, will only return events that start before the specified time. This should be ISO8601 formatted, e.g. \u201c2014-10-05T03:15:04-500\u201d\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"after","full_name":"after","description":"\n\u003Cp\u003EIf included, will only return events that start after the specified time. This should be ISO8601 formatted, e.g. \u201c2014-10-05T03:15:04-500\u201d\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"per_page","full_name":"per_page","description":"\n\u003Cp\u003EIf included will limit the quantity of returned events. The default for this param is 1000.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be a number.","expected_type":"string","metadata":null,"show":true},{"name":"page","full_name":"page","description":"\n\u003Cp\u003EIf included will offset the returned results. The default for this param is 1.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be a number.","expected_type":"string","metadata":null,"show":true}],"examples":["Request GET\n\nSuccess Response\n[\n  {\n    \"date_end\":\"2014-10-09T04:51:28Z\",\n    \"date_start\":\"2014-10-08T18:51:28Z\",\n    \"event_name\":\"Test Event\",\n    \"game_start_time\":\"2014-10-08T23:51:28Z\",\n    \"id\":4397\n  }\n]\n"],"metadata":{"Authentication":"Required"},"see":[]}]},"api-v1-identifiers":{"doc_url":"/docs/1.0/api-v1-identifiers","api_url":"api/v1/","name":"User Identifier Assignment","short_description":null,"full_description":"","version":"1.0","formats":null,"metadata":null,"methods":[{"doc_url":"/docs/1.0/api-v1-identifiers/create","name":"create","apis":[{"api_url":"api/v1/identifiers","http_method":"POST","short_description":"Set a unique identifier on a user","deprecated":null}],"formats":["json"],"full_description":"\n\u003Cp\u003EThis method allows you to assign unique identifiers to users. You can use these identifiers to look up users on other endpoints.\u003C/p\u003E\n\n\u003Cp\u003EIf your program has enabled delayed actions, any identifiers that are unable to be assigned to a user due to the user not existing will be stored for later.\u003C/p\u003E\n\n\u003Cp\u003EWhen the user account is created any stored identifiers will be assigned.\u003C/p\u003E\n","errors":[{"code":401,"description":"Unauthorized","metadata":null}],"params":[{"name":"email","full_name":"email","description":"\n\u003Cp\u003EThe email address of the user to assign this identifier to. If the user does not exist and delayed actions is enabled, this is the key that we will use to assign this identifier later.\u003C/p\u003E\n","required":true,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"new_identifier","full_name":"new_identifier","description":"\n\u003Cp\u003EThe identifier you wish to assign to the user. This identifier must be unique amongst its type\u003C/p\u003E\n","required":true,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"new_identifier_type","full_name":"new_identifier_type","description":"\n\u003Cp\u003EThe type of the identifier you wish to assign to the user.\u003C/p\u003E\n","required":true,"allow_nil":false,"validator":"Must be one of: pid, cust_id, oktaid, netid, pbr_id, qrcode, outbox_id, gpsid, ssbid, usatrimemberid, yinzcam_id, nfl_oidc, mlb_oidc, tunespeak_user_id, stripe_cid, tdc_id.","expected_type":"string","metadata":null,"show":true}],"examples":["Request POST\n  {\n    email: 'test@test.com',\n    new_identifier: 'TEST',\n    new_identifier_type: 'cust_id',\n  }\n\nResult\n {\n   assigned: true\n   message: ''\n }\n"],"metadata":null,"see":[]}]},"api-v1-point_grant":{"doc_url":"/docs/1.0/api-v1-point_grant","api_url":"api/v1/","name":"Point Grant","short_description":null,"full_description":"","version":"1.0","formats":null,"metadata":null,"methods":[{"doc_url":"/docs/1.0/api-v1-point_grant/create","name":"create","apis":[{"api_url":"api/v1/point_grant","http_method":"POST","short_description":"DO NOT USE - Deprecated 28/02/2024 - Grant users points","deprecated":null}],"formats":["json"],"full_description":"\n\u003Cp\u003EThis method allows you add points to a user account.\u003C/p\u003E\n\n\u003Cp\u003EThis method supports Delayed Actions. If your program has enabled Delayed Actions (talk to your activation coordinator) you can send point grants for users who are not yet members.\u003C/p\u003E\n\n\u003Cp\u003ETo store a Delayed Grant, submit a request using user identifiers you know do not exist in your program. When a user is not found using the identifiers you submit, we will store the point grant. When the user identifiers you utlizied are added to a member\u2019s account, any delayed grants stored will be applied to the account.\u003C/p\u003E\n","errors":[],"params":[{"name":"email","full_name":"email","description":"\n\u003Cp\u003EThe email address of the user you wish to grant points to. This is the unique identifier for rewards users. Optionally you may also use a combination of identifier and identifier_type to find your user (see below). Either email or identifier MUST be submitted.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"identifier","full_name":"identifier","description":"\n\u003Cp\u003EAn identifier for the user you wish to grant points to. By default this is an email address. You may pass alternate identifier values if you specifiy which identifier to use with the identifier_type param. Either email or identifier MUST be submitted.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"identifier_type","full_name":"identifier_type","description":"\n\u003Cp\u003EThe type of identifier you wish to find the user by.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be one of: pid, cust_id, oktaid, netid, pbr_id, qrcode, outbox_id, gpsid, ssbid, usatrimemberid, yinzcam_id, nfl_oidc, mlb_oidc, tunespeak_user_id, stripe_cid, tdc_id, user_id, email, student_id, member_id.","expected_type":"string","metadata":null,"show":true},{"name":"grant","full_name":"grant","description":"\n\u003Cp\u003EThe quantity of points you wish to grant. Will be treated as the absolute value of the integer.\u003C/p\u003E\n","required":true,"allow_nil":false,"validator":"Must be Integer","expected_type":"numeric","metadata":null,"show":true},{"name":"reason","full_name":"reason","description":"\n\u003Cp\u003EA sentence describing why the points were granted. This will be visable to the user in their profile. The default is \u2018Earned points!\u2019\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"date","full_name":"date","description":"\n\u003Cp\u003EThe date on which you wish the point grant to be recorded as having taken place. The default is the date the request is received. The date cannot be before the user registered their account.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"grant_type","full_name":"grant_type","description":"\n\u003Cp\u003EA short slug describing what kind of action prompted this point award. The default is \u201cpoint_grant\u201d. Consistently using the same grant type for the same actions makes your point grants categorizable. This field is limited to 32 characters in length.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"grant_identity","full_name":"grant_identity","description":"\n\u003Cp\u003EA unique identifier for this grant. The combination of a Member\u2019s internal Rewards ID number (user_id) and the Grant Identity are unique in the FanMaker system. Through the consistent use of similar identifiers you can avoid granting duplicate points to users.\u003C/p\u003E\n\n\u003Cp\u003EFor example, if you are granting users 100 points for participating in a Kickoff Contest, and you wish to issue this grant only once per user, you could send the identity of \u201ckickoff_contest\u201d when you award points. If the user participates in the Kickoff Contest multiple times, the non-unique identity will prevent that user from being granted additional points.\u003C/p\u003E\n\n\u003Cp\u003EIf you wish to allow members to earn points for every POST to this endpoint, you can send an incrementing identity (ie: \u201ckickoff_contest_1, kickoff_contest_2, etc\u201d), or not send an identity at all, and we will use a semi-random identity.\u003C/p\u003E\n\n\u003Cp\u003EThe default grant_identity is \u201capi_point_grant_(current timestamp)\u201d\u003C/p\u003E\n\n\u003Cp\u003EThis field is limited to 32 characters in length.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true}],"examples":["Success Response\n{\n  status: 'success',\n  messages: '',\n  success: true,\n  data: [\n    {\n      \"points_granted\": 400,\n      \"points_available\": 12000\n    }\n  ]\n}\n\nSuccess Response when doing a delayed grant\n{\n  \"status\": \"success\",\n  \"messages\": \"\",\n  \"success\": true,\n  \"data\": {\n    \"assigned\": false,\n    \"message\": \"Activity stored for delayed processing\"\n  }\n}\n"],"metadata":null,"see":[]}]},"api-v1-sponsor_scans":{"doc_url":"/docs/1.0/api-v1-sponsor_scans","api_url":"api/v1/","name":"Api-v1-sponsor scans","short_description":null,"full_description":null,"version":"1.0","formats":null,"metadata":null,"methods":[{"doc_url":"/docs/1.0/api-v1-sponsor_scans/index","name":"index","apis":[{"api_url":"api/v1/sponsor_scans","http_method":"GET","short_description":"Get a list of sponsors scans between two dates","deprecated":null}],"formats":["json"],"full_description":"\n\u003Cp\u003EThis method allows you to retreive a list of sponsor scans between two dates or return all the sponsor scans to current date.\u003C/p\u003E\n","errors":[{"code":401,"description":"Unauthorized","metadata":null}],"params":[{"name":"start","full_name":"start","description":"\n\u003Cp\u003EThe date you wish to start filtering actions from, thru end time or today if end is not provided. This should be ISO8601 formatted, e.g. \u201c2017-12-05T03:15:04-500\u201d\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"stop","full_name":"stop","description":"\n\u003Cp\u003EThe date you wish to stop filtering a sponsor scans. This should be ISO8601 formatted, e.g. \u201c2017-12-05T03:15:04-500\u201d\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true}],"examples":["Success Response\n{\n  status: 'success',\n  messages: [],\n  success: true,\n  data: [\n    {\n      \"user_id: 12345,\n      \"sponsor_id\": 23456,\n      \"sponsor_name\": \"Jhon Doe\",\n      \"scan_timestamp\": \"2019-01-24T22:59:59Z\",\n      \"instant_win\": true\n    }\n  ]\n}\n"],"metadata":{"Authentication":"Required"},"see":[]}]},"Stored Value":{"doc_url":"/docs/1.0/Stored Value","api_url":"api/v1/","name":"Stored Value","short_description":null,"full_description":"","version":"1.0","formats":null,"metadata":null,"methods":[{"doc_url":"/docs/1.0/Stored Value/show","name":"show","apis":[{"api_url":"api/v1/stored/balance","http_method":"GET","short_description":"Get current balance in cents","deprecated":null}],"formats":["json"],"full_description":"\n\u003Cp\u003EThis method allows you to retrieve the balance for the authorized user\u003C/p\u003E\n","errors":[{"code":401,"description":"Unauthorized","metadata":null}],"params":[],"examples":["Request GET\n\nSuccess Response\n{ balance: 1550 }\n"],"metadata":{"Authentication":"Required"},"see":[]},{"doc_url":"/docs/1.0/Stored Value/update","name":"update","apis":[{"api_url":"api/v1/stored/balance","http_method":"PUT","short_description":"Add money to the account","deprecated":null}],"formats":["json"],"full_description":"\n\u003Cp\u003EIncrease the balance of the authorized user by the given amount\u003C/p\u003E\n","errors":[{"code":401,"description":"Unauthorized","metadata":null}],"params":[],"examples":["Request POST\n{\n  uuid: '46e7-c1d1-9a4ff8',\n  amount: 1199,\n}\n\nSuccess Response\n{\n  uuid: '46e7-c1d1-9a4ff8',\n  amount: 1199,\n  created_at: '2020-09-16 20:23:15',\n  balance: 2749\n}\n"],"metadata":{"Authentication":"Required"},"see":[]},{"doc_url":"/docs/1.0/Stored Value/create","name":"create","apis":[{"api_url":"api/v1/stored/transactions","http_method":"POST","short_description":"Spend money from the account","deprecated":null}],"formats":["json"],"full_description":"\n\u003Cp\u003EThis method allows you to spend money from the balance of the authorized user\u003C/p\u003E\n","errors":[{"code":401,"description":"Unauthorized","metadata":null},{"code":422,"description":"Unprocessable","metadata":null}],"params":[{"name":"uuid","full_name":"uuid","description":"\n\u003Cp\u003EUnique Identifier provided by the requester\u003C/p\u003E\n","required":true,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"amount","full_name":"amount","description":"\n\u003Cp\u003EAmount to be retrieved from the authenticated user\u2019s balance (in cents)\u003C/p\u003E\n","required":true,"allow_nil":false,"validator":"Must be Integer","expected_type":"numeric","metadata":null,"show":true},{"name":"line_items","full_name":"line_items","description":"\n\u003Cp\u003ECustom details on the items purchased on the transaction\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be an array of any type","expected_type":"array","metadata":null,"show":true}],"examples":["Request POST\n{\n  uuid: '46e7-c1d1-9a4ff8',\n  amount: 1199,\n  line_items: [\n    {\n      sku: 12345,\n      name: 'Combo Nachos'\n    },\n    {\n      sku: 12346,\n      name: 'Corona Beer 190ml'\n    }\n  ]\n}\n\nSuccess Response\n{\n  uuid: '46e7-c1d1-9a4ff8',\n  amount: 1199,\n  created_at: '2020-09-16 20:23:15',\n  balance: 301\n}\n\nUnprocessable Response\n{\n  errors: [\n    'uuid is already on use'\n  ]\n}\n"],"metadata":{"Authentication":"Required"},"see":[]},{"doc_url":"/docs/1.0/Stored Value/destroy","name":"destroy","apis":[{"api_url":"api/v1/stored/transactions/:uuid","http_method":"DELETE","short_description":"Cancel a transaction identified by uuid","deprecated":null}],"formats":["json"],"full_description":"\n\u003Cp\u003EThis will undo the transaction that is identified by the uuid\u003C/p\u003E\n","errors":[{"code":401,"description":"Unauthorized","metadata":null},{"code":404,"description":"Not Found","metadata":null}],"params":[],"examples":["Request DELETE\n\nSuccess Response\n{\n  uuid: '46e7-c1d1-9a4ff8',\n  balance: 1500\n}\n\nNot Found Response\n{\n  errors: [\n    'Transaction not found'\n  ]\n}\n"],"metadata":null,"see":[]}]},"api-v1-users":{"doc_url":"/docs/1.0/api-v1-users","api_url":"api/v1/","name":"User Management","short_description":null,"full_description":"","version":"1.0","formats":null,"metadata":null,"methods":[{"doc_url":"/docs/1.0/api-v1-users/create","name":"create","apis":[{"api_url":"api/v1/users","http_method":"POST","short_description":"Create or update a user","deprecated":null}],"formats":["json"],"full_description":"\n\u003Cp\u003EThis method allows you create or update a user. A user will be created if they do not already exist, or their information will be updated if they do.\u003C/p\u003E\n\n\u003Cp\u003ENewly created users will receive the New User Welcome email as defined by your program. Any waiting delayed actions will also be assigned to the newly created account.\u003C/p\u003E\n\n\u003Cp\u003EThis endpoint supports user lookup by email only. No alternate identifiers can be used to find a user.\u003C/p\u003E\n","errors":[{"code":401,"description":"Unauthorized","metadata":null}],"params":[{"name":"active","full_name":"active","description":"\n\u003Cp\u003ETrue or False to activate or deactivate a user.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"email","full_name":"email","description":"\n\u003Cp\u003EUser\u2019s email address. This is the unique identifier for rewards users.\u003C/p\u003E\n","required":true,"allow_nil":false,"validator":"","expected_type":"string","metadata":null,"show":true},{"name":"password","full_name":"password","description":"\n\u003Cp\u003EThe password you want to assign this user. This will only assign a password to a new user record; when a user is being updated this field is ignored.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"first_name","full_name":"first_name","description":"\n\u003Cp\u003EUser\u2019s first name\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"last_name","full_name":"last_name","description":"\n\u003Cp\u003EUser\u2019s last name\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"address","full_name":"address","description":"\n\u003Cp\u003EUser\u2019s street address. E.g. \u2018123 Main St.\u2019\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"city","full_name":"city","description":"\n\u003Cp\u003EUser\u2019s city E.g. \u2018Minneapolis\u2019\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"state","full_name":"state","description":"\n\u003Cp\u003EUser\u2019s state E.g. \u2018MN\u2019\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"zipcode","full_name":"zipcode","description":"\n\u003Cp\u003EUser\u2019s zip code E.g. \u201855401\u2019\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"phone","full_name":"phone","description":"\n\u003Cp\u003EUser\u2019s phone number E.g. \u2018866-385-0027\u2019\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"student_id","full_name":"student_id","description":"\n\u003Cp\u003EThe user\u2019s student id number.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"member_id","full_name":"member_id","description":"\n\u003Cp\u003EThe user\u2019s member id number.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"tc_accepted","full_name":"tc_accepted","description":"\n\u003Cp\u003EWhether or not the user has accepted the site\u2019s terms and conditions. Only required if your Rewards program requires TOS acceptance for signup.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be one of: true, false.","expected_type":"string","metadata":null,"show":true},{"name":"tags","full_name":"tags","description":"\n\u003Cp\u003ETags you want applied to this user E.g. \u2018Season Ticketholder\u2019. For multiple tags, pass a comma seperated string \u2018VIP, SeasonTicketholder, Section24\u2019\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"identifiers","full_name":"identifiers","description":"\n\u003Cp\u003EAn array of user identifiers. The supported identifiers are unique to your site. An identifier consists of a key and a value. Users may have arbitrarily many identifiers, but each identifer must be unique across your rewards installation.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be an Array of nested elements","expected_type":"string","metadata":null,"show":true,"params":[{"name":"user_identifier","full_name":"identifiers[user_identifier]","description":"","required":false,"allow_nil":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"params":[{"name":"type","full_name":"identifiers[user_identifier][type]","description":"\n\u003Cp\u003EThe identifier name\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be one of: pid, cust_id, oktaid, netid, pbr_id, qrcode, outbox_id, gpsid, ssbid, usatrimemberid, yinzcam_id, nfl_oidc, mlb_oidc, tunespeak_user_id, stripe_cid, tdc_id.","expected_type":"string","metadata":null,"show":true},{"name":"identifier","full_name":"identifiers[user_identifier][identifier]","description":"\n\u003Cp\u003EThe identifier, e.g. \u201c1234567890\u201d\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true}]}]},{"name":"membership_level_id","full_name":"membership_level_id","description":"\n\u003Cp\u003EID of the Membership Level you want to assign this user (if any)\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be Integer","expected_type":"numeric","metadata":null,"show":true},{"name":"membership_expiration_date","full_name":"membership_expiration_date","description":"\n\u003Cp\u003EExpiration Date of the Membership Level you want to assign this user (if any). Required Format: YYYY-MM-DD\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true}],"examples":["Request POST\n{\n  \"email\": \"johndoe@example.com\",\n  \"password\": \"\u0026BiyghIUh78\",\n  \"first_name\": \"John\",\n  \"last_name\": \"Doe\",\n  \"address\": \"123 Main St.\",\n  \"city\": \"Minneapolis\",\n  \"state\": \"MN\",\n  \"zipcode\": \"55401\",\n  \"phone\": \"866-385-0021\",\n  \"tags\": 'VIP, section14',\n  \"identifiers\": [\n    {\n      \"type\": \"oktaid\",\n      \"identifier\": \"1234567890\"\n    }\n  ]\n}\n\nSuccess Response\n[\n  {\n    \"user_created\": true,\n    \"identifiers_created\": 1,\n    \"tags_applied\": 2\n  }\n]\n"],"metadata":{"Authentication":"Required"},"see":[]},{"doc_url":"/docs/1.0/api-v1-users/index","name":"index","apis":[{"api_url":"api/v1/users","http_method":"GET","short_description":"Get a list of users","deprecated":null}],"formats":["json"],"full_description":"\n\u003Cp\u003EThis method allows you to retrieve a list of users from your site.\u003C/p\u003E\n","errors":[{"code":401,"description":"Unauthorized","metadata":null}],"params":[{"name":"page","full_name":"page","description":"\n\u003Cp\u003EThe page of results to retrieve. Results are paginated with 100 users per page.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"include_inactive_users","full_name":"include_inactive_users","description":"\n\u003Cp\u003ESend as true/false, defaults to false. This option will include deleted users that still have a user record, and depending on client policy may or may not have any additional data. The presence of data does not indicate that the user can be rebuilt and is only provided as a courtesy for building historical analysis. Deleted user data can be permanently removed at any time depending on client or country of origin policies. If you are using deleted user data please contact help@fanmaker.com to establish user data policies.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"only_inactive_users","full_name":"only_inactive_users","description":"\n\u003Cp\u003ESend as true/false, defaults to false. This option will only include deleted users that still have a user record. See include_inactive_users for more details.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"created_at","full_name":"created_at","description":"\n\u003Cp\u003ESend in YYYY-MM-DD format. Limits returned users to those who joined on the provided date.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"created_after","full_name":"created_after","description":"\n\u003Cp\u003ESend in YYYY-MM-DD format. The query will be exclusive of this date. Limits returned users to those who joined after the provided date.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"created_before","full_name":"created_before","description":"\n\u003Cp\u003ESend in YYYY-MM-DD format. The query will be exclusive of this date. Limits returned users to those who joined before the provided date.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true}],"examples":["Success Response\n{\n  status: 'success',\n  messages: [],\n  success: true,\n  data: [\n    {\n      \"username\": \"johndoe@example.com\",\n      \"created_at\": \"2014-01-16T19:55:44Z\",\n      \"identifiers\": [\n        {\n            \"identifier\": \"123\",\n            \"type\": \"cust_id\",\n            \"active\": true\n        },\n      ],\n      \"user_id\": 12345,\n      \"active\": true,\n    }\n  ]\n}\n"],"metadata":{"Authentication":"Required"},"see":[]},{"doc_url":"/docs/1.0/api-v1-users/show","name":"show","apis":[{"api_url":"api/v1/users/:id","http_method":"GET","short_description":"DO NOT USE - Depreciating 4/1/2018 - Get detailed user information","deprecated":null}],"formats":["json"],"full_description":"\n\u003Ch3 id=\"\"\u003E\u003Cspan style='color: red'\u003EDO NOT USE - Depreciating 4/1/2018\u003C/span\u003E\u003C/h3\u003E\n\n\u003Cp\u003EThis method allows you to retrieve detailed user information for a user of your site.\u003C/p\u003E\n","errors":[{"code":401,"description":"Unauthorized","metadata":null}],"params":[{"name":"id","full_name":"id","description":"\n\u003Cp\u003EAn identifier for the user you wish to retrieve. By default the identifier is an email address. You may pass alternate identifier values if you specifiy which identifier to use with the identifier_type param\u003C/p\u003E\n","required":true,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"identifier_type","full_name":"identifier_type","description":"\n\u003Cp\u003EThe type of identifier you wish to find the user by. By default the identifier is an email address.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be one of: pid, cust_id, oktaid, netid, pbr_id, qrcode, outbox_id, gpsid, ssbid, usatrimemberid, yinzcam_id, nfl_oidc, mlb_oidc, tunespeak_user_id, stripe_cid, tdc_id, user_id, email, student_id, member_id, ticketmaster_id.","expected_type":"string","metadata":null,"show":true},{"name":"since","full_name":"since","description":"\n\u003Cp\u003EThe date you wish to start filtering activities and visits from, thru today. Format: YYYY-MM-DD\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true}],"examples":["GET http://api.fanmaker.com/api/v1/users/testuser@fanmaker.com\n\nExample Success Response\n{\n  status: 'success',\n  messages: [],\n  success: true,\n  data: {\n    \"activities\":[\n      {\n        \"identity\":\"0 test testuser@fanmaker.com\",\n        \"type\":\"test\",\n        \"subtype\":\"test\",\n        \"subject\":\"Necessitatibus suscipit officiis aut aperiam neque quos hic.\",\n        \"created_at\":\"2015-01-19T10:19:28-06:00\",\n        \"source_url\":\"http://okeefezboncak.info/ricardo_damore\",\n        \"worth\":795,\n        \"awarded\":795,\n      },\n      ...\n    ],\n    \"transactions\":[\n      {\n        \"purchased_at\":\"2015-01-17T10:19:28-06:00\",\n        \"created_at\":\"2015-01-19T10:19:28-06:00\",\n        \"data_type\":\"pos\",\n        \"transaction_items\":[\n          {\n            \"total_cents\":8488,\n            \"price_cents\":0,\n            \"quantity\":2,\n            \"name\":\"Practical Concrete Table\",\n            \"category\":\"ut\", \"bucket\":\"Garden\"\n          },\n          ...\n        ],\n        \"transaction_number\":\"\",\n        \"transaction_id\":\"8108624088403\",\n        \"event_id\":\"\",\n        \"location_id\":\"\",\n        \"terminal_id\":\"\",\n        \"member_id\":\"\",\n        \"table_number\":\"\"\n      },\n      ...\n    ],\n    \"devices\":[\n      {\n        \"device_type\":\"android\",\n        \"os\":\"7\",\n        \"app_name\":\"Rewards\"\n      },\n      ...\n    ],\n    \"visits\":[\n      {\n        \"last_login\":\"Jan 18, 2015 10:19 AM\",\n        \"desktop\":1,\n        \"mobile\":0\n      },\n      ...\n    ],\n    \"adjustments\": [\n      {\n        \"date\": \"2017-05-02T16:02:24Z\",\n        \"reason\": \"Redeemed Test Price\",\n        \"points\": 1\n      },\n      {\n        \"date\": \"2017-05-02T16:01:55Z\",\n        \"reason\": \"Redeemed Test Price\",\n        \"points\": 1\n      },\n      {\n        \"date\": \"2017-05-02T16:00:35Z\",\n        \"reason\": \"Redeemed Test Price\",\n        \"points\": 1\n      }\n    ],\n    \"identifiers\":[\n      {\n        \"identifier\": \"12asd3f89d\",\n        \"type\": \"oktaid\",\n        \"active\": true\n      }\n      ...\n    ],\n    \"email\":\"testuser@fanmaker.com\",\n    \"email_deliverable\":true,\n    \"first_name\":\"Colt\",\n    \"last_name\":\"Reynolds\",\n    \"fanfluence\":934,\n    \"profile_url\":\"http://admin.fanmaker.com/admin/users/1\",\n    \"gender\":\"male\",\n    \"age\":75,\n    \"relationship_status\":\"Other\",\n    \"religion\":\"other\",\n    \"political\":\"other\",\n    \"location\":\"2330 Dillan Throughway\",\n    \"birthdate\":\"1969-01-19\",\n    \"phone\":\"200-934-9380\",\n    \"social_handles\": {\n      \"twitter\":\"\",\n      \"foursquare\":\"\",\n      \"facebook\":\"\",\n      \"instagram\":\"\",\n      \"tvtag\":\"\",\n      \"shopify\":\"\",\n      \"pinterest\":\"funkyface\",\n      \"tumblr\":\"\"\n    },\n    \"created_at\":\"2015-01-17T10:19:28-06:00\",\n    \"tc_accepted_at\":\"2015-01-17T10:19:28-06:00\",\n    \"points_available\":795,\n    \"points_spent\":0,\n    \"total_points_earned\":795,\n    \"social_points\":0,\n    \"ticketing_points\":0,\n    \"category_spend\":[\n      {\n        \"name\":\"Garden\",\n        \"spend\":84.88\n      },\n      ...\n    ],\n    \"ticketing_spend\":0,\n    \"pos_points\":0,\n    \"pos_spend\":84.88,\n    \"membership_assignment\": {\n      \"name\": \"Level Name\",\n      \"expires_at\": \"Expiration date (if applicable)\",\n      \"color\": \"#FFF000\"\n    }\n  }\n}\n"],"metadata":{"Authentication":"Required"},"see":[]},{"doc_url":"/docs/1.0/api-v1-users/welcome","name":"welcome","apis":[{"api_url":"api/v1/users/:id/welcome","http_method":"POST","short_description":"Send the welcome packet to the user","deprecated":null}],"formats":["json"],"full_description":"\n\u003Cp\u003EThis method allows you to trigger the processing of a Welcome Packet to a member. This process is automatically run in most situations.\u003C/p\u003E\n\n\u003Cp\u003EDuring the welcome process a user: - Is sent a welcome email - Is awarded registration points (if feature is enabled) - Is added to the search index and reindexed - Is marked as welcomed\u003C/p\u003E\n\n\u003Cp\u003EUsers marked as welcomed will not be reprocessed if this endpoint is hit again.\u003C/p\u003E\n","errors":[{"code":401,"description":"Unauthorized","metadata":null}],"params":[{"name":"id","full_name":"id","description":"\n\u003Cp\u003EAn identifier for the user you wish to retrieve. By default the identifier is an email address. You may pass alternate identifier values if you specifiy which identifier to use with the identifier_type param\u003C/p\u003E\n","required":true,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"identifier_type","full_name":"identifier_type","description":"\n\u003Cp\u003EThe type of identifier you wish to find the user by. By default the identifier is an email address.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be one of: pid, cust_id, oktaid, netid, pbr_id, qrcode, outbox_id, gpsid, ssbid, usatrimemberid, yinzcam_id, nfl_oidc, mlb_oidc, tunespeak_user_id, stripe_cid, tdc_id, user_id, email, student_id, member_id.","expected_type":"string","metadata":null,"show":true},{"name":"action_type","full_name":"action_type","description":"\n\u003Cp\u003EThe type of action that is prompting this API call. If you have preloaded user accounts, the new user packet is sent when the user first signs in.\u003C/p\u003E\n","required":true,"allow_nil":false,"validator":"Must be one of: registration, authorization.","expected_type":"string","metadata":null,"show":true}],"examples":["Success Response\n{\n  status: 'success',\n  messages: [],\n  success: true,\n  data:\n}\n"],"metadata":{"Authentication":"Required"},"see":[]},{"doc_url":"/docs/1.0/api-v1-users/details","name":"details","apis":[{"api_url":"api/v1/users/:id/details","http_method":"GET","short_description":"Get detailed user information","deprecated":null}],"formats":["json"],"full_description":"\n\u003Cp\u003EThis method allows you to retrieve detailed user information for a user of your site. This option will also return a deleted user that still has a user record, and depending on client policy may or may not have any additional data. The presence of data does not indicate that the user can be rebuilt and is only provided as a courtesy for building historical analysis. Deleted user data can be permanently removed at any time depending on client or country of origin policies. If you are using deleted user data please contact help@fanmaker.com to establish user data policies.\u003C/p\u003E\n","errors":[{"code":401,"description":"Unauthorized","metadata":null}],"params":[{"name":"id","full_name":"id","description":"\n\u003Cp\u003EAn identifier for the user you wish to retrieve. By default the identifier is an email address. You may pass alternate identifier values if you specifiy which identifier to use with the identifier_type param\u003C/p\u003E\n","required":true,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"identifier_type","full_name":"identifier_type","description":"\n\u003Cp\u003EThe type of identifier you wish to find the user by. By default the identifier is an email address.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be one of: pid, cust_id, oktaid, netid, pbr_id, qrcode, outbox_id, gpsid, ssbid, usatrimemberid, yinzcam_id, nfl_oidc, mlb_oidc, tunespeak_user_id, stripe_cid, tdc_id, user_id, email, student_id, member_id, ticketmaster_id.","expected_type":"string","metadata":null,"show":true},{"name":"since","full_name":"since","description":"\n\u003Cp\u003EThe date you wish to start filtering activities and visits from in UTC, thru today. Format: YYYY-MM-DD HH:MM:SS\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true}],"examples":["GET http://api.fanmaker.com/api/v1/users/:user_id/details?identifier_type=user_id\n\nExample Success Response\n\n{\n  status: 'success',\n  messages: [],\n  success: true,\n  data: {\n    \"active\": true,\n    \"spend_data\": {\n        \"category_spend\": [\n            {\n                \"name\": \"Food \u0026 Beverage\",\n                \"spend\": 1012.51\n            },\n            {\n                \"name\": \"Merchandise\",\n                \"spend\": 736.55\n            }\n        ],\n        \"ticketing_spend\": 501.5,\n        \"pos_points\": 8815,\n        \"pos_spend\": 1761.06\n    },\n    \"ids\": {\n        \"rewards_identifiers\": [\n            {\n                \"identifier\": \"9999999\",\n                \"type\": \"pid\",\n                \"active\": true\n            },\n            {\n                \"identifier\": \"/system/qr_codes/images/000/000/071/original/qr_6244071976.png?1504797323\",\n                \"type\": \"QRCODE\",\n                \"active\": true\n            }\n        ],\n        \"user_id\": 379443,\n        \"member_id\": \"9999999999\",\n        \"ticketmaster_id\": \"99999999\"\n    },\n    \"email_deliverable\": true,\n    \"fanfluence\": 442,\n    \"demographics\": {\n        \"gender\": \"Male\",\n        \"age\": 32,\n        \"relationship_status\": \"Single\",\n        \"religion\": \"Other\",\n        \"political\": \"Conservative\",\n        \"birthdate\": \"1985-09-06\"\n    },\n    \"contact_info\": {\n        \"phone_numbers\": {\n            \"phone_home\": \"+15555555555\",\n            \"phone_mobile\": \"+15555555555\",\n            \"phone_office\": \"+15555555555\"\n        },\n        \"email\": \"user@service.com\",\n        \"addresses\": [\n            {\n              \"id\": 999,\n              \"user_id\": 379443,\n              \"name\": \"Christopher Young\",\n              \"address_1\": \"1730 New Brighton Blvd\",\n              \"address_2\": \"#222\",\n              \"city\": \"Minneapolis\",\n              \"state\": \"MN\",\n              \"zip\": \"55413\",\n              \"phone\": \"+15555555555\",\n              \"country\": \"US\",\n              \"primary\": true,\n              \"full_address\": \"1730 New Brighton Blvd #222 \\nMinneapolis, MN 55413\\nUS\"\n          }\n        ]\n    },\n    \"first_name\": \"Christopher\",\n    \"last_name\": \"Young\",\n    \"profile_url\": \"http://admin.fanmaker.com/admin/users/379443\",\n    \"social_handles\": {\n        \"twitter\": \"ChristopherYoung27\",\n        \"foursquare\": \"99999\",\n        \"facebook\": \"christopheryoung\",\n        \"instagram\": \"christopheryoung_instagram\",\n        \"shopify\": \"christopheryoung@fanmaker.com\",\n        \"pinterest\": \"christopheryoung_pins_17\",\n        \"tumblr\": \"ChrisopherYoung2427\"\n    },\n    \"points\": {\n        \"points_available\": 3504,\n        \"points_spent\": -2070,\n        \"points_expired\": 590,\n        \"points_expiring_soon\": 0,\n        \"total_points_earned\": 3504,\n        \"social_points\": 250,\n        \"ticketing_points\": 850\n    },\n    \"created_at\": \"2017-09-07T15:15:23Z\",\n    \"tc_accepted_at\": \"2017-09-07T15:15:23Z\",\n    \"membership_assignment\": {\n        \"name\": \"Membership Name\",\n        \"expires_at\": \"2018-09-07T05:00:00Z\",\n        \"color\": \"#000000\"\n    },\n    \"user_tags\": [\n        \"User\",\n        \"Student\",\n        \"STH\"\n    ],\n    \"visits\": {\n      \"last_seen\":\"Jan 18, 2015 10:19 AM\",\n      \"desktop\":1,\n      \"mobile\":0\n    }\n  }\n  \"active\": true\n}\n","GET http://api.fanmaker.com/api/v1/users/:user_id/details?identifier_type=user_id\n\nExample of Data Added for Kids Club Sites. Note: Child data will only be to Parents and Parent Data will only be present on Child accounts. Furthermore, Child accounts will not have contact info nor social info in their response.\n{\n  \"children\": [\n    {\n        \"first_name\": \"Ezra\",\n        \"last_name\": \"Young\",\n        \"user_id\": 387228,\n        \"active_subscription\": true\n    }\n  ],\n  \"parent_info\": {\n    \"phone_numbers\": {},\n    \"id\": 379443,\n    \"email\": \"parent@service.com\",\n    \"addresses\": []\n  },\n  \"kids_club_info\": {\n    \"grade\": \"1st\",\n    \"school\": \"Example School\",\n    \"favorite_sport\": \"soccer\",\n    \"tshirt_size\": \"youth-xs\"\n  },\n  \"kids_club_payments\": [\n    {\n        \"for_plan\": \"Kids Club 2017\",\n        \"last_four\": 9999,\n        \"ammount\": \"35.0\",\n        \"refunded\": false,\n        \"admin_id\": \"436\",\n        \"status\": \"succeeded\",\n        \"source\": \"credit_card\",\n        \"stripe_id\": \"ch_1AbCde23fGHiJKl4mNOP5QR\",\n        \"stripe_url\": \"https://dashboard.stripe.com/payments/ch_1AbCde23fGHiJKl4mNOP5QR\",\n        \"date\": \"2017-09-07T15:20:32Z\"\n    }\n  ]\n}\n"],"metadata":{"Authentication":"Required"},"see":[]},{"doc_url":"/docs/1.0/api-v1-users/history","name":"history","apis":[{"api_url":"api/v1/users/:id/history","http_method":"GET","short_description":"Get Details about a Users interaction with the program","deprecated":null}],"formats":["json"],"full_description":"\n\u003Cp\u003EThis method allows you to retreive a detailed information about a User\u2019s activities, transactions, and redemptions within a time window. If no window is provided, the most recent 20 of each type is returned. This option will also return a deleted user that still has a user record, and depending on client policy may or may not have any additional data. The presence of data does not indicate that the user can be rebuilt and is only provided as a courtesy for building historical analysis. Deleted user data can be permanently removed at any time depending on client or country of origin policies. If you are using deleted user data please contact help@fanmaker.com to establish user data policies.\u003C/p\u003E\n","errors":[{"code":401,"description":"Unauthorized","metadata":null}],"params":[{"name":"id","full_name":"id","description":"\n\u003Cp\u003EThe Rewards User ID you wish to retreive information about.\u003C/p\u003E\n","required":true,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"start","full_name":"start","description":"\n\u003Cp\u003EThe date you wish to start filtering a user\u2019s history from, thru stop time or today if stop time is not provided. This should be ISO8601 formatted, e.g. \u201c2017-12-05T03:15:04-500\u201d\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"stop","full_name":"stop","description":"\n\u003Cp\u003EThe date you wish to stop filtering a user\u2019s history. This should be ISO8601 formatted, e.g. \u201c2017-12-05T03:15:04-500\u201d\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"per_page","full_name":"per_page","description":"\n\u003Cp\u003EIf included will limit the quantity of returned history items. The default for this param is 1000.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be a number.","expected_type":"string","metadata":null,"show":true},{"name":"page","full_name":"page","description":"\n\u003Cp\u003EIf included will offset the returned results. The default for this param is 1.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be a number.","expected_type":"string","metadata":null,"show":true}],"examples":["GET http://api.fanmaker.com/api/v1/users/:user_id/history\n\nExample Success Response\n{\n  status: 'success',\n  messages: [],\n  success: true,\n  data: {\n    \"activities\": [\n      {\n        \"activity_id\": \"218707\",\n        \"identity\": \"transaction_8621077\",\n        \"type\": \"bypass\",\n        \"subtype\": \"pos\",\n        \"subject\": \"made a purchase\",\n        \"created_at\": \"2017-11-02T23:39:36Z\",\n        \"source_url\": \"\",\n        \"worth\": 230,\n        \"awarded\": 230,\n        \"points_expired\": false,\n        \"spent\": 0\n      }\n    ],\n    \"adjustments\": [\n      {\n        \"admin_id\": 0,\n        \"adjustment_id\": 1,\n        \"date\": \"2017-07-23T21:16:59Z\",\n        \"reason\": \"Entered sweepstakes for Jason Derulo VIP Tickets 1 times\",\n        \"points\": 0,\n        \"type\": \"purchase\"\n      },\n    ],\n    \"transactions\": [\n      {\n        \"purchased_at\": \"2017-11-03T00:51:10Z\",\n        \"created_at\": \"2017-11-21T00:15:22Z\",\n        \"data_type\": \"pos\",\n        \"transaction_items\": [\n            {\n                \"total_cents\": 1100,\n                \"price_cents\": 1100,\n                \"quantity\": 1,\n                \"name\": \"Beer\",\n                \"category\": \"Liquor\",\n                \"bucket\": \"Concessions\"\n            }\n        ],\n        \"transaction_number\": \"123456789\",\n        \"transaction_id\": \"123456789\",\n        \"event_id\": \"\",\n        \"location_id\": \"1234\",\n        \"terminal_id\": \"1ab23cd45e678901\",\n        \"member_id\": \"1234567898765\",\n        \"table_number\": \"\"\n      },\n    ],\n    \"orders\": [\n      {\n        \"admin_id\": \"\",\n        \"quantity\": 1,\n        \"delivery_method\": \"delivery\",\n        \"order_id\": \"888\",\n        \"bundle_id\": null,\n        \"ordered_on\": \"2016-08-30T19:19:29Z\",\n        \"completed_on\": \"2016-08-30T19:20:10Z\",\n        \"shipping_info\": {\n            \"name\": \"Christopher Young\",\n            \"address_1\": \"1730 New Brighton Blvd\",\n            \"address_2\": \"#222\",\n            \"city\": \"Minneapolis\",\n            \"state\": \"MN\",\n            \"zip\": \"55413\",\n            \"phone\": \"+15555555555\",\n            \"tracking_number\": \"ZGkeE34Sad73jdD9j31FYfWcREMjQbjQzXx/SFG6QOsvzNZr9rFLPjIghjkladf1409Hadf83Ph3tbobv55QDg==\"\n        },\n        \"first_name\": \"Christopher\",\n        \"last_name\": \"Young\",\n        \"email\": \"user@service.com\",\n        \"title\": \"Title of Prize!\",\n        \"subtitle\": \"Subtitle of Prize!\",\n        \"description\": \"Description of Prize!\",\n        \"image_url\": \"http://s3.amazonaws.com/fanmaker-rewards-production/store/auctions/1004/item.display.jpg\",\n        \"prize_type\": \"auction\",\n        \"status\": \"Completed\",\n        \"item_option\": \"\",\n        \"points\": 10000\n      },\n    ],\n    \"total_pages\": 3\n    \"active\": true\n  }\n}\n"],"metadata":{"Authentication":"Required"},"see":[]},{"doc_url":"/docs/1.0/api-v1-users/with_activities","name":"with_activities","apis":[{"api_url":"api/v1/users/with_activities","http_method":"GET","short_description":"Get ids and recent actions of users who have spent or earned points between two dates","deprecated":null}],"formats":["json"],"full_description":"\n\u003Cp\u003EThis method allows you to retreive a list of user ids who have have spent or earned points between two dates or return the most recent active users.\u003C/p\u003E\n","errors":[{"code":401,"description":"Unauthorized","metadata":null}],"params":[{"name":"start","full_name":"start","description":"\n\u003Cp\u003EThe date you wish to start filtering actions from, thru end time or today if end is not provided. This should be ISO8601 formatted, e.g. \u201c2017-12-05T03:15:04-500\u201d\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"stop","full_name":"stop","description":"\n\u003Cp\u003EThe date you wish to stop filtering a user\u2019s history. This should be ISO8601 formatted, e.g. \u201c2017-12-05T03:15:04-500\u201d\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"include_inactive_users","full_name":"include_inactive_users","description":"\n\u003Cp\u003ESend as true/false, defaults to false. This option will include deleted users that still have a user record, and depending on client policy may or may not have any additional data.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true}],"examples":["GET http://api.fanmaker.com/api/v1/users/with_activities?start=2017-11-04T00:00:00Z?stop=2017-12-05T23:59:59Z\n\nExample Success Response\n{\n  status: 'success',\n  messages: [],\n  success: true,\n  data: {\n    \"user_ids\": [\n      381048,\n      387242,\n      387294,\n      387284,\n      387250,\n      387283,\n      387292,\n      387285,\n      387287,\n      387264,\n      387289,\n      387263,\n      387282\n    ]\n  }\n}\n"],"metadata":{"Authentication":"Required"},"see":[]},{"doc_url":"/docs/1.0/api-v1-users/recent_activity","name":"recent_activity","apis":[{"api_url":"api/v1/users/recent_activity","http_method":"GET","short_description":"Get users with recent login activity","deprecated":null}],"formats":["json"],"full_description":"\n\u003Cp\u003EReturns a list of users that have logged in between the provided start and end times. Results can optionally be limited to a specific number of users. By default this exludes activity from account asscoiated with inactive users, but can be configured to include them with the include_inactive_users param.\u003C/p\u003E\n","errors":[{"code":401,"description":"Unauthorized","metadata":null}],"params":[{"name":"start","full_name":"start","description":"\n\u003Cp\u003ERequired ISO-8601 timestamp. Must include timezone offset or \u201cZ\u201d for UTC. Examples: - \u201c2017-12-05T03:15:04-0500\u201d (US Eastern, converts to UTC on server) - \u201c2017-12-05T08:15:04Z\u201d (explicit UTC)\u003C/p\u003E\n","required":true,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"end","full_name":"end","description":"\n\u003Cp\u003EOptional ISO-8601 timestamp with offset or \u201cZ\u201d for UTC. If omitted, the server uses the current UTC time.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"limit","full_name":"limit","description":"\n\u003Cp\u003EOptional limit for number of users returned\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true},{"name":"include_inactive_users","full_name":"include_inactive_users","description":"\n\u003Cp\u003ESend as true/false, defaults to false. This option will include deleted users that still have a user record, and depending on client policy may or may not have any additional data.\u003C/p\u003E\n","required":false,"allow_nil":false,"validator":"Must be String","expected_type":"string","metadata":null,"show":true}],"examples":["GET http://api.fanmaker.com/api/v1/users/recent_activity?start=2024-01-01T00:00:00Z\u0026end=2024-01-31T23:59:59Z\u0026limit=100\n{\n  \"status\": \"success\",\n  \"messages\": [],\n  \"success\": true,\n  \"data\": {\n    \"user_ids\": [\n        4052461,\n        4052723,\n        4052817\n    ]\n  }\n}\n"],"metadata":{"Authentication":"Required"},"see":[]}]}}}}