openapi: 3.0.0
info:
version: 3.0.0
title: Cloud4wi Explore APIs
description: How To Use |
Using the clientKey and clientSecret perform a request to /v1/sts/login/services.
Copy the token received and paste it in the dialog that pops up clicking the button "Authorize".
Note -> scopes are not currently enforced
security:
- bearerAuth: []
servers:
- url: https://explore.cloud4wi.com/
description: Cloud4Wi APIs
paths:
########################
### STS
########################
'/v1/sts/login/services':
post:
summary: Get authentication token
description: Returns a JWT token inside the body and in the Authorization Header of the response
security: [] # No security
tags:
- sts
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
clientKey:
type: string
clientSecret:
type: string
responses:
'200':
description: User authenticated
content:
application/json:
schema:
type: object
properties:
token:
type: string
description: JWT token
default:
description: unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
'/v1/sts/logout':
post:
summary: Revoke authetnication Token
description: It revokes the JWT token passed in the header.
tags:
- sts
responses:
'200':
description: The token has been revoked
'401':
description: The token is not valid
'500':
description: Internal server error
########################
### CUSTOMERS
########################
'/v2/customers/organizations/{cid}':
get:
summary: "List all the Contacts of an organization matching the search parameters "
description: |
Role: Organization Manager
Scope: organization_read, customer_read
parameters:
- in: path
name: cid
description: organization cid
required: true
schema:
type: string
- in: query
name: sid
description: 'The sid can be used to retrieve a large number of results from a search request. Read the full docs to learn how to use the sid'
required: false
schema:
type: string
- in: query
name: size
description: Number of Contacts returned by the request. Allowed values between 1 and 10000. It is not possible to change this values during a scrolling.
required: false
schema:
type: string
- in: query
name: hasEmail
description: Return Contacts with email
required: false
schema:
type: boolean
- in: query
name: emailVerified
description: Return Contacts with an email verified
required: false
schema:
type: boolean
- in: query
name: hasPhone
description: Return Contacts with phone number
required: false
schema:
type: boolean
- in: query
name: phoneVerified
description: Return Contacts with an phone number verified
required: false
schema:
type: boolean
- in: query
name: signupMethods
description: Return Contacts with the requested signup method
required: false
schema:
type: string
- in: query
name: locationCids
description: Return Contacts registered on specific locations
required: false
schema:
type: string
- in: query
name: segmentCids
description: Return Contacts belonging to specific segment or segments (comma separated)
required: false
schema:
type: string
- in: query
name: createdStart
description: 'Return Contacts with creation date >= of request. Format is date iso8601. Eg: 2019-07-31T22:23:24Z'
required: false
schema:
type: string
- in: query
name: createdEnd
description: 'Return Contacts with creation date <= of request. Format is date iso8601. Eg: 2019-07-31T22:23:24Z'
required: false
schema:
type: string
- in: query
name: modifiedStart
description: 'Return Contacts with modified date >= of request. Format is date iso8601. Eg: 2019-07-31T22:23:24Z'
required: false
schema:
type: string
- in: query
name: modifiedEnd
description: 'Return Contacts with modified date <= of request. Format is date iso8601. Eg: 2019-07-31T22:23:24Z'
required: false
schema:
type: string
- in: query
name: mktgCommunications
description: 'Return Contacts with marketing communication opt-in with value true'
required: false
schema:
type: boolean
- in: query
name: ageVerification
description: 'Return Contacts with age verification set to true'
required: false
schema:
type: boolean
- in: query
name: customOptIn.*
description: 'Return Contacts with specific custom opt-ins set to true. Eg: customOptin.my_policy=true'
required: false
schema:
type: boolean
- in: query
name: sortBy
description: 'firstName, lastName, gender, birthDate, country, created, privacy, termsOfUse, mktgCommunications, ageVerification, phone, phoneVerified, email, emailVerified, provider, username, locked, locations, system, enabled, type, modified_absolute,created_absolute,totalVisits,visitedLocations'
required: false
schema:
type: string
- in: query
name: sortReverse
description: 'Reverse sort order. sortBy argument is required'
required: false
schema:
type: boolean
- in: query
name: email
description: 'Search by email address'
required: false
schema:
type: string
- in: query
name: phoneNumber
description: 'Search by phone number'
required: false
schema:
type: string
- in: query
name: username
description: 'Search by username'
required: false
schema:
type: string
- in: query
name: extId
description: 'Search by external Id'
required: false
schema:
type: string
- in: query
name: extProp1
description: 'Search by external property 1'
required: false
schema:
type: string
- in: query
name: extProp2
description: 'Search by external property 2'
required: false
schema:
type: string
tags:
- customers
responses:
'200':
description: The array of the customers
content:
application/json:
schema:
type: object
properties:
generated:
type: string
totalCount:
type: number
count:
type: number
sId:
type: string
description: 'id used in the scrolling'
customers:
type: array
items:
$ref: '#/components/schemas/customerListResponse'
default:
description: errorResponse
'/v2/customers/{cid}/otp' :
post:
summary: It creates an access code (called OTP) for the customer passed in input.
description: |
Role: Organization Manager and above
Scope: organization_write, customer_write
parameters:
- $ref: '#/components/parameters/userCid'
tags:
- customers
responses:
'200':
description: response
content:
application/json:
schema:
type: object
properties:
generated:
type: string
status:
type: string
otp:
type: string
'/v1/customers/{cid}/policies':
put:
summary: Update the opt-ins of a Contact
description: |
For the custom opt-ins add the prefix "customs." to the policyKey. For example, if the custom opt-in has title "emailMarketing" to update it use the policyKey "customs.emailMarketing"
Role: Organization Manager
Scope: organization_write, customer_write
parameters:
- $ref: '#/components/parameters/userCid'
tags:
- customers
requestBody:
description: desc
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/policiesUpdate'
responses:
'200':
description: Update done.
content:
application/json:
schema:
$ref: '#/components/schemas/responseOkUpdatePolicies'
'207':
description: Some of the opt-ins have not been updated. More details in the response.
content:
application/json:
schema:
$ref: '#/components/schemas/responseOkUpdatePolicies'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
'/v1/customers/{cid}':
delete:
summary: Delete a Contact
description: |
Delete a Contact by Id
Role: Organization Manager
Scope: organization_write, customer_write
parameters:
- $ref: '#/components/parameters/userCid'
tags:
- customers
responses:
'200':
description: Deleted done.
content:
application/json:
schema:
$ref: '#/components/schemas/responseOk'
default:
description: unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
'/v2/customers/{cid}':
get:
summary: Get a Contact
description: |
Retrieve Contact profile by Id
Role: Organization Manager
Scope: organization_read, customer_read
tags:
- customers
parameters:
- $ref: '#/components/parameters/userCid'
responses:
'200':
description: Data present
'/v2/customers/{cid}/accountings':
get:
summary: List all WiFi Connections of a Contact
description: |
Retrieve WiFi connections of a specific Contact Id, including metadata such as duration, traffic, access point used
Role: Organization Manager
Scope: organization_read, customer_read
tags:
- customers
parameters:
- $ref: '#/components/parameters/userCid'
responses:
'200':
description: Array with the accountings
content:
application/json:
schema:
type: object
properties:
generated:
type: string
sId:
type: string
count:
type: number
connections:
type: array
items:
type: object
properties:
start:
type: string
startBusiness:
type: string
stop:
type: string
stopBusiness:
type: string
duration:
type: number
traffic:
type: number
locationName:
type: string
locationId:
type: string
apName:
type: string
apId:
type: string
latitude:
type: number
longitude:
type: number
macAddressClient:
type: string
ipAddressClient:
type: string
terminateCause:
type: string
'/v2/customers/{cid}/activities':
get:
summary: 'List applicaiton and marketing activities for a Contact'
description: |
Retrieve logs of interactions with content applicaitons such as Survey, messages sent/receives/opened
Role: Organization Manager
Scope: organization_read, customer_read
tags:
- customers
parameters:
- $ref: '#/components/parameters/userCid'
responses:
'200':
description: Data present
'/v2/customers/{cid}/devices':
get:
summary: 'List all devices of a Contact'
description: |
Retrieve device information like WiFi MAC address, number of WiFi connections and last WiFi connection date on the device.
Role: Organization Manager
Scope: organization_read, customer_read
tags:
- customers
parameters:
- $ref: '#/components/parameters/userCid'
responses:
'200':
description: Data present
'/v2/customers/{cid}/events':
get:
summary: 'List location Events of a Contact'
description: |
Retrieve list of visits and WiFi connections including metadata such as date and duration.
Role: Organization Manager
Scope: organization_read, customer_read
tags:
- customers
parameters:
- $ref: '#/components/parameters/userCid'
responses:
'200':
description: Data present
###########################
### Events
###########################
'/v1/organizations/{cid}/events':
get:
summary: List all events for an organziation id
description: |
List all Events, including Visits, WiFi connections and application events, of an Organization
Retrieve all events og of the given organization .
Role: Organization Manager
Scope: organization_read, events_read
tags:
- organizations
parameters:
- $ref: '#/components/parameters/organizationCid'
- in: query
name: dateStart
description: 'Return events with date >= of request. Format is date iso8601. Eg: 2019-07-31T22:23:24Z'
required: false
schema:
type: string
- in: query
name: dateEnd
description: 'Return events with date <= of request. Format is date iso8601. Eg: 2019-07-31T22:23:24Z'
required: false
schema:
type: string
- in: query
name: events
description: 'List of events (comma separated). Possible values: visit,signup, login, send_email,open_email,click_email,send_sms,click_sms,survey, promo'
required: false
schema:
type: string
- in: query
name: size
description: Number of events returned by the request. Allowed values between 1 and 10000. It is not possible to change this values during a scrolling.
required: false
schema:
type: string
- in: query
name: sortBy
description: 'Sort list by: businessTime, utcTime (default is businessTime)'
required: false
schema:
type: string
- in: query
name: sortReverse
description: 'Reverse sort order'
required: false
schema:
type: boolean
- in: query
name: enableScroll
description: 'Enable scroll. If true, the response will contain a scrollId. Use it to get the next page of results. '
required: false
schema:
type: boolean
- in: query
name: scrollId
description: 'Scroll id. Use it to get the next page of results.'
required: false
schema:
type: boolean
responses:
'200':
description: Response
content:
application/json:
schema:
$ref: '#/components/schemas/eventsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
'/v1/organizations/{cid}/customers/{id}/events':
get:
summary: List all events of a specific Contact
description: |
List all events, including WiFi Connections, Visits and applicaiton events of a given Contact Id
Role: Organization Manager
Scope: organization_read, events_read
tags:
- organizations
parameters:
- $ref: '#/components/parameters/organizationCid'
- $ref: '#/components/parameters/userId'
- in: query
name: dateStart
description: 'Return events with date >= of request. Format is date iso8601. Eg: 2019-07-31T22:23:24Z'
required: false
schema:
type: string
- in: query
name: dateEnd
description: 'Return events with date <= of request. Format is date iso8601. Eg: 2019-07-31T22:23:24Z'
required: false
schema:
type: string
- in: query
name: events
description: 'List of events (comma separated). Possible values: visit,signup, login, send_email,open_email,click_email,send_sms,click_sms,survey, promo'
required: false
schema:
type: string
- in: query
name: size
description: Number of events returned by the request. Allowed values between 1 and 10000. It is not possible to change this values during a scrolling.
required: false
schema:
type: string
- in: query
name: sortBy
description: 'Sort list by: businessTime, utcTime (default is businessTime)'
required: false
schema:
type: string
- in: query
name: sortReverse
description: 'Reverse sort order'
required: false
schema:
type: boolean
responses:
'200':
description: Response
content:
application/json:
schema:
$ref: '#/components/schemas/eventsResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
########################
### segments
########################
'/v2/segments/organizations/{cid}':
get:
summary: List Segments
description: |
List the segments of an organization
Role: Organization Manager
Scope: organization_read, segments_read
parameters:
- $ref: '#/components/parameters/organizationCid'
tags:
- segments
responses:
'200':
description: Array with the segments
content:
application/json:
schema:
type: object
properties:
generated:
type: string
size:
type: number
segments:
type: array
items:
$ref: '#/components/schemas/segmentListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
########################
### Hotspots
########################
'/v3/hotspots':
post:
summary: Create a new hotspot
description: |
Create a new hotspot
Note:
Depending on the routerType, the fields macAddress, hotspotIdentifier, and ssid may be required, optional, or not allowed. Please refer to the documentation for further information.
Role: Organization Manager
Scope: hotspots_write, organization_write
tags:
- hotspots
requestBody:
description: " "
required: true
content:
application/json:
schema:
type: object
required:
- name
- routerType
- macAddress
- latitude
- longitude
- organziationId
- locationId
properties:
organizationId:
type: string
venueId:
type: string
name:
type: string
description:
type: string
routerType:
type: string
enum:
- Aerohive Networks, Inc.
- Aruba Networks
- Browan Communication, Inc.
- Cambium Networks Limited
- chillispot
- Cisco Systems
- coovachilli
- Cradlepoint
- dd-wrt
- endian
- Endian s.r.l.
- EnGenius
- EnGenius CP ready
- Extreme Networks
- FortiNet
- Hewlett Packard
- Huawei
- ICC
- Icomera Moovbox
- IgniteNet
- LigoWave VAC
- Meraki, Inc.
- Mojo Networks, Inc.
- Nomadix, Inc.
- Open Mesh, Inc.
- PowerCloud Systems, Inc.
- Routerboard.com
- routeros
- Ruckus Wireless (Controller)
- Ruckus Wireless (SCG)
- Ruckus Wireless (Standalone)
- Ruckus Wireless (Xclaim)
- Samsung
- tanaza
- tanaza_os
- Teldat
- Teltonika
- Tiesse SpA
- Ubiquiti Networks, Inc.
- Wi-Next s.r.l.
- Wilibox Deliberant Group LLC
- Xirrus Inc
- Zebra Technologies Inc
macAddress:
type: string
hotspotIdentifier:
description: use according with routerType
type: string
ssid:
description: use according with routerType
type: string
addressAsLocation:
type: boolean
description: Use address, city, country, zip and state from location
country:
type: string
description: country code as ISO 3166-1 alpha-2. Required if addressAsLocation is false
address:
type: string
description: Required if addressAsLocation is false
city:
type: string
description: Required if addressAsLocation is false
state:
type: string
description: Required if addressAsLocation is false
zip:
type: string
description: Required if addressAsLocation is false
latitude:
type: number
longitude:
type: number
responses:
'200':
description: Response
content:
application/json:
schema:
type: object
properties:
generated:
type: string
status:
type: string
locationId:
type: string
hotspotId:
type: string
'/v3/hotspots/{hotspotId}':
get:
summary: Get an Access Point
description: |
Get Access Point by Id
Role: Organization Manager
Scope: organization_read, hotspots_read
parameters:
- in: path
name: hotspotId
description: 'Hotspot id'
required: true
schema:
type: string
tags:
- hotspots
responses:
'200':
description: Hotspot
content:
application/json:
schema:
$ref: '#/components/schemas/hotspotResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
put:
summary: Update an hotspot
description: |
Update an hotspot.
Note:
The properties venueId, routerType, macAddress, hotspotIdentifier, and ssid are not allowed.
Role: Organization Manager
Scope: hotspots_write, organization_write
parameters:
- in: path
name: hotspotId
description: 'Hotspot id'
required: true
schema:
type: string
tags:
- hotspots
requestBody:
description: " "
required: true
content:
application/json:
schema:
type: object
required:
- organziationId
- locationId
properties:
name:
type: string
description:
type: string
country:
type: string
description: country code as ISO 3166-1 alpha-2. Required if addressAsLocation is false
address:
type: string
description: Required if addressAsLocation is false
city:
type: string
description: Required if addressAsLocation is false
state:
type: string
description: Required if addressAsLocation is false
zip:
type: string
description: Required if addressAsLocation is false
latitude:
type: number
longitude:
type: number
enabled:
type: boolean
responses:
'200':
description: Response
content:
application/json:
schema:
type: object
properties:
generated:
type: string
status:
type: string
locationId:
type: string
hotspotId:
type: string
delete:
summary: Delete an hotspot
description: |
Delete an hotspot
Role: Organization Manager
Scope: hotspots_write, organization_write
parameters:
- in: path
name: hotspotId
description: 'Hotspot id'
required: true
schema:
type: string
tags:
- hotspots
responses:
'200':
description: Response
content:
application/json:
schema:
type: object
properties:
generated:
type: string
status:
type: string
'/v3/hotspots/identifier/{hotspotIdentifier}':
get:
summary: Get an Acess Point by hotspot identifier
description: |
Get an Access Point by hotspot identifier
Role: Organization Manager
Scope: organization_read, hotspots_read
parameters:
- in: path
name: hotspotIdentifier
description: 'Hotspot identifier as configured in the dashboard'
required: true
schema:
type: string
tags:
- hotspots
responses:
'200':
description: Hotspot
content:
application/json:
schema:
$ref: '#/components/schemas/hotspotResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
'/v3/hotspots/organizations/{cid}':
get:
summary: List of access points of an organization
description: |
List hotspots for the organization
Role: Organization Manager
Scope: organization_read, hotspots_read
parameters:
- $ref: '#/components/parameters/organizationCid'
- in: query
name: creationDateStart
description: 'Filter hotspots with date bigger than. Format YYYY-MM-DD'
required: false
schema:
type: string
- in: query
name: creationDateStop
description: 'Filter hotspots with date lower than. Format YYYY-MM-DD'
required: false
schema:
type: string
- in: query
name: name
description: 'Filter by name'
required: false
schema:
type: string
- in: query
name: macAddress
description: 'Filter by hotspot macaddress'
required: false
schema:
type: string
- in: query
name: hotspotIdentifier
description: 'Filter by hotspot identifier'
required: false
schema:
type: string
- in: query
name: venueId
description: 'Filter by venueId'
required: false
schema:
type: string
- in: query
name: deleted
description: 'Filter by deleted properties. Default deleted=false'
required: false
schema:
type: string
- in: query
name: limit
required: false
schema:
type: string
- in: query
name: offset
required: false
schema:
type: string
tags:
- hotspots
responses:
'200':
description: Array with the hotspots
content:
application/json:
schema:
$ref: '#/components/schemas/hotspotsListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
########################
### organizations / locations
########################
'/v2/organizations/{cid}/accountings':
get:
summary: List all WiFi Connections of the organization
description: |
Retrieve all WiFi connection of the organization
Role: Organization Manager
Scope: organization_read, customer_read
parameters:
- $ref: '#/components/parameters/organizationCid'
- in: query
name: sid
description: 'The sid can be used to retrieve a large number of results from a search request. Read here to get more information about how to use the sid'
required: false
schema:
type: string
- in: query
name: size
description: Number of WiFi Connections returned by the request. Allowed values between 1 and 10000. It is not possible to change this values during a scrolling.
required: false
schema:
type: string
- in: query
name: locationId
description: Return WiFi Connections occurred on a specific Location Id
required: false
schema:
type: string
- in: query
name: hotspotId
description: Return WiFi Connections occurred on a specific Access Point Id
required: false
schema:
type: string
- in: query
name: dateStart
description: "Return WiFi Connections with date >= of request. Format is date iso8601. Eg: 2019-07-31T22:23:24Z' or '2019-07-31' but is necessary set timezone"
required: false
schema:
type: string
- in: query
name: dateEnd
description: "Return WiFi Connections with creation date >= of request. Format is date iso8601. Eg: 2019-07-31T22:23:24Z' or '2019-07-31' but is necessary set timezone"
required: false
schema:
type: string
- in: query
name: timeZone
description: "Timezone"
required: false
schema:
type: string
tags:
- organizations
responses:
'200':
description: Array with the list of WiFi Connections
content:
application/json:
schema:
type: object
properties:
generated:
type: string
sId:
type: string
count:
type: number
connections:
type: array
items:
type: object
properties:
customerId:
type: string
organizationId:
type: string
start:
type: string
startBusiness:
type: string
stop:
type: string
stopBusiness:
type: string
duration:
type: number
traffic:
type: number
locationName:
type: string
locationId:
type: string
hotspotName:
type: string
hotspotIdentifier:
type: string
hotspotId:
type: string
latitude:
type: number
longitude:
type: number
macAddressClient:
type: string
ipAddressClient:
type: string
terminateCause:
type: string
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
'/v1/organizations/{cid}/locations':
get:
summary: List Locations of the organization
description: |
Retrieve all Locations configured in the organization
Role: Location Manager, Organization Manager
Scope: organization_read
parameters:
- $ref: '#/components/parameters/organizationCid'
- in: query
name: tags
description: 'Filter by a tag or a list of tags comma separated'
required: false
schema:
type: string
tags:
- locations
responses:
'200':
description: Array with the list of Locations
content:
application/json:
schema:
type: object
properties:
generated:
type: string
size:
type: number
locations:
type: array
items:
$ref: '#/components/schemas/locationListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
post:
summary: Add a new location
description: |
Add a new location
Read https://create.cloud4wi.com/dev-hub/api-reference/getting-started/locations for details
Role: Organization Manager
Scope: organization_write
parameters:
- $ref: '#/components/parameters/organizationCid'
tags:
- locations
requestBody:
description: desc
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
loginProfileId:
type: string
timezone:
type: string
description: In format "Europe/Rome"
locationProfileId:
type: string
welcomePortalId:
type: string
country:
type: string
description: country code as ISO 3166-1 alpha-2.
address:
type: string
city:
type: string
state:
type: string
zip:
type: string
onNet:
type: boolean
description: https://cloud4wi.zendesk.com/hc/en-us/articles/200923267-What-is-the-On-Net-option-for-the-Venue-
externalId:
type: string
description:
type: string
categoryName:
type: string
description: 'valid category: other, consumer electronics, sports center, fast food, disco, pools, bar, ice cream, piano bar, underwear, cinema, computers, footwear, gyms, sandwich, sporting goods, hairstyle, public administration, phone, hotels, pizzeria, coffee, restaurants, clothing, pub'
tags:
type: array
items:
type: string
enabled:
type: boolean
organizationPlanId:
type: string
description: internet plan id at organization level
required:
- name
- loginProfileId
- timezone
- locationProfileId
- welcomePortalId
- country
- address
- city
- state
- zip
responses:
'200':
description: Response
content:
application/json:
schema:
type: object
properties:
generated:
type: string
status:
type: string
locationId:
type: string
newTags:
type: array
items:
type: string
description: new tags added
'/v1/organizations/{cid}/locations/{lid}':
put:
summary: Update a location
description: |
Update a location
Role: Organization Manager
Scope: organization_write
parameters:
- $ref: '#/components/parameters/organizationCid'
- $ref: '#/components/parameters/locationCid'
tags:
- locations
requestBody:
description: desc
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description:
type: string
categoryName:
type: string
description: 'valid category: other, consumer electronics, sports center, fast food, disco, pools, bar, ice cream, piano bar, underwear, cinema, computers, footwear, gyms, sandwich, sporting goods, hairstyle, public administration, phone, hotels, pizzeria, coffee, restaurants, clothing, pub'
tags:
type: array
items:
type: string
externalId:
type: string
country:
type: string
description: country code as ISO 3166-1 alpha-2.
address:
type: string
city:
type: string
state:
type: string
zip:
type: string
timezone:
type: string
responses:
'200':
description: Response
content:
application/json:
schema:
type: object
properties:
generated:
type: string
status:
type: string
locationId:
type: string
newTags:
type: array
items:
type: string
description: new tags added
delete:
summary: Delete a location
description: |
Delete a location
Role: Organization Manager
Scope: organization_write
parameters:
- $ref: '#/components/parameters/organizationCid'
- $ref: '#/components/parameters/locationCid'
tags:
- locations
responses:
'200':
description: Response
content:
application/json:
schema:
type: object
properties:
generated:
type: string
status:
type: string
'/v1/locations/{lid}':
get:
summary: Get a Location by id
description: |
List locations belongs to an organization
Scope: organization_read
parameters:
- in: path
name: lid
description: 'Location id'
required: true
schema:
type: string
tags:
- locations
responses:
'200':
description: Array with the list of Locations
content:
application/json:
schema:
type: object
properties:
generated:
type: string
size:
type: number
location:
$ref: '#/components/schemas/locationListResponse'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
########################
### COMPONENTS
########################
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
########################
### PARAMETERS
########################
parameters:
serviceIss:
name: iss
in: path
description: iss of the service (srv-123456789)
required: true
schema:
type: string
userId:
name: id
in: path
description: id of the user (ID of the table w.USERS) passed inside the JWT received at login
required: true
schema:
type: string
organizationCid:
name: cid
in: path
description: id of the organization (aka tenant)
required: true
schema:
type: string
locationCid:
name: lid
in: path
description: id of the location
required: true
schema:
type: string
serviceCid:
name: cid
in: path
description: id of the service
required: true
schema:
type: string
userCid:
name: cid
in: path
description: id of the customer
required: true
schema:
type: string
hotspotCid:
name: hotspotId
in: path
description: id of the hotspot
required: true
schema:
type: string
########################
### SCHEMA
########################
schemas:
updateCustomer:
type: object
properties:
firstName:
type: string
description: First name
lastName:
type: string
description: Last name
phoneNumber:
type: string
description: Phone number in E.164 format
example: "+14155552671"
phoneVerified:
type: boolean
description: Phone number is verified
email:
type: string
description: Customer email
emailVerified:
type: boolean
description: Email address is verified
gender:
type: string
description: Gender of customer
enum: [null,"male","female","other"]
birthDate:
type: string
description: Birthdate. Format YYYY-MM-DD
example: "1975-03-16"
language:
type: string
description: "Customer language. Format: ISO 639-1 codes"
example: "en"
country:
type: string
description: "Customer country. Format: ISO 3166-2 codes"
example: "gb"
zipCode:
type: string
description: Zipcode
companyName:
type: string
description: Company name
civilStatus:
type: string
description: Civil status
enum: [null,"Mr","Miss","Lady"]
doubleOptin:
type: string
description: Double optin
enum: [null,"confirmed","confirm_waiting"]
custom:
type: object
description: Custom attributes
example: '{"custom1":"custom value","property": "1234"}'
document:
type: object
properties:
memberId:
type: string
number:
type: string
passportNumber:
type: string
personalId:
type: string
type:
type: string
extId:
type: string
description: Identifier of the customer inside an external service
extProp1:
type: string
description: Identifier of the customer inside an external service
extProp2:
type: string
description: Identifier of the customer inside an external service
policiesUpdate:
type: object
properties:
policies:
type: array
items:
$ref: '#/components/schemas/policyUpdate'
policyUpdate:
type: object
properties:
policyKey:
type: string
description: policy name
accepted:
type: boolean
description: true/false
responseOk:
type: object
properties:
status:
type: string
description: OK
generated:
type: string
description: date time of response
errorResponse:
type: object
properties:
message:
type: string
description: 'Error message'
########################
### RESPONSE
########################
eventsResponse:
type: object
properties:
status:
type: string
description: OK
generated:
type: string
description: date time of response
count:
type: number
events:
type: array
items:
type: object
properties:
type:
type: string
description: 'visit,signup, login, send_email,open_email,click_email,send_sms,click_sms,survey, promo'
id:
type: string
visit:
description: 'Available if type is visit'
type: object
properties:
startAt:
type: string
startAtLocal:
type: string
timezone:
type: string
duration:
type: integer
format: int32
signup:
type: object
description: 'Available if type is signup'
properties:
source:
type: string
email:
type: object
description: 'Available if type is *_email'
properties:
campaignId:
type: string
communicationId:
type: string
channel:
type: string
campaignName:
type: string
email:
type: string
sms:
type: object
description: 'Available if type is *_sms'
properties:
campaignId:
type: string
communicationId:
type: string
channel:
type: string
campaignName:
type: string
phone:
type: string
prefix:
type: string
survey:
type: object
description: 'Available if type is survey'
properties:
campaignId:
type: string
campaignName:
type: string
answerId:
type: string
questions:
type: object
properties:
question_1:
type: string
answers:
type: object
properties:
answer_1:
type: string
promo:
type: object
description: 'Available if type is promo'
properties:
type:
type: string
hotspotsListResponse:
type: object
properties:
status:
type: string
description: OK
generated:
type: string
description: date time of response
count:
type: number
hotspots:
type: array
items:
$ref: '#/components/schemas/hotspot'
hotspotResponse:
type: object
properties:
status:
type: string
description: OK
generated:
type: string
description: date time of response
hotspot:
$ref: '#/components/schemas/hotspot'
hotspot:
type: object
properties:
id:
type: string
description: Hotspot id
name:
type: string
description: Hotspot name
description:
type: string
firmware:
type: string
vendor:
type: string
hotspotIdentifier:
type: string
date:
type: string
description: date creation. Format iso8601
macAddress:
type: string
description: Hotspot mac address
venueId:
type: string
country:
type: string
city:
type: string
address:
type: string
latitude:
type: number
longitude:
type: number
deleted:
type: boolean
locationListResponse:
type: object
properties:
id:
type: string
description: location id
name:
type: string
description: location name
organziationId:
type: string
description: organization id
lat:
type: number
description: latitude
lng:
type: number
description: longitude
timezone:
type: string
description: location's time zone
address:
type: object
properties:
address:
type: string
description: address
city:
type: string
description: city
state:
type: string
description: state/province/region
zip:
type: string
description: zip/postal code
country:
type: string
description: country
externalId:
type: string
tags:
type: array
items:
type: string
segmentListResponse:
type: object
properties:
id:
type: string
description: segment id
name:
type: string
description: segment name
description:
type: string
description: segment description
lastRun:
type: string
description: last calculation of segment (date format iso8601)
created:
type: string
description: segment creation date time (date format iso8601)
modified:
type: string
description: segmente last modified date time (date format iso8601)
segmentStatus:
type: string
description: segment status
audience:
type: number
description: audience of segment
responseOkUpdatePolicies:
type: object
properties:
policyKey:
type: boolean
description: the new value of the policyKey
customerListResponse:
type: object
properties:
cid:
type: string
description: customer cid
title:
type: string
firstName:
type: string
lastName:
type: string
gender:
type: string
birthDate:
type: string
birthDay:
type: string
age:
type: string
country:
type: string
zipCode:
type: string
created:
type: string
modified:
type: string
email:
type: string
emailVerified:
type: boolean
phone:
type: string
phoneVerified:
type: boolean
signupMethod:
type: string
externalIdentityId:
type: string
username:
type: string
locked:
type: boolean
organizationCid:
type: string
locationCid:
type: string
system:
type: string
enabled:
type: boolean
type:
type: string
locationName:
type: string
personalId:
type: string
externalSource:
type: string
lastLogin:
type: string
segmentCids:
type: string
logins:
type: number
policies:
type: array
items:
type: object
properties:
name:
type: string
accepted:
type: boolean
segments:
type: array
items:
type: object
properties:
cid:
type: string
name:
type: string
extId:
type: object
properties:
id:
type: string
prop1:
type: string
prop2:
type: string
metrics:
$ref: '#/components/schemas/metricsResponse'
customerUpdateResponse:
type: object
properties:
status:
type: string
description: Request status. OK or KO if there is any error
generated:
type: string
description: Time of current response
metricsResponse:
type: object
properties:
frequencyMonthlyVisit:
type: number
compassTopLocation:
type: string
compassTopLocationCount:
type: number
topFrequencyBuckets:
type: string
lastVisitVenue:
type: string
prefVisitWDay:
type: string
lastVisitDateUtc:
type: string
avgVisitLength:
type: number
countVisitedLocations:
type: number
prefVisitTimebucket:
type: string
prefVisitTimeHour:
type: string
lastVisitDateBusiness:
type: string
countTotalVisits:
type: number
conversionRate:
type: number
avgDaysBetweenVisits:
type: number