Westfield Connect APIs (1.0.0)

Download OpenAPI specification:Download

Westfield Connect is the Authentication and Authorization service for Westfield.

Authorize

Endpoint to verify user's authorization and redirect

Check login status redirect to login if not logged in, check consent rules, generate authorization code and redirect to redirect_uri

query Parameters
client_id
required
string
Example: client_id=68CCED1A7021642427E1D34B9FC2CDD7

client unique identifier

redirect_uri
required
string
Example: redirect_uri=http://localhost/redirect

uri to be redirected to

scope
required
string
Example: scope=openid,profile,email

scope

state
string

current state

nonce
string

nonce

center
string

center identifier

response_type
required
string
Example: response_type=code

type of response

consent
boolean

client consented or not

form
string

redirect to the good form

cookie Parameters
URW-AUTH
string

Responses

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

Client

Endpoint to fetch client information

Get client data using client_id

path Parameters
client_id
required
string
Example: 68CCED1A7021642427E1D34B9FC2CDD7

client unique identifier

Responses

Response samples

Content type
application/json
{
  • "client_id": "string",
  • "name": "string",
  • "bypass_consent": true
}

Email

Update visitor's email

Update visitor's email in cognito pool

header Parameters
Authorization
string
Request Body schema: application/json
old_email_address
required
string <email>
new_email_address
required
string <email>
locale
string

Responses

Request samples

