{"id":19870924,"url":"https://github.com/beaconstac/api","last_synced_at":"2025-06-17T06:06:32.850Z","repository":{"id":54965102,"uuid":"125205632","full_name":"Beaconstac/api","owner":"Beaconstac","description":"Beaconstac REST API documentation","archived":false,"fork":false,"pushed_at":"2021-01-19T07:46:20.000Z","size":668,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-01T00:54:44.438Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://beaconstac.github.io/api/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Beaconstac.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-03-14T11:58:32.000Z","updated_at":"2021-01-19T07:46:16.000Z","dependencies_parsed_at":"2022-08-14T07:40:12.524Z","dependency_job_id":null,"html_url":"https://github.com/Beaconstac/api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Beaconstac/api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Beaconstac%2Fapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Beaconstac%2Fapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Beaconstac%2Fapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Beaconstac%2Fapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Beaconstac","download_url":"https://codeload.github.com/Beaconstac/api/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Beaconstac%2Fapi/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260301992,"owners_count":22988722,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-12T16:10:35.918Z","updated_at":"2025-06-17T06:06:32.813Z","avatar_url":"https://github.com/Beaconstac.png","language":"JavaScript","readme":"# Beaconstac REST API documentation\n\n## Introduction\nThe Beaconstac API is organized around [REST](https://en.wikipedia.org/wiki/Representational_state_transfer). Our API has predictable resource-oriented URLs, accepts [form-encoded](https://en.wikipedia.org/wiki/POST_(HTTP)#Use_for_submitting_web_forms) request bodies, returns [JSON-encoded](http://www.json.org/) responses, and uses standard HTTP response codes, authentication, and verbs.\n\n## Authentication\nThe Beaconstac API uses API key to authenticate requests.\n\nYour API key carry many privileges, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth.\n\nAll API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.\n\nYou can find your developer token by using the following steps.\n1. Login to the [Beaconstac dashboard](https://dashboard.beaconstac.com/).\n2. Go to your 'Account' section using the drop-down on the top-right.\n3. In the 'Account Details' section, copy the 'Developer Token' value.\n4. Add a header field with key `Authorization` and value as `Token \u003cYOUR_TOKEN\u003e`\n\n![Account Page](https://github.com/Beaconstac/api/blob/master/older/images/account_page.png)\n\n## Table of Contents\n1. [Reading the documentation](#reading-the-documentation)\n2. [Beacon](#beacon)\n3. [NFC Tag](#nfc-tag)\n4. [QR Code](#qr-code)\n5. [Bulk QR Code](#bulk-qr-codes)\n6. [Geofence](#geofence)\n7. [Place](#place)\n8. [User](#user)\n\n----\n## Reading the Documentation\n#### Filter fields\nThe API supports filters on fields specified in each object collections' `List` request. To use the filter add the filter name along with the operator and then the value in the request params. \n\nFilter fields supported:\n1. `exact`: default. Based on exact match\n2. `icontains`: Case insensitive contains\n3. `lt`: less than match\n4. `gt`: greater than match\n5. `lte`: less than equal to match\n6. `gte`: greater than equal to match\n\nExample:\nIf a object states that the filter arguments: \n1. `name`: `exact`, `icontains`\n2. `place__name`: `exact`, `icontains`\n\nSome of the ways you can use filtering\n1. `?name='test_beacon'` by default if no filter is specified for a param it defaults to `exact`\n2. `?name__icontains='test'` case insensitive filter\n3. `?name='test_beacon'\u0026place__name__icontains='office'` Does a filter for all objects with name 'test_beacon' and who have been attached to places whose name inturn contains (case insensitive) 'office' in it\n\n*`organization` `exact` filter is supported across all objects. To get objects from all your organizations(including child organizations) use 'all' as the filter value*\n\n#### Searching\nThe API supports search filters on fields specified in each object collections' `List` request. To use the search filter specify the value in the request params and the response will be objects that match value with any of the search fields mentioned in the objects' `List` request documentation. The Searches will use case-insensitive partial matches.\n\nExample:\nIf a object states that the search fields supported are: \n1. `name`\n2. `place__name`\n\nSome of the ways you can use filtering\n1. `?search='office'` Will search both the name of the object and attached places' name objects for the text 'office' and return the results\n\n#### Ordering\nThe API supports ordering on fields specified in each object collections' `List` request. To use the ordering feature specify the parameter to order by in the request params. Ordering is done in an ascending order by default.\n\nExample:\nIf a object states that the ordering fields supported are: \n1. `name`\n\nSome of the ways you can use filtering\n1. `?ordering='name'` Will order by name by ascending order\n2. `?ordering='-name'` Will order by name in decending order\n\n----\n## Core Resources\n\n### Beacon\n`Beacon` objects allow you to perform actions on your beacons. You can retrieve individual beacons as well as a list of all your beacons or update a beacon.\n\n#### Beacon object\n***Attributes***\n\n| Field | Type | Required | Read only | Description |\n|---|---|---|---|---|\n| `id` | `integer` |  `false` | `true`  | Unique identifier for the object |\n| `name` | `string` |  `true` | `false`  | The name of the beacon |\n| `UUID` | `string` |  `true` | `true`  | iBeacon UUID |\n| `major` | `integer` |  `true` | `true`  | iBeacon major value |\n| `minor` | `integer` |  `true` | `true`  | iBeacon minor value |\n| `organization` | `integer` |  `true` | `true`  | Organization id |\n| `place` | `integer` |  `true` | `false`  | Place id |\n| `serial_number` | `string` |  `false` | `true`  | serial number |\n| `eddystone_nid` | `string` |  `false` | `true`  | Eddystone namespace instance |\n| `eddystone_bid` | `string` |  `false` | `true`  | Eddystone byte instance |\n| `eddystone_url` | `string` |  `false` | `true`  | Eddystone URL(Deprecated) |\n| `url` | `string` |  `false` | `true`  | Eddystone URL |\n| `state` | `string` |  `false` | `true`  | State of the beacon (`A` Active, `S` Sleeping) |\n| `place_data` | `list[object]` |  `false` | `true`  | Place data associated with place id. Only available in `List` |\n| `tags` | `list[integer]` |  `false` | `false`  | List of tag ids associated |\n| `tag_data` | `list[object]` |  `false` | `true`  | Tag data |\n| `rules` | `list[integer]` |  `false` | `false`  | List of rule ids associated |\n| `rule_data` | `list[object]` |  `false` | `true`  | Rule data |\n| `mode` | `string` |  `false` | `true`  | Mode of the beacon |\n| `tx_power` | `integer` |  `false` | `false`  | Transmission power |\n| `advertising_interval` | `integer` |  `false` | `false`  | Advertising interval |\n| `battery` | `integer` |  `false` | `false`  | Battery |\n| `temperature` | `integer` |  `false` | `false`  | Temperature |\n| `latitude` | `float` |  `false` | `false`  | Latitude |\n| `longitude` | `float` |  `false` | `false`  | Longitude |\n| `closeby_id` | `integer` |  `false` | `true`  | Closeby ID of the beacon(Deprecated) |\n| `nearby_id` | `string` |  `false` | `true`  | Proximity ID of the beacon |\n| `temperature` | `integer` |  `false` | `false`  | Temperature |\n| `proximity_status` | `string` |  `false` | `true`  | Proximity status (Deprecated) |\n| `meta` | `object` |  `false` | `false`  | Metadata associated with the beacon |\n| `deployment_meta` | `object` |  `false` | `false`  | Deployment meta |\n| `kit_type` | `object` |  `false` | `true`  | Beacon kit type (Deprecated) |\n| `created` | `timestamp` |  `false` | `true`  | Created timestamp |\n| `updated` | `timestamp` |  `false` | `true`  | Last updated timestamp |\n| `heartbeat` | `timestamp` |  `false` | `true`  | Timestamp when the beacon was last detected |\n| `campaign` | `Campaign` |  `false` | `false`  | `Campaign` object |\n| `notifications` | `list[CampaignNotification]` |  `false` | `false`  | `CampaignNotification` object |\n\n#### Campaign object\n***Attributes***\n\n| Field | Type | Required | Read only | Description |\n|---|---|---|---|---|\n| `id` | `integer` |  `false` | `true`  | Unique identifier for the object |\n| `content_type` | `integer` |  `true` | `false`  | Campaign Type (0 for 'No campaign') |\n| `custom_url` | `URL` |  `true` if `content_type` is 1 | `false`  | Custom URL |\n| `markdown_card` | `integer` |  `true` if `content_type` is 2 | `false`  | Markdown card |\n| `form` | `integer` |  `true` if `content_type` is 3 | `false`  | Form |\n| `schedule` | `integer` |  `true` if `content_type` is 4 | `false`  | Schedule |\n| `campaign_active` | `boolean` |  `false` | `true`  | Current campaign status |\n| `organization` | `integer` |  `false` | `true`  | Organization |\n| `created` | `timestamp` |  `false` | `true`  | Created timestamp |\n| `updated` | `timestamp` |  `false` | `true`  | Last updated timestamp |\n\n#### Campaign Notification object\n***Attributes***\n\n| Field | Type | Required | Read only | Description |\n|---|---|---|---|---|\n| `id` | `integer` |  `false` | `true`  | Unique identifier for the object |\n| `language_code` | `string` |  `true` | `false`  | [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) language code. Each beacon can have only 1 language notification. |\n| `is_default` | `boolean` |  `true` | `false`  | Is default notification. Each beacon can have only one notification set as default. |\n| `title` | `string` |  `false` | `false`  | Title of the notification (max 49 characters) |\n| `description` | `string` |  `false` | `false`  | Description on the notification (max 2048 characters) |\n| `icon_url` | `URL` |  `false` | `false`  | Icon URL |\n| `app_intent` | `string` |  `false` | `false`  | App intent |\n| `banner_type` | `integer` |  `false` | `false`  | Banner type for NearBee |\n| `banner_image_url` | `string` |  `false` | `false`  | Banner Image URL for NearBee |\n| `meta` | `object` |  `false` | `false`  | Metadata |\n| `slug` | `string` |  `false` | `true`  | Slug for the notification |\n| `created` | `timestamp` |  `false` | `true`  | Created timestamp |\n| `updated` | `timestamp` |  `false` | `true`  | Last updated timestamp |\n\n#### List beacons\nReturns a list of your beacons. The beacons are returned sorted by beacon `heartbeat`, with the most recent detected beacons appearing first.\n\n`GET https://api.beaconstac.com/api/2.0/beacons/`\n\nFilter arguments:\n1. `name`: `exact`, `icontains`\n2. `serial_number`:  `exact`, `icontains`\n3. `place__name`: `exact`, `icontains`\n4. `tags__name`: `exact`, `icontains`\n5. `url`: `exact`\n6. `heartbeat`: `lt`, `lte`, `gt`, `gte`\n7. `campaign__content_type`: `exact` \n8. `state`: `exact`\n\nSearch Fields:\n1. `name`\n2. `serial_number`\n3. `place__name`\n4. `tags__name`\n5. `url`\n6. `campaign__content_type`\n\nOrdering fields:\n1. `name`\n2. `serial_number`\n3. `battery`\n4. `heartbeat`: default\n5. `place__name`\n6. `created`\n7. `updated`\n8. `campaign__content_type`\n9. `state`\n\n#### Retrieve a beacon\nRetrieves the details of an existing beacon. You need only supply the unique beacon identifier that was returned upon beacon listing.\n\n`GET https://api.beaconstac.com/api/2.0/beacons/{beacon_id}`\n\n\n#### Update beacon\nUpdates the specified beacon by setting the values of the parameters passed. Any parameters not provided will be left unchanged. However, the request should contain the required fields. Please refer to the Beacon object.\n\n`PUT https://api.beaconstac.com/api/2.0/beacons/{beacon_id}`\n\nExample:\nChanging campaign to a Markdown Card\n```json\n{\n    \"id\": 1189,\n    \"campaign\": {\n        \"id\": 223,\n        \"custom_url\": \"https://beaconstac.com\",\n        \"content_type\": 2,\n        \"campaign_active\": true,\n        \"organization\": 1284,\n        \"markdown_card\": 434,\n        \"form\": 7099,\n        \"schedule\": null\n    },\n    \"name\": \"Corner_\",\n    \"url\": \"https://eddy.pro/f78WrG\",\n    \"UUID\": \"F94DBB23-2266-7822-3782-57BEAC0952AC\",\n    \"major\": 16,\n    \"minor\": 10,\n    \"serial_number\": \"0117C53F26D6\",\n    \"eddystone_nid\": \"5DC33487F02E477D4058\",\n    \"eddystone_bid\": \"0117C53F26D6\",\n    \"place\": 1929\n}\n```\n----\n\n### NFC Tag\n`NFCTag` objects allow you to perform actions on your NFC Tags. You can retrieve individual nfc tags as well as a list of all your tags or update a tag.\n\n#### NFC Tag object\n***Attributes***\n\n| Field | Type | Required | Read only | Description |\n|---|---|---|---|---|\n| `id` | `integer` |  `false` | `true`  | Unique identifier for the object |\n| `name` | `string` |  `true` | `false`  | The name of the NFC Tag |\n| `uid` | `string` |  `true` | `true`  | NFC Tag UID |\n| `counter` | `integer` |  `false` | `true`  | NFC Tag counter. Counts the number of times the tag has been read |\n| `organization` | `integer` |  `true` | `true`  | Organization id |\n| `place` | `integer` |  `true` | `false`  | Place id |\n| `url` | `string` |  `false` | `true`  | NFC Tag URL |\n| `state` | `string` |  `false` | `true`  | State of the NFC Tag (`A` Active, `S` Sleeping) |\n| `place_data` | `list[object]` |  `false` | `true`  | Place data associated with place id. Only available in `List` |\n| `tags` | `list[integer]` |  `false` | `false`  | List of tag ids associated |\n| `tag_data` | `list[object]` |  `false` | `true`  | Tag data |\n| `meta` | `object` |  `false` | `false`  | Metadata associated with the NFC Tag |\n| `created` | `timestamp` |  `false` | `true`  | Created timestamp |\n| `updated` | `timestamp` |  `false` | `true`  | Last updated timestamp |\n| `heartbeat` | `timestamp` |  `false` | `true`  | Timestamp when the NFC Tag was last detected |\n| `campaign` | `Campaign` |  `false` | `false`  | `Campaign` object |\n\n\n#### List NFC Tags\nReturns a list of your NFC Tags. The tags are returned sorted by `updated`, with the most recently updated tags appearing first.\n\n`GET https://api.beaconstac.com/api/2.0/nfctags/`\n\nFilter arguments:\n1. `name`: `exact`, `icontains`\n2. `place__name`: `exact`, `icontains`\n3. `tags__name`: `exact`, `icontains`\n4. `url`: `exact`\n5. `campaign__content_type`: `exact` \n6. `state`: `exact`\n\nSearch Fields:\n1. `name`\n2. `place__name`\n3. `tags__name`\n4. `url`\n5. `campaign__content_type`\n\nOrdering fields:\n1. `name`\n2. `place__name`\n3. `created`\n4. `updated` - default\n5. `campaign__content_type`\n6. `state`\n\n#### Retrieve an NFC Tag\nRetrieves the details of an existing NFC Tag. You need only supply the unique NFC Tag identifier that was returned upon tags listing.\n\n`GET https://api.beaconstac.com/api/2.0/nfctags/{nfctag_id}`\n\n\n#### Update an NFC Tag\nUpdates the specified NFC Tag by setting the values of the parameters passed. Any parameters not provided will be left unchanged. However, the request should contain the required fields. Please refer to the NFCTag object.\n\n`PUT https://api.beaconstac.com/api/2.0/nfctags/{nfctag_id}`\n\nExample:\nChanging campaign to a Markdown Card\n```json\n{\n    \"id\": 1189,\n    \"campaign\": {\n        \"id\": 223,\n        \"custom_url\": \"https://beaconstac.com\",\n        \"content_type\": 2,\n        \"campaign_active\": true,\n        \"organization\": 1284,\n        \"markdown_card\": 434,\n        \"form\": 7099,\n        \"schedule\": null\n    },\n    \"name\": \"Corner\",\n    \"url\": \"https://nfc.tapnscan.me/f78WrG\",\n    \"uid\": \"abc\",\n    \"place\": 1929\n}\n```\n----\n### QR Code\n`QRCode` objects allow you to perform actions on your QR Codes. You can retrieve individual QR Codes as well as a list of all your qr codes or update a QR Code.\n\n#### QR Code object\n***Attributes***\n\n| Field | Type | Required | Read only | Description |\n|---|---|---|---|---|\n| `id` | `integer` |  `false` | `true`  | Unique identifier for the object |\n| `name` | `string` |  `true` | `false`  | The name of the qr code |\n| `fields_data` | `object` |  `true` | `false`  | Fields data for the QR Code |\n| `attributes` | `object` |  `true` | `false`  | Attributes data for the QR Code |\n| `qr_type` | `integer` |  `false` | `false`  | QR type (`1` Static, `2` Dynamic) |\n| `organization` | `integer` |  `true` | `true`  | Organization id |\n| `place` | `integer` |  `true` | `false`  | Place id |\n| `url` | `string` |  `false` | `true`  | QR code URL |\n| `state` | `string` |  `false` | `true`  | State of the QR Code (`A` Active, `S` Sleeping) |\n| `place_data` | `list[object]` |  `false` | `true`  | Place data associated with place id. Only available in `List` |\n| `tags` | `list[integer]` |  `false` | `false`  | List of tag ids associated |\n| `tag_data` | `list[object]` |  `false` | `true`  | Tag data |\n| `meta` | `object` |  `false` | `false`  | Metadata associated with the QR Code |\n| `created` | `timestamp` |  `false` | `true`  | Created timestamp |\n| `updated` | `timestamp` |  `false` | `true`  | Last updated timestamp |\n| `heartbeat` | `timestamp` |  `false` | `true`  | Timestamp when the qr code was last detected |\n| `campaign` | `Campaign` |  `false` | `false`  | `Campaign` object |\n\n#### List QR Codes\nReturns a list of your QR Codes. The tags are returned sorted by `updated`, with the most recently updated qr codes appearing first.\n\n`GET https://api.beaconstac.com/api/2.0/qrcodes/`\n\nFilter arguments:\n1. `name`: `exact`, `icontains`\n2. `place__name`: `exact`, `icontains`\n3. `tags__name`: `exact`, `icontains`\n4. `url`: `exact`\n5. `campaign__content_type`: `exact` \n6. `state`: `exact`\n\nSearch Fields:\n1. `name`\n2. `place__name`\n3. `tags__name`\n4. `url`\n5. `campaign__content_type`\n\nOrdering fields:\n1. `name`\n2. `place__name`\n3. `created`\n4. `updated` - default\n5. `campaign__content_type`\n6. `state`\n\n#### Retrieve a QR Code\nRetrieves the details of an existing qr code. You need only supply the unique qr code identifier that was returned upon qr codes listing.\n\n`GET https://api.beaconstac.com/api/2.0/qrcodes/{qrcode_id}`\n\n#### Update a QR Code\nUpdates the specified qr code by setting the values of the parameters passed. Any parameters not provided will be left unchanged. However, the request should contain the required fields. Please refer to the QRCode object.\n\n`PUT https://api.beaconstac.com/api/2.0/qrcodes/{qrcode_id}`\n\nExample:\nChanging campaign to a Markdown Card\n```json\n{\n    \"id\": 1189,\n    \"campaign\": {\n        \"id\": 223,\n        \"custom_url\": \"https://beaconstac.com\",\n        \"content_type\": 2,\n        \"campaign_active\": true,\n        \"organization\": 1284,\n        \"markdown_card\": 434,\n        \"form\": 7099,\n        \"schedule\": null\n    },\n    \"name\": \"Corner\",\n    \"url\": \"https://qr.tapnscan.me/f78WrG\",\n    \"organization\": 1284\n}\n```\n\n#### Create a QR Code\n\nCreates a new QR Code. However, the request should contain the required fields. Please refer to the QRCode object.\n\n`POST https://api.beaconstac.com/api/2.0/qrcodes/`\n\nExample for creating QRCode with campaign set to a Markdown Card:\n```json\n{\n    \"attributes\": {\n        \"color\": \"#000000\",\n        \"margin\": \"\",\n        \"backgroundImage\": \"\",\n        \"logoImage\": \"https://static.beaconstac.com/assets/img/qr-code-logos/calender.svg\"\n    },\n    \"name\": \"test 3\",\n    \"qr_type\": 2,\n    \"organization\": 1284,\n    \"place\": 23,\n    \"campaign\": {\n        \"content_type\": 2,\n        \"markdown_card\": 34918\n    }\n}\n```\n\nExample for creating QRCode with campaign set to a Form:\n```json\n{\n    \"attributes\": {\n        \"color\": \"#000000\",\n        \"margin\": \"\",\n        \"backgroundImage\": \"\",\n        \"logoImage\": \"https://static.beaconstac.com/assets/img/qr-code-logos/calender.svg\"\n    },\n    \"name\": \"test 3\",\n    \"qr_type\": 2,\n    \"organization\": 1284,\n    \"place\": 23,\n    \"campaign\": {\n        \"content_type\": 3,\n        \"form\": 36092\n    }\n}\n```\n\nExample for creating dynamic QRCode of type vCard:\n\nCreate editable Dynamic vCard QR Codes for employees\n```json\n{\n    \"name\": \"Dynamic vCard QR Code\",\n    \"qr_type\": 2,\n    \"organization\": 1284,\n    \"attributes\": {\n        \"color\": \"#fb6e6e\",\n        \"margin\": 25,\n        \"logoImage\": \"https://d1bqobzsowu5wu.cloudfront.net/15406/36caec11f02d460aad0604fa26799c50\"\n    },\n    \"campaign\": {\n        \"content_type\": 7,\n        \"vcard_plus\": {\n            \"first_name\": \"John\",\n            \"last_name\": \"Doe\",\n            \"user_image_url\": \"https://d3nvy39jvu7woe.cloudfront.net/static/images/default_vcard_image.png\",\n            \"designation\": \"Android Developer\",\n            \"company\": \"Mobstac Inc.\",\n            \"summary\": \"Hello there!!!!\",\n            \"phone\": {\n                \"mobile\": \"9876543210\",\n                \"work\": \"9012345678\"\n            },\n            \"email\": \"john_doe@example.com\",\n            \"address_line1\": \"#316 Mobstac\",\n            \"address_line2\": \"Indiranagar\",\n            \"city\": \"Bengaluru\",\n            \"zip\": \"560038\",\n            \"country\": \"India\",\n            \"address_url\": \"https://www.google.com/maps/search/?api=1\u0026query=12.9764566,77.6020364\u0026query_place_id=ChIJt-8HuakWrjsRUNukdoGH8Es\",\n            \"website\": \"https://www.example.com\",\n            \"logo_url\": \"https://d1bqobzsowu5wu.cloudfront.net/15406/36caec11f02d460aad0604fa26799c50\",\n            \"customizations\": {\n                \"background_color\": \"#2594FF\",\n                \"user_info_color\": \"#FFFFFF\"\n            }\n        }\n    }\n}\n\n```\n\nExample for creating dynamic QRCodes pointed to PDF files:\n\nPoint your QR Code to PDF files so that users can easily access the contents from their phone.\n\na) Download PDF to user's device\n\n```json\n{\n    \"name\": \"my PDF QR Code\",\n    \"qr_type\": 1,\n    \"organization\": 1284,\n    \"attributes\": {\n        \"color\": \"#000000\",\n        \"margin\": 25,\n        \"logoImage\": \"https://d1bqobzsowu5wu.cloudfront.net/15406/36caec11f02d460aad0604fa26799c50\"\n    },\n    \"campaign\": {\n        \"content_type\": 13,\n        \"pdf\": {\n            \"files\": [\n                {\n                    \"url\": \"https://drive.google.com/file/d/1f0WF96qlqYhMvYg1qCDUBi-5Jg-NX9E6/view?usp=sharing\",\n                    \"name\": \"Enterprise QR Code solution\"\n                }\n            ],\n            \"uploaded\": false\n        }\n    }\n}\n```\n\nb) View PDF directly on the browser\n\n```json\n{\n    \"name\": \"my PDF QR Code\",\n    \"qr_type\": 1,\n    \"organization\": 1284,\n    \"attributes\": {\n        \"color\": \"#000000\",\n        \"margin\": 25,\n        \"logoImage\": \"https://d1bqobzsowu5wu.cloudfront.net/15406/36caec11f02d460aad0604fa26799c50\"\n    },\n    \"campaign\": {\n        \"content_type\": 13,\n        \"pdf\": {\n            \"files\": [\n                {\n                    \"url\": \"https://d1bqobzsowu5wu.cloudfront.net/15406/877ea8ec987e4587be463f23a1e39092\",\n                    \"name\": \"Enterprise QR Code Solution\"\n                }\n            ],\n            \"uploaded\": true\n        }\n    }\n}\n```\n\n** Note: For best results on PDF QR Codes that can be directly viewed on the viewer's browser(type (b)), use PDF files uploadedto Beaconstac.\n\n\nExample for creating dynamic QRCode for coupons:\n\nMake Coupon QR Codes to offer discounts and deals to your consumers to improve conversions and generate leads. Place these in-store or on print or digital material to maximize your ROI.\n\n```json\n{\n    \"name\": \"Coupon QR Code\",\n    \"qr_type\": 1,\n    \"organization\": 1284,\n    \"attributes\": {\n        \"color\": \"#000000\",\n        \"margin\": 25,\n        \"logoImage\": \"https://d1bqobzsowu5wu.cloudfront.net/15406/36caec11f02d460aad0604fa26799c50\"\n    },\n    \"campaign\": {\n        \"content_type\": 10,\n        \"coupon\": {\n            \"coupon_code\": \"ABCD1234\",\n            \"header\": \"Flat 25% off\",\n            \"expires_at\": \"2020-10-24T00:00:00+05:30\",\n            \"timezone\": \"America/New_York\",\n            \"message\": \"Big sale at Beaconstac stores\",\n            \"company_name\": \"Mobstac Inc.\",\n            \"terms_and_conditions\": \"read T\u0026C carefully\",\n            \"description_header\": \"Big Holiday sale\",\n            \"description_body\": \"Enjoy the biggest holiday sale\",\n            \"location\": \"https://www.google.com/maps/search/?api=1\u0026query=12.9764566,77.6020364\u0026query_place_id=ChIJt-8HuakWrjsRUNukdoGH8Es\",\n            \"website\": \"https://www.example.com\",\n            \"logo_url\": \"https://d1bqobzsowu5wu.cloudfront.net/15406/36caec11f02d460aad0604fa26799c50\",\n            \"customizations\": {\n                \"background_color\": \"#199087\",\n                \"coupon_color\": \"#FFFFFF\",\n                \"coupon_color\": \"#FFFFFF\",\n                \"header_color\": \"#59C65D\"\n            }\n        }\n    }\n}\n```\n\n#### Download a QR code\nDownload a QR code in a particular size and image format. Image types supported are PNG, JPEG, SVG and PDF.\nIf no canvas type is sent in the parameters, the QRCode would be generated in all image types supported.\n\n`GET https://api.beaconstac.com/api/2.0/qrcodes/{qrcode_id}/download/?size={size}\u0026canvas_type={canvas_type}`\n\nExample:\nDownload the QRCode of size 1024x1024 pixels in SVG format.\n`GET https://api.beaconstac.com/api/2.0/qrcodes/100/download/?size=1024\u0026canvas_type=svg`\n```json\n{\n    \"svg\": \"url.svg\"\n}\n```\n\n( For detailed QR Code API documentation please refer: https://www.beaconstac.com/qr-code-generator-api )\n\n\n----\n### Bulk QR Codes\n`BulkQRCode` objects allow you to create a collection of multiple QR Codes from a CSV file in a single request. You can list, retreive, create or download a Bulk QR Code collection.\n\nObtain your AuthorizationToken from the [Beaconstac dashboard](https://dashboard.beaconstac.com/account)\n\n#### Bulk QR Code object\n***Attributes***\n\n| Field | Type | Required | Read only | Description |\n|---|---|---|---|---|\n| `id` | `integer` |  `false` | `true`  | Unique identifier for the object |\n| `name` | `string` |  `true` | `false`  | The name of the Bulk QR code collection |\n| `media` | `integet` |  `false` | `true`  | Media ID |\n| `media_data` | `object` |  `false` | `false`  | Media data associated with media ID |\n| `attributes` | `object` |  `true` | `false`  | Attributes/Design data for the QR Codes being created |\n| `qr_type` | `integer` |  `false` | `true`  | QR type (`1`) |\n| `qr_data_type` | `integer` |  `true` | `false`  | QR data type (`1` Website, `2` SMS, `3` Phone, `4` email, `5` vCard, `6` text) |\n| `organization` | `integer` |  `true` | `true`  | Organization ID |\n| `storage_url` | `string` |  `false` | `true`  | QR code URL |\n| `created` | `timestamp` |  `false` | `true`  | Created timestamp |\n| `updated` | `timestamp` |  `false` | `true`  | Last updated timestamp |\n\n#### List Bulk QR Code collections\nReturns a list of your QR Codes. The tags are returned sorted by `updated`, with the most recently updated qr codes appearing first.\n\nExample:\n\nUse the below cURL command to list all Bulk QR Code collections in your account:\n\n```json\ncurl --location --request GET 'https://api.beaconstac.com/api/2.0/bulkqrcodes/' \\\n--header 'Authorization: Token \u003cAuthorizationToken\u003e'\n```\n\nFilter arguments:\n1. `name`: `exact`, `icontains`\n2. `qr_data_type`: `exact`\n\nSearch Fields:\n1. `name`\n\nOrdering fields:\n1. `name`\n2. `created`\n3. `updated` - default\n\n#### Retrieve a Bulk QR Code collection\nRetrieves the details of an existing Bulk QR Code collection. You need only supply the unique Bulk QR Code identifier that was returned upon listing.\n\nExample:\n\nUse the below cURL command to retreive a single Bulk QR Code collection by id.\n```json\ncurl --location --request GET 'https://api.beaconstac.com/api/2.0/bulkqrcodes/101/' \\\n--header 'Authorization: Token \u003cAuthorizationToken\u003e'\n```\n\n#### CSV file data format\nThe examples for the CSV files can be viewed from the [Beaconstac dashboard](https://dashboard.beaconstac.com/bulk-qr-codes/add) or from the CSV Files in the links below:\n| QR Data type | Example CSV File |\n|---|---|\n| `1` (Website) | https://admin.beaconstac.com/assets/files/static-website-csv.csv |\n| `2` (Phone) | https://dashboard.beaconstac.com/assets/files/static-phone-csv.csv |\n| `3` (SMS) | https://dashboard.beaconstac.com/assets/files/static-sms-csv.csv |\n| `4` (Email) | https://dashboard.beaconstac.com/assets/files/static-email-csv.csv |\n| `5` (vCard) | https://dashboard.beaconstac.com/assets/files/static-vcard-csv.csv |\n| `6` (Text) | https://dashboard.beaconstac.com/assets/files/static-text-csv.csv |\n\n#### Create a Bulk QR Code collection\nCreates a new Bulk QR Code collection using data from CSV file. However, the request should contain the required fields. \n\nExample:\n\nCreate a Bulk QR Code collection by using the cURL request:\n\n```json\ncurl --location --request POST 'https://api.beaconstac.com/api/2.0/bulkqrcodes/' \\\n--header 'Authorization: Token e62435a78e67ec98bba3b879ba00448650032557' \\\n--header 'Content-Type: multipart/form-data' \\\n--form 'file=@/Users/hariprasad/Desktop/bulk-qr-sample-csv/static-vcard-csv.csv' \\\n--form 'name=myvCard-QRCodes' \\\n--form 'qr_type=1' \\\n--form 'size=512' \\\n--form 'error_correction_level=0' \\\n--form 'qr_data_type=5' \\\n--form 'attributes={\"color\":\"#ab578f\",\n\"gradientType\":\"radial\",\n \"margin\": 50,\n\"dataPattern\":\"left-diamond\",\n\"eyeBallShape\":\"left-diamond\",\n\"eyeFrameShape\":\"left-leaf\",\n\"eyeBallColor\":\"#ea8745\",\n\"eyeFrameColor\":\"#ea4587\",\n\"logoImage\": \"https://static.beaconstac.com/assets/img/qr-code-logos/instagram.svg\",\n\"frameStyle\":\"banner-top\"\n}' \\\n--form 'organization=720'\n```\n\nResponse\n```json\n{\n    \"id\": 220,\n    \"attributes\": {\n        \"color\": \"#ab578f\",\n        \"gradientType\": \"radial\",\n        \"margin\": 50,\n        \"dataPattern\": \"left-diamond\",\n        \"eyeBallShape\": \"left-diamond\",\n        \"eyeFrameShape\": \"left-leaf\",\n        \"eyeBallColor\": \"#ea8745\",\n        \"eyeFrameColor\": \"#ea4587\",\n        \"logoImage\": \"https://static.beaconstac.com/assets/img/qr-code-logos/instagram.svg\",\n        \"frameStyle\": \"banner-top\"\n    },\n    \"media_data\": {\n        \"id\": 68976,\n        \"name\": \"myvCard-QRCodes\",\n        \"url\": \"https://d1bqobzsowu5wu.cloudfront.net/720/6d69b10e8e794beb920c7a899cf6d044\"\n    },\n    \"name\": \"myvCard-QRCodes\",\n    \"storage_url\": \"https://d1bqobzsowu5wu.cloudfront.net/720/bulkqr/MjIwLTIwMjAtMDUtMTNUMTQ6MTY6NDAuNDY1ODI2KzAwOjAw.zip\",\n    \"qr_type\": 1,\n    \"qr_data_type\": 5,\n    \"created\": \"2020-05-13T19:46:40.465826+05:30\",\n    \"updated\": \"2020-05-13T19:46:50.948362+05:30\",\n    \"organization\": 720,\n    \"media\": 68976\n}\n```\n\nThe QR Code designs can be customized by varying the attributes of the Bulk QR Code object. More details can be accessed [here](https://www.beaconstac.com/qr-code-generator-api#docs)\n\n#### Download Bulk QR code collection\nThe Bulk QR Code collection can be downloaded using the link from the `storage_url` ( Ex. `https://d1bqobzsowu5wu.cloudfront.net/720/bulkqr/MjE5LTIwMjAtMDUtMTNUMTQ6MDA6MDkuODgwMTYzKzAwOjAw.zip` ) field. \n\nThe URL downloads a zipped collection of the images in 4 formats: `png`, `jpeg`, `pdf`, `svg`.\n\n\n#### Update an existing Bulk QR Code collection\nYou can update an existing Bulk QR Code collection with different design data using the unique ID field of the Bulk QR Code object. (Note: The csv file attached with a collection cannot be updated)\n\nExample:\n\nUpdate a Bulk QR Code collection by using the cURL request:\n\nRequest:\n```json\ncurl --location --request PUT 'https://api.beaconstac.com/api/2.0/bulkqrcodes/220/' \\\n--header 'Authorization: Token e62435a78e67ec98bba3b879ba00448650032557' \\\n--header 'Content-Type: application/json' \\\n--header 'Content-Type: text/plain' \\\n--data-raw '{\n    \"id\": 220,\n    \"attributes\": {\n        \"color\": \"#2595ff\",\n        \"gradientType\": \"radial\",\n        \"margin\": 50,\n        \"dataPattern\": \"left-diamond\",\n        \"eyeBallShape\": \"left-diamond\",\n        \"eyeFrameShape\": \"left-leaf\",\n        \"eyeBallColor\": \"#2595ff\",\n        \"eyeFrameColor\": \"#95ff25\",\n        \"logoImage\": \"https://static.beaconstac.com/assets/img/qr-code-logos/instagram.svg\",\n        \"frameStyle\": \"banner-bottom\"\n    },\n    \"media_data\": {\n        \"id\": 68976,\n        \"name\": \"myvCard-QRCodes\",\n        \"url\": \"https://d1bqobzsowu5wu.cloudfront.net/720/6d69b10e8e794beb920c7a899cf6d044\"\n    },\n    \"name\": \"myvCard-QRCodes\",\n    \"storage_url\": \"https://d1bqobzsowu5wu.cloudfront.net/720/bulkqr/MjIwLTIwMjAtMDUtMTNUMTQ6MTY6NDAuNDY1ODI2KzAwOjAw.zip\",\n    \"qr_type\": 1,\n    \"qr_data_type\": 5,\n    \"created\": \"2020-05-13T19:46:40.465826+05:30\",\n    \"updated\": \"2020-05-13T19:46:50.948362+05:30\",\n    \"organization\": 720,\n    \"media\": 68976\n}'\n```\n\nResponse\n```json\n{\n    \"id\": 220,\n    \"attributes\": {\n        \"color\": \"#2595ff\",\n        \"gradientType\": \"radial\",\n        \"margin\": 50,\n        \"dataPattern\": \"left-diamond\",\n        \"eyeBallShape\": \"left-diamond\",\n        \"eyeFrameShape\": \"left-leaf\",\n        \"eyeBallColor\": \"#2595ff\",\n        \"eyeFrameColor\": \"#95ff25\",\n        \"logoImage\": \"https://static.beaconstac.com/assets/img/qr-code-logos/instagram.svg\",\n        \"frameStyle\": \"banner-bottom\"\n    },\n    \"media_data\": {\n        \"id\": 68977,\n        \"name\": \"myvCard-QRCodes\",\n        \"url\": \"https://d1bqobzsowu5wu.cloudfront.net/720/45b9ef3414d541e88c6cae514aea454e\"\n    },\n    \"name\": \"myvCard-QRCodes\",\n    \"storage_url\": \"https://d1bqobzsowu5wu.cloudfront.net/720/bulkqr/MjIwLTIwMjAtMDUtMTNUMTQ6MTY6NDAuNDY1ODI2KzAwOjAw.zip\",\n    \"qr_type\": 1,\n    \"qr_data_type\": 5,\n    \"created\": \"2020-05-13T19:46:40.465826+05:30\",\n    \"updated\": \"2020-05-13T19:49:44.578320+05:30\",\n    \"organization\": 720,\n    \"media\": 68977\n}\n```\n\n----\n### Geofence\n`Geofence` objects allow you to perform actions on your geofences. You can retrieve individual geofences as well as a list of all your geofences or update a geofence.\n\n#### Geofence object\n***Attributes***\n\n| Field | Type | Required | Read only | Description |\n|---|---|---|---|---|\n| `id` | `integer` |  `false` | `true`  | Unique identifier for the object |\n| `name` | `string` |  `true` | `false`  | The name of the geofence |\n| `latitude` | `float` |  `true` | `false`  | Latitude |\n| `longitude` | `float` |  `true` | `false`  | Longigtude |\n| `radius` | `integer` |  `true` | `false`  | Radius of the geofence |\n| `organization` | `integer` |  `true` | `true`  | Organization id |\n| `place` | `integer` |  `true` | `false`  | Place id |\n| `url` | `string` |  `false` | `true`  | Geofence URL |\n| `state` | `string` |  `false` | `true`  | State of the geofence (`A` Active, `S` Sleeping) |\n| `place_data` | `list[object]` |  `false` | `true`  | Place data associated with place id. Only available in `List` |\n| `tags` | `list[integer]` |  `false` | `false`  | List of tag ids associated |\n| `tag_data` | `list[object]` |  `false` | `true`  | Tag data |\n| `meta` | `object` |  `false` | `false`  | Metadata associated with the geofence |\n| `created` | `timestamp` |  `false` | `true`  | Created timestamp |\n| `updated` | `timestamp` |  `false` | `true`  | Last updated timestamp |\n| `heartbeat` | `timestamp` |  `false` | `true`  | Timestamp when the geofence was last detected |\n| `campaign` | `Campaign` |  `false` | `false`  | `Campaign` object |\n| `notifications` | `list[CampaignNotification]` |  `false` | `false`  | `CampaignNotification` object |\n\n#### List Geofences\nReturns a list of your Geofences. The Geofences are returned sorted by `updated`, with the most recently updated Geofence appearing first.\n\n`GET https://api.beaconstac.com/api/2.0/geofences/`\n\nFilter arguments:\n1. `name`: `exact`, `icontains`\n2. `place__name`: `exact`, `icontains`\n3. `url`: `exact`\n4. `campaign__content_type`: `exact` \n5. `state`: `exact`\n\nSearch Fields:\n1. `name`\n2. `place__name`\n3. `url`\n4. `campaign__content_type`\n\nOrdering fields:\n1. `name`\n2. `place__name`\n3. `created`\n4. `updated` - default\n5. `campaign__content_type`\n6. `state`\n\n#### Retrieve a Geofence\nRetrieves the details of an existing Geofence. You need only supply the unique Geofence identifier that was returned upon Geofence listing.\n\n`GET https://api.beaconstac.com/api/2.0/geofences/{geofence_id}`\n\n\n#### Update Geofence\nUpdates the specified Geofence by setting the values of the parameters passed. Any parameters not provided will be left unchanged. However, the request should contain the required fields. Please refer to the Geofence object.\n\n`PUT https://api.beaconstac.com/api/2.0/geofences/{geofence_id}`\n\nExample:\nChanging campaign to a Markdown Card\n```json\n{\n    \"id\": 1189,\n    \"campaign\": {\n        \"id\": 223,\n        \"custom_url\": \"https://beaconstac.com\",\n        \"content_type\": 2,\n        \"campaign_active\": true,\n        \"organization\": 1284,\n        \"markdown_card\": 434,\n        \"form\": 7099,\n        \"schedule\": null\n    },\n    \"name\": \"Corner\",\n    \"url\": \"https://geo.tapnscan.me/f78WrG\",\n    \"place\": 1929,\n    \"latitude\": 12.21343,\n    \"longitude\": 12.213132,\n    \"radius\": 100\n}\n```\n\n#### Create Geofence\nCreates a new geofence by setting the values of the parameters passed. The request should contain the required fields. Please refer to the Geofence object.\n\n`POST https://api.beaconstac.com/api/2.0/geofences/`\n\nExample:\nCreate Geofence with campaign to a Markdown Card\n```json\n{\n    \"campaign\": {\n        \"id\": 223,\n        \"custom_url\": \"https://beaconstac.com\",\n        \"content_type\": 2,\n        \"campaign_active\": true,\n        \"organization\": 1284,\n        \"markdown_card\": 434,\n        \"form\": 7099,\n        \"schedule\": null\n    },\n    \"name\": \"Corner\",\n    \"place\": 1929,\n    \"latitude\": 12.21343,\n    \"longitude\": 12.213132,\n    \"radius\": 100,\n    \"organization\": 1234\n}\n```\n\n----\n### Place\nPlace objects allow you to view all places in your account and view beacons attached to them.\n\n#### Place object\n***Attributes***\n\n| Field | Type | Required | Read only | Description |\n|---|---|---|---|---|\n| `id` | `integer` |  `false` | `true`  | Unique identifier for the object |\n| `name` | `string` |  `true` | `false`  | The name of the place |\n| `organization` | `integer` |  `true` | `true`  | Organization id |\n| `latitude` | `float` |  `false` | `false`  | Latitude |\n| `longitude` | `float` |  `false` | `false`  | Longitude |\n| `place_id` | `string` |  `false` | `false`  | Google Place ID |\n| `address` | `string` |  `false` | `false`  | Address of the place |\n| `beacons` | `list[object]` |  `false` | `true`  | Beacon data associated with place id. Only available in `List` |\n| `beacon_count` | `integer` |  `false` | `true`  | Beacon count |\n| `default_place` | `boolean` |  `false` | `true`  | Indicated whether the place is a default place |\n| `business_icon_url` | `string` |  `false` | `false`  | Business Icon URL (Used in NearBee) |\n| `business_cover_url` | `string` |  `false` | `false`  | Business Cover URL(Used in NearBee) |\n| `business_color` | `string` |  `false` | `false`  | Business Color(Used in NearBee) |\n| `created` | `timestamp` |  `false` | `true`  | Created timestamp |\n| `updated` | `timestamp` |  `false` | `true`  | Last updated timestamp |\n\n#### List Places\nReturns a list of your beacons. The beacons are returned sorted by beacon heartbeat, with the most recent detected beacons appearing first.\n\n`GET https://api.beaconstac.com/api/2.0/places/`\n\nFilter arguments:\n1. `name`: `exact`, `icontains`\n\nSearch Fields:\n1. `name`\n\nOrdering fields:\n1. `name`\n2. `created`\n3. `updated` - default\n4. `address`\n\n\n#### Retrieve a Place\nRetrieves the details of an existing Place. You need only supply the unique Place identifier that was returned upon Place listing.\n\n`GET https://api.beaconstac.com/api/2.0/places/{place_id}`\n\n\n#### Update Place\nUpdates the specified Place by setting the values of the parameters passed. Any parameters not provided will be left unchanged. However, the request should contain the required fields. Please refer to the Place object.\n\n`PUT https://api.beaconstac.com/api/2.0/places/{place_id}`\n\nExample:\nUpdate an existing place based on ID of the place\n```json\n{\n\t\"organization\": 1234,\n\t\"name\": \"Mobstac, New York\",\n\t\"address\": \"450 Lexington Avenue, 4th Floor New York, NY 10017\",\n\t\"latitude\": \"40.73\",\n\t\"longitude\": \"-73.94\"\n}\n```\n\n#### Create Place\nCreates a new place in your account by setting the values of the parameters passed. The request should contain the required fields. Please refer to the Place object.\n\n`POST https://api.beaconstac.com/api/2.0/places/`\n\nExample:\nCreate a new Place\n```json\n{\n    \"organization\": 1234,\n    \"name\": \"Mobstac, Bangalore\",\n    \"address\": \"MobStac,2nd floor, Mayfair Building, Karnataka, 316, 100 Feet Rd, Binnamangala, Stage 1, Indiranagar, Bengaluru, Karnataka 560038, India\",\n    \"latitude\": 12.9818683,\n    \"longitude\": 77.6404921999999\n}\n```\n\n\n----\n### User\nUser objects allow you to perform actions on the users in your account. You can list of all your users, retrieve individual users, create a user or update a user.\n\n(Note: Creation of Users is supported only on Reseller plan and above)\n\n#### User object\n***Attributes***\n\n| Field | Type | Required | Read only | Description |\n|---|---|---|---|---|\n| `id` | `integer` |  `false` | `true`  | Unique identifier for the object |\n| `username` | `string` |  `true` | `false`  | The username used to login |\n| `organization` | `integer` |  `true` | `true`  | Organization id |\n| `first_name` | `string` |  `false` | `false`  | First name of the user |\n| `last_name` | `string` |  `false` | `false`  | Last name of the user |\n| `email` | `string` |  `false` | `false`  | email of the user |\n| `customer_plan` | `string` |  `false` | `false`  | Customer Plan the User is subscribed to (`ST` Starter, `LT` Lite, `BA` Basic, `PR` Premium, `RE` Reseller, `WL` Whitelabel, `EN` Enterprise)|\n| `subscription_state` | `string` |  `false` | `false`  | Subscription state of the user (`A` Active, `E` Expired, `R` Removed)|\n| `user_group` | `string` |  `false` | `false`  | User group the user belongs to (`OW` Owner, `AD` Admin, `RO` Read-Only)|\n| `profile_picture` | `string` |  `false` | `false`  | URL to the User's profile picture |\n| `billing_email` | `string` |  `false` | `false`  | User email used for billing |\n| `firebase_token` | `string` |  `false` | `false`  | User firebase token used to send Notifications |\n| `is_active` | `boolean` |  `false` | `true`  | User active status |\n| `is_superuser` | `boolean` |  `false` | `true`  | Superuser status |\n| `stripe_id` | `string` |  `false` | `false`  | Stripe ID of the user |\n| `shopify_id` | `integer` |  `false` | `false`  | Shopify ID for the user |\n| `date_joined` | `timestamp` |  `false` | `true`  | Date joined timestamp |\n| `created` | `timestamp` |  `false` | `true`  | Created timestamp |\n| `updated` | `timestamp` |  `false` | `true`  | Last updated timestamp |\n\n(Note: Stripe ID and Shopify ID will be null for all users with user groups AD and RO)\n\n#### List Users\nReturns a list of all Users. The users are returned sorted by date joined, with the most recently joined users appearing first.\n\n`GET https://api.beaconstac.com/api/2.0/users/`\n\nFilter arguments:\n1. `first_name`: `exact`, `icontains`\n2. `last_name`:  `exact`, `icontains`\n3. `username`: `exact`, `icontains`\n4. `email`: `exact`, `icontains`\n5. `organization id`: `exact`\n6. `date_joined`: `lt`, `lte`, `gt`, `gte`\n7. `customer_plan`: `exact` \n8. `subscription_state`: `exact`\n\n\nSearch Fields:\n1. `username`\n1. `email`\n1. `user_group`\n1. `first_name`\n1. `last_name`\n\nOrdering fields:\n1. `username`\n2. `email`\n3. `date_joined` - default\n4. `user_group`\n5. `first_name`\n6. `last_name`\n\n#### Retrieve a User\nRetrieves the details of an existing user. You need to supply the unique user identifier that was returned upon listing.\n\n`GET https://api.beaconstac.com/api/2.0/users/{user_id}`\n\n\n\n#### Create a new User\nCreates a new user. However, the request should contain the required fields. New users can be created only by users having customer\n\n`POST https://api.beaconstac.com/api/2.0/users/`\n\nExample:\nCreate a new user User in an organization.\n```json\n{\n      \"username\": \"sample_user\",\n      \"customer_plan\": \"PR\",\n      \"first_name\": \"Sample\",\n      \"last_name\": \"User\",\n      \"email\": \"sample_user@beaconstac.com\",\n      \"billing_email\": \"billing@beaconstac.com\",\n      \"organization\": 1284,\n      \"profile_picture\": \"https://d1bqobzsowu5wu.cloudfront.net/720/93f7199471e64ddb9ad4e8bb888bb1ce\",\n      \"password\": \"testPassword123\"\n}\n```\n\n(Note: User password is set to default password if no password is passed)\n\n\n#### Update an existing User\nCreates a new user. However, the request should contain the required fields. New users can be created only by users having customer\n\n`POST https://api.beaconstac.com/api/2.0/users/{user_id}`\n\nExample:\nCreate a new user User in an organization.\n```json\n{\n    \"first_name\": \"John\",\n    \"last_name\": \"Doe\",\n    \"profile_picture\": \"https://d1bqobzsowu5wu.cloudfront.net/2934/cf50e4abe1724089a7dd8bc60dbe8977\",\n    \"organization\": 1284\n}\n```\n\n----\n\n## Partner API endpoints\n\n[Creating user accounts in the Beaconstac store](https://github.com/Beaconstac/api/blob/master/older/storeUserCreate.md)\n\n----\n## Beaconstac Analytics\n\n### Product\nProduct types:\n1. beacon\n2. nfc\n3. qr\n4. geofence\n\nfrom, to parameters should be in EPOCH milliseconds.\n\n#### Product overview\nGet analytics overview for the product type over the time interval.\n\n`POST https://api.beaconstac.com/reporting/2.0/?organization={organization_id}\u0026method=Products.getOverview`\n\nExample:\nGet performance for all beacons in organization ID 23\n`POST https://api.beaconstac.com/reporting/2.0/?organization=23\u0026method=Products.getOverview`\n\nRequest body:\n```json\n{\n    \"product_type\": \"beacon\",\n    \"from\": 1559273172,\n    \"to\": 1559283172\n}\n```\n\n#### Product performance\nGet analytics performace for the product.\n\n`POST https://api.beaconstac.com/reporting/2.0/?organization={organization_id}\u0026method=Products.getPerformance`\n\nExample:\nGet performance for nfc tag\n`POST https://api.beaconstac.com/reporting/2.0/?organization=23\u0026method=Products.getPerformance`\n\nRequest body:\n```json\n{\n    \"product_type\": \"nfc\",\n    \"product_id\": 12,\n    \"from\": 1559273172,\n    \"to\": 1559283172,\n    \"interval\": \"1d\",\n    \"timezone\": \"UTC\"\n}\n```\n\n\n#### Product impressions\nGet impressions generated by the product. If no `place` is provided data will be returned for all products of the product type specified in the organization.\n\n`POST https://api.beaconstac.com/reporting/2.0/?organization={organization_id}\u0026method=Products.getImpressions`\n\nExample:\nGet impression for all qr codes in place id 12\n`POST https://api.beaconstac.com/reporting/2.0/?organization=23\u0026method=Products.getImpressions`\n\nRequest body:\n```json\n{\n    \"product_type\": \"qr\",\n    \"place\": 12,\n    \"from\": 1559273172,\n    \"to\": 1559283172,\n    \"interval\": \"1d\",\n    \"timezone\": \"UTC\"\n}\n```\n\n#### Product impression detail\nGet impressions details generated by the product. If no `place` is provided data will be returned for all products of the product type specified in the organization.\n\n`POST https://api.beaconstac.com/reporting/2.0/?organization={organization_id}\u0026method=Products.getImpressionDetail`\n\nExample:\nGet impression details for all qr codes in place id 12\n`POST https://api.beaconstac.com/reporting/2.0/?organization=23\u0026method=Products.getImpressionDetail`\n\nRequest body:\n```json\n{\n    \"product_type\": \"qr\",\n    \"place\": 12,\n    \"from\": 1559273172,\n    \"to\": 1559283172\n}\n```\n\n#### Product impression distribution\nGet impression distribution generated by the product. If no `place` is provided data will be returned for all products of the product type specified in the organization.\n\n`POST https://api.beaconstac.com/reporting/2.0/?organization={organization_id}\u0026method=Products.getImpressionDistribution`\n\nExample:\nGet impression distribution for all qr codes in place id 12\n`POST https://api.beaconstac.com/reporting/2.0/?organization=23\u0026method=Products.getImpressionDistribution`\n\nRequest body:\n```json\n{\n    \"product_type\": \"qr\",\n    \"place\": 12,\n    \"from\": 1559273172,\n    \"to\": 1559283172\n}\n```\n\n#### Generate product CSV data\nGenerate a detailed CSV report for products in the specified organizations. The report will be emailed to the user email mentioned in the POST body. If not email is specified it would be emailed to the user making the request.\n\n`POST https://api.beaconstac.com/reporting/2.0/?organization={organization_id}\u0026method=Products.getImpressionDistribution`\n\nExample:\nGenerate CS impression distribution for qr codes 23 and 43 in organizations 1 and 2.\n`POST https://api.beaconstac.com/reporting/2.0/?method=Csv.getProductData`\n\nRequest body:\n```json\n{\n    \"product_type\": \"qr\",\n    \"organization_ids\": [1, 2],\n    \"product_ids\": [23, 43],\n    \"from\": 1559273172,\n    \"to\": 1559283172,\n    \"timezone\": \"UTC\"\n}\n```\n\n\n#### Get analytics overview for a given period\nGet analytics overview (product count, notification count, impression count, conversion percentage) of your product based on product type being passed. The total number of unique visitors is also given in the response. \n\n`POST https://api.beaconstac.com/reporting/2.0/?organization={organization_id}\u0026method=Overview.getPeriodOverview`\n\nExample:\nGenerate analytics overview of all products over a period of time.\n\n`POST https://api.beaconstac.com/reporting/2.0/?organization={organization_id}\u0026method=Overview.getPeriodOverview`\n\nRequest body:\n```json\n{\n\t\"from\": \"1567535400000\",\n\t\"to\": \"1582482600000\",\n\t\"product_type\": \"geofence\",\n\t\"organization\": 1234\n}\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeaconstac%2Fapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbeaconstac%2Fapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeaconstac%2Fapi/lists"}