Content type
application/json
{
  • "old_email_address": "example@co.co",
  • "new_email_address": "example@co.co",
  • "locale": "string"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

Verify user email

Send a verification email. if code is present, validate the code.

Request Body schema: application/json
new_email_address
required
string <email>
old_email_address
string <email>
validation_code
string
locale
required
string
type
required
string
Enum: "register" "change_email" "subscribe"
resend
boolean
pc_code
string

Responses

Request samples

Content type
application/json
{
  • "new_email_address": "example@co.co",
  • "old_email_address": "example@co.co",
  • "validation_code": "string",
  • "locale": "en-US",
  • "type": "register",
  • "resend": true,
  • "pc_code": "string"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

Authentication

Login

Check visitor's credentials and set URW-AUTH cookie

Request Body schema: application/json
email
required
string <email>
password
required
string
remember_me
boolean

Responses

Request samples

Content type
application/json
{
  • "email": "example@co.co",
  • "password": "string",
  • "remember_me": true
}

Response samples

Content type
application/json
{
  • "visitor_id": "1b5d452e-2897-4f21-ac74-1b59f820ba97",
  • "hash": "string"
}

Logout

Remove token from dynamo DB

Request Body schema: application/json
visitor_id
required
string
client_id
required
string

Responses

Request samples

Content type
application/json
{
  • "visitor_id": "string",
  • "client_id": "string"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

Password

Update password

Update logged in visitor's password

header Parameters
Authorization
string
Request Body schema: application/json
old_password
required
string
new_password
required
string
locale
required
string

Responses

Request samples

Content type
application/json
{
  • "old_password": "string",
  • "new_password": "string",
  • "locale": "string"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

Send forgot password email. All parameters in request params sent will be included in the generated link.

Initiate an account password reset

query Parameters
offline_mode
string
Request Body schema: application/json
email
required
string <email>
client_id
required
string
redirect_uri
required
string
locale
string

The local used to send the email. if not specified, the default locale for the caller country will be used

scope
required
string
state
string
email_type
string
pc_code
string
country
string

Responses

Request samples

Content type
application/json
{
  • "email": "example@co.co",
  • "client_id": "68CCED1A7021642427E1D34B9FC2CDD7",
  • "redirect_uri": "http://localhost/redirect",
  • "locale": "fr-FR",
  • "scope": "string",
  • "state": "string",
  • "email_type": "string",
  • "pc_code": "string",
  • "country": "FR"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

Reset password

Reset account password

Request Body schema: application/json
confirmation_code
required
string
password
required
string
email
required
string
locale
string

The local used to send the email. if not specified, the default locale for the caller country will be used

pc_code
string
country
string

Responses

Request samples

Content type
application/json
{
  • "confirmation_code": "string",
  • "password": "string",
  • "email": "example@co.co",
  • "locale": "fr-FR",
  • "pc_code": "string",
  • "country": "FR"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

Register

Register user

Create new user

query Parameters
client_id
required
string
Example: client_id=68CCED1A7021642427E1D34B9FC2CDD7

client unique identifier

Request Body schema: application/json
title
required
string
Enum: "m" "f" "u"
first_name
required
string
last_name
required
string
email
required
string <email>
password
required
string
birth_date
string

birth date in following format - 'yyyy-mm-dd'

phone
string

phone number in following format - E. 164 format for US

mobile_locale
string
zip_code
string
pc_code
required
string
center_company_id
string
origin_type
required
string
Enum: "connect" "partner"
origin
required
string

Client id of the client the request originated from

optin_sms
boolean
optin_sms_textid
number
optin_commercial
boolean
optin_commercial_textid
number
optin_privacy_textid
required
number
optin_terms_textid
required
number
Array of objects

Responses

Request samples

Content type
application/json
{
  • "title": "m",
  • "first_name": "john",
  • "last_name": "doe",
  • "email": "example@co.co",
  • "password": "string",
  • "birth_date": "2017-07-24",
  • "phone": "string",
  • "mobile_locale": "FR",
  • "zip_code": "string",
  • "pc_code": "string",
  • "center_company_id": "string",
  • "origin_type": "connect",
  • "origin": "string",
  • "optin_sms": true,
  • "optin_sms_textid": 0,
  • "optin_commercial": true,
  • "optin_commercial_textid": 0,
  • "optin_privacy_textid": 0,
  • "optin_terms_textid": 0,
  • "interests": [
    ]
}

Response samples

Content type
application/json
{
  • "visitor_id": "1b5d452e-2897-4f21-ac74-1b59f820ba97",
  • "hash": "string"
}

Pre-registration checks

Check if user already exist in congnito

Request Body schema: application/json
email_address
required
string <email>

Responses

Request samples

Content type
application/json
{
  • "email_address": "example@co.co"
}

Response samples

Content type
application/json
{
  • "visitor_id": "1b5d452e-2897-4f21-ac74-1b59f820ba97",
  • "account_type": "partal"
}

List of Center Companies

List of Center Companies

path Parameters
pcCode
required
string

pcCode

Responses

Response samples

Content type
application/json
{
  • "centerCompanyId": 0,
  • "pcCode": "string",
  • "companyName": "string",
  • "creationDate": "string",
  • "updateDate": "string"
}

List of Centers and Legal Texts

List of Centers with logo url and Legal Texts

query Parameters
include_legaltext
required
string

Leagal Texts as boolean value

locale
string

locale

pcCode
string

pcCode

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Register Partial User

Create new partial user

query Parameters
client_id
required
string
Example: client_id=68CCED1A7021642427E1D34B9FC2CDD7

client unique identifier

Request Body schema: application/json
gender
string
Enum: "m" "f" "u"
first_name
required
string
last_name
string
email
required
string <email>
phone
string

phone number in following format - E. 164 format for US

mobile_locale
string
timezone
string
pc_code
required
string
optin_sms
boolean
optin_sms_textid
number
optin_commercial
boolean
optin_commercial_textid
number
Array of objects

Responses

Request samples

Content type
application/json
{
  • "gender": "m",
  • "first_name": "john",
  • "last_name": "doe",
  • "email": "example@co.co",
  • "phone": "33631574470",
  • "mobile_locale": "FR",
  • "timezone": "string",
  • "pc_code": "string",
  • "optin_sms": true,
  • "optin_sms_textid": 0,
  • "optin_commercial": true,
  • "optin_commercial_textid": 0,
  • "interests": [
    ]
}

Response samples

Content type
application/json
{
  • "visitor_id": "1b5d452e-2897-4f21-ac74-1b59f820ba97",
  • "hash": "string"
}

Token

Generate tokens

Generate access token for visitors in exchange of authorization_code or refresh_token. Generate access token for machine to machine authentication

Request Body schema: application/json
code
string
refresh_token
string
grant_type
required
string
Enum: "authorization_code" "refresh_token" "client_credentials"
client_id
required
string
client_secret
required
string
redirect_uri
string
scope
string
nonce
string
data
object

Responses

Request samples

Content type
application/json
{
  • "code": "cks6qzg0e00v90gmkc3zw0l35",
  • "refresh_token": "string",
  • "grant_type": "authorization_code",
  • "client_id": "68CCED1A7021642427E1D34B9FC2CDD7",
  • "client_secret": "E43F531FFE7C6227F680E446604C36FE4CCAEAE97F7276A80153AAAAAAAAAAAA",
  • "redirect_uri": "http://localhost/redirect",
  • "scope": "profile,email",
  • "nonce": "string",
  • "data": { }
}

Response samples

Content type
application/json
{
  • "access_token": "string",
  • "token_type": "string",
  • "expires_in": 0,
  • "refresh_token": "string",
  • "scope": "string",
  • "created_at": "string"
}

Cache token and return ott

Cache received token with uuid as a key and return uuid as ott

header Parameters
Authorization
string

Responses

Response samples

Content type
application/json
{
  • "expires_at": "string",
  • "ott": "string"
}

Get cached token

Get cached token by using ott as a cache key with other params

query Parameters
token
string

Responses

Response samples

Content type
application/json
{
  • "access_token": "string",
  • "created_at": "string",
  • "expires_at": "string",
  • "expires_in_seconds": "string",
  • "visitor_id": "string",
  • "scopes": "string"
}

Convert token

Temporary route only used by the app to convert old token to a new one

Request Body schema: application/json
refresh_token
required
string
new_client_id
required
string

Responses

Request samples

Content type
application/json
{
  • "refresh_token": "string",
  • "new_client_id": "string"
}

Response samples

Content type
application/json
{
  • "access_token": "string",
  • "refresh_token": "string"
}

User

Get user information

Get user information

header Parameters
Authorization
required
string

Token fetched from connect /token endpoint

Responses

Response samples

Content type
application/json
{
  • "first_name": "john",
  • "last_name": "doe",
  • "name": "john doe",
  • "email": "example@co.co",
  • "visitor_id": "1b5d452e-2897-4f21-ac74-1b59f820ba97"
}

Get visitor basic information

Get visitor basic information

path Parameters
visitor_id
required
string
Example: d73283f7-55c8-57ba-86ff-c800b642bc42

Visitor unique identifier

Responses

Response samples

Content type
application/json
{
  • "first_name": "john",
  • "last_name": "doe",
  • "email": "example@co.co",
  • "phone": "string",
  • "mobileLocale": "FR",
  • "acquisition_pc_code": "string",
  • "gender": "string"
}

Delete visitor

Delete visitor's credentials from cognito

path Parameters
visitor_id
required
string
Example: d73283f7-55c8-57ba-86ff-c800b642bc42

Visitor unique identifier

header Parameters
Authorization
required
string

Machine-Machine token fetched from connect /token endpoint

Responses

Response samples

Content type
application/json
{
  • "metadata": { }
}

Transfer visitor credentials

Transfer visitor credentials to cognito

header Parameters
Authorization
required
string

Token fetched from connect /token endpoint

Request Body schema: application/json
visitor_id
required
string

Visitor unique identifier

email_address
required
string
password
string

Responses

Request samples

Content type
application/json
{
  • "visitor_id": "d73283f7-55c8-57ba-86ff-c800b642bc42",
  • "email_address": "string",
  • "password": "string"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

ExternalIdWrapper

Create external-id

Create external-id for a visitor on visitorAPI

path Parameters
visitor_id
required
string
Example: d73283f7-55c8-57ba-86ff-c800b642bc42

Visitor unique identifier

Request Body schema: application/json
external_id
required
string

Id of external resource

external_type
required
string

Type of external resource

Responses

Request samples

Content type
application/json
{
  • "external_id": "string",
  • "external_type": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "metadata": {}
}

Get external ids

Get external ids for given visitorId

path Parameters
visitor_id
required
string
Example: d73283f7-55c8-57ba-86ff-c800b642bc42

Visitor unique identifier

external_type
required
string
Enum: "designa" "facebook" "google" "cognito" "partner" "crm_id" "wifi_device_id"

External type

query Parameters
fields
string
Example: fields=foo,bar

List of fields to return

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "metadata": {}
}

Delete visitor’s external id

Delete visitor’s external id

path Parameters
visitor_id
required
string
Example: d73283f7-55c8-57ba-86ff-c800b642bc42

Visitor unique identifier

external_type
required
string
Enum: "designa" "facebook" "google" "cognito" "partner" "crm_id" "wifi_device_id"

External type

Responses

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

CategoriesWrapper

Category list children

Request the children list for a single category and locale

path Parameters
category_id
required
integer

Category identifier

westfield_locale
required
string (locales)
Enum: "en_US" "en_UK" "en_GB" "de_AT" "fr_FR" "en_FR" "pl_PL" "ca_ES" "es_ES" "eu_ES" "cs_CZ" "da_DK" "de_DE" "it_IT" "nl_BE" "de_BE" "fr_BE" "nl_NL" "pt_PT" "sk_SK" "sv_SE" "uk_UA" "default"

Locale identifier. Four letter ISO code with hyphen or underscore. Request the child categories with the locale westfield_locale.

query Parameters
depth
integer

Category depth. Request categories with depth.

fields
string
Example: fields=enter comma(,) separated values if multiple. i.e. field1,field2,field3

Fields in response. Array that lists the fields requested. If empty or not supplied, all attributes will be returned.

updated_since
string

Updated since. Request the categories updated since a specific date and time. ISO-8601 format.

strict
string

If set to false, default/fallback data to be returned if fields for translations does not exist for {westfield_locale}

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "errors": { },
  • "meta": {
    }
}

ApiClients

list existing api clients

caller must have the scope read:ldb

Responses

Response samples

Content type
application/json
[
  • {
    }
]

create a new client

The answer will have the secret unhashed caller must have the scop write:ldb

Request Body schema: application/json
name
required
string
redirectUris
required
Array of strings
type
required
string
bypassConsent
required
boolean
scope
required
string^[a-z]+:[a-zA-Z]+(\.[a-zA-Z]+)*(,[a-z]+:[a-zA...
accessTokenExpires
required
integer <int64>
refreshTokenExpires
required
integer <int64>
grantType
required
string
Enum: "machine" "visitor"
isActive
required
boolean
contactName
string
contactEmail
string <email>
createdBy
required
string

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "redirectUris": [
    ],
  • "type": "string",
  • "bypassConsent": true,
  • "scope": "read:ldb,write:ldb",
  • "accessTokenExpires": 0,
  • "refreshTokenExpires": 0,
  • "grantType": "machine",
  • "isActive": true,
  • "contactName": "string",
  • "contactEmail": "user@example.com",
  • "createdBy": "string"
}

Response samples

Content type
application/json
{
  • "name": "string",
  • "redirectUris": [
    ],
  • "type": "string",
  • "bypassConsent": true,
  • "scope": "read:ldb,write:ldb",
  • "accessTokenExpires": 0,
  • "refreshTokenExpires": 0,
  • "grantType": "machine",
  • "isActive": true,
  • "contactName": "string",
  • "contactEmail": "user@example.com",
  • "clientId": "string",
  • "createdBy": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedBy": "string",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "secret": "string"
}

update an existing api client

caller must have the scop write:ldb

path Parameters
clientId
required
string
Request Body schema: application/json
name
string
redirectUris
Array of strings
type
string
bypassConsent
boolean
scope
string^[a-z]+:[a-zA-Z]+(\.[a-zA-Z]+)*(,[a-z]+:[a-zA...
accessTokenExpires
integer <int64>
refreshTokenExpires
integer <int64>
grantType
string
Enum: "machine" "visitor"
isActive
boolean
contactName
string
contactEmail
string <email>
secret
string
updatedBy
required
string

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "redirectUris": [
    ],
  • "type": "string",
  • "bypassConsent": true,
  • "scope": "read:ldb,write:ldb",
  • "accessTokenExpires": 0,
  • "refreshTokenExpires": 0,
  • "grantType": "machine",
  • "isActive": true,
  • "contactName": "string",
  • "contactEmail": "user@example.com",
  • "secret": "string",
  • "updatedBy": "string"
}

Response samples

Content type
application/json
{
  • "name": "string",
  • "redirectUris": [
    ],
  • "type": "string",
  • "bypassConsent": true,
  • "scope": "read:ldb,write:ldb",
  • "accessTokenExpires": 0,
  • "refreshTokenExpires": 0,
  • "grantType": "machine",
  • "isActive": true,
  • "contactName": "string",
  • "contactEmail": "user@example.com",
  • "clientId": "string",
  • "createdBy": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedBy": "string",
  • "updatedAt": "2019-08-24T14:15:22Z"
}