openapi: 3.0.3
info:
title: 'Pulse API Documentation'
description: 'Welcome to the documentation for the Pulse API. Here you will be able to find all of our available resources and how to use them. To use our API, all endpoints require a token that can be created when you login to Pulse.'
version: 1.0.0
servers:
-
url: 'https://pulsereviews.io'
tags:
-
name: Company
description: ''
-
name: 'Google Locations'
description: 'Endpoints for managing Google locations on Pulse'
-
name: Health
description: ''
components:
securitySchemes:
default:
type: http
scheme: bearer
description: 'You can generate API tokens within Pulse when logged in. Click on your name in the bottom left, then click API Tokens, give your token a name and then click Save. Your token will only be shown that one time, so make sure to copy it there and then. Tokens can be revoked at any time.'
security:
-
default: []
paths:
/api/company:
get:
summary: Show
operationId: show
description: ' This endpoint will show details of the company that the api token is for.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
name: 'Holmes Ltd'
locations: []
properties:
data:
type: object
properties:
name:
type: string
example: 'Holmes Ltd'
locations:
type: array
example: []
401:
description: Unauthorized
content:
application/json:
schema:
type: object
example:
message: Unauthenticated
properties:
message:
type: string
example: Unauthenticated
403:
description: Forbidden
content:
application/json:
schema:
type: object
example:
message: 'This action is unauthorized.'
properties:
message:
type: string
example: 'This action is unauthorized.'
tags:
- Company
/api/locations/google:
get:
summary: List
operationId: list
description: ' This endpoint will list all Google locations tied to the user.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: '93598351'
name: 'Evans Ltd'
googleRating: 3.2
preciseGoogleRating: 3.2043
reviewsCount: 193
site: mason.com
address: "213 Harley Union\nNew Samuelfort\nSP1 1NE"
regularHours:
MONDAY:
open: '8:00'
close: '17:00'
TUESDAY:
open: '8:00'
close: '17:00'
WEDNESDAY:
open: '8:00'
close: '21:00'
THURSDAY:
open: '8:00'
close: '21:00'
FRIDAY:
open: '8:00'
close: '21:00'
SATURDAY:
open: '8:00'
close: '17:00'
SUNDAY:
open: '10:00'
close: '16:00'
specialHours:
'2024-12-25':
status: closed
open: null
close: null
'2024-12-24':
status: open
open: '10:00'
close: '15:00'
-
id: '50830334'
name: 'Roberts Ltd'
googleRating: 4
preciseGoogleRating: 4.0328
reviewsCount: 64
site: mitchell.com
address: "5 Elizabeth Grove\nMaxfurt\nLS16 8EE"
regularHours:
MONDAY:
open: '8:00'
close: '17:00'
TUESDAY:
open: '8:00'
close: '17:00'
WEDNESDAY:
open: '8:00'
close: '21:00'
THURSDAY:
open: '8:00'
close: '21:00'
FRIDAY:
open: '8:00'
close: '21:00'
SATURDAY:
open: '8:00'
close: '17:00'
SUNDAY:
open: '10:00'
close: '16:00'
specialHours:
'2024-12-25':
status: closed
open: null
close: null
'2024-12-24':
status: open
open: '10:00'
close: '15:00'
links:
first: '/?page=1'
last: '/?page=1'
prev: null
next: null
meta:
current_page: 1
from: 1
last_page: 1
links:
-
url: null
label: Previous
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: Next
page: null
active: false
path: /
per_page: 15
to: 2
total: 2
properties:
data:
type: array
example:
-
id: '93598351'
name: 'Evans Ltd'
googleRating: 3.2
preciseGoogleRating: 3.2043
reviewsCount: 193
site: mason.com
address: "213 Harley Union\nNew Samuelfort\nSP1 1NE"
regularHours:
MONDAY:
open: '8:00'
close: '17:00'
TUESDAY:
open: '8:00'
close: '17:00'
WEDNESDAY:
open: '8:00'
close: '21:00'
THURSDAY:
open: '8:00'
close: '21:00'
FRIDAY:
open: '8:00'
close: '21:00'
SATURDAY:
open: '8:00'
close: '17:00'
SUNDAY:
open: '10:00'
close: '16:00'
specialHours:
'2024-12-25':
status: closed
open: null
close: null
'2024-12-24':
status: open
open: '10:00'
close: '15:00'
-
id: '50830334'
name: 'Roberts Ltd'
googleRating: 4
preciseGoogleRating: 4.0328
reviewsCount: 64
site: mitchell.com
address: "5 Elizabeth Grove\nMaxfurt\nLS16 8EE"
regularHours:
MONDAY:
open: '8:00'
close: '17:00'
TUESDAY:
open: '8:00'
close: '17:00'
WEDNESDAY:
open: '8:00'
close: '21:00'
THURSDAY:
open: '8:00'
close: '21:00'
FRIDAY:
open: '8:00'
close: '21:00'
SATURDAY:
open: '8:00'
close: '17:00'
SUNDAY:
open: '10:00'
close: '16:00'
specialHours:
'2024-12-25':
status: closed
open: null
close: null
'2024-12-24':
status: open
open: '10:00'
close: '15:00'
items:
type: object
properties:
id:
type: string
example: '93598351'
name:
type: string
example: 'Evans Ltd'
googleRating:
type: number
example: 3.2
preciseGoogleRating:
type: number
example: 3.2043
reviewsCount:
type: integer
example: 193
site:
type: string
example: mason.com
address:
type: string
example: "213 Harley Union\nNew Samuelfort\nSP1 1NE"
regularHours:
type: object
properties:
MONDAY:
type: object
properties:
open:
type: string
example: '8:00'
close:
type: string
example: '17:00'
TUESDAY:
type: object
properties:
open:
type: string
example: '8:00'
close:
type: string
example: '17:00'
WEDNESDAY:
type: object
properties:
open:
type: string
example: '8:00'
close:
type: string
example: '21:00'
THURSDAY:
type: object
properties:
open:
type: string
example: '8:00'
close:
type: string
example: '21:00'
FRIDAY:
type: object
properties:
open:
type: string
example: '8:00'
close:
type: string
example: '21:00'
SATURDAY:
type: object
properties:
open:
type: string
example: '8:00'
close:
type: string
example: '17:00'
SUNDAY:
type: object
properties:
open:
type: string
example: '10:00'
close:
type: string
example: '16:00'
specialHours:
type: object
properties:
'2024-12-25':
type: object
properties:
status:
type: string
example: closed
open:
type: string
example: null
nullable: true
close:
type: string
example: null
nullable: true
'2024-12-24':
type: object
properties:
status:
type: string
example: open
open:
type: string
example: '10:00'
close:
type: string
example: '15:00'
links:
type: object
properties:
first:
type: string
example: '/?page=1'
last:
type: string
example: '/?page=1'
prev:
type: string
example: null
nullable: true
next:
type: string
example: null
nullable: true
meta:
type: object
properties:
current_page:
type: integer
example: 1
from:
type: integer
example: 1
last_page:
type: integer
example: 1
links:
type: array
example:
-
url: null
label: Previous
page: null
active: false
-
url: '/?page=1'
label: '1'
page: 1
active: true
-
url: null
label: Next
page: null
active: false
items:
type: object
properties:
url:
type: string
example: null
nullable: true
label:
type: string
example: Previous
page:
type: string
example: null
nullable: true
active:
type: boolean
example: false
path:
type: string
example: /
per_page:
type: integer
example: 15
to:
type: integer
example: 2
total:
type: integer
example: 2
401:
description: Unauthorized
content:
application/json:
schema:
type: object
example:
message: Unauthenticated
properties:
message:
type: string
example: Unauthenticated
tags:
- 'Google Locations'
'/api/locations/google/{googleLocation_google_id}':
get:
summary: Show
operationId: show
description: ' This endpoint will show a specific Google location, based on Google ID.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: '90888257'
name: 'Mason Ltd'
googleRating: 3.6
preciseGoogleRating: 3.5759
reviewsCount: 57
site: graham.co.uk
address: "7 Quentin Glen\nEleanorton\nS70 5RT"
regularHours:
MONDAY:
open: '8:00'
close: '17:00'
TUESDAY:
open: '8:00'
close: '17:00'
WEDNESDAY:
open: '8:00'
close: '21:00'
THURSDAY:
open: '8:00'
close: '21:00'
FRIDAY:
open: '8:00'
close: '21:00'
SATURDAY:
open: '8:00'
close: '17:00'
SUNDAY:
open: '10:00'
close: '16:00'
specialHours:
'2024-12-25':
status: closed
open: null
close: null
'2024-12-24':
status: open
open: '10:00'
close: '15:00'
properties:
data:
type: object
properties:
id:
type: string
example: '90888257'
name:
type: string
example: 'Mason Ltd'
googleRating:
type: number
example: 3.6
preciseGoogleRating:
type: number
example: 3.5759
reviewsCount:
type: integer
example: 57
site:
type: string
example: graham.co.uk
address:
type: string
example: "7 Quentin Glen\nEleanorton\nS70 5RT"
regularHours:
type: object
properties:
MONDAY:
type: object
properties:
open:
type: string
example: '8:00'
close:
type: string
example: '17:00'
TUESDAY:
type: object
properties:
open:
type: string
example: '8:00'
close:
type: string
example: '17:00'
WEDNESDAY:
type: object
properties:
open:
type: string
example: '8:00'
close:
type: string
example: '21:00'
THURSDAY:
type: object
properties:
open:
type: string
example: '8:00'
close:
type: string
example: '21:00'
FRIDAY:
type: object
properties:
open:
type: string
example: '8:00'
close:
type: string
example: '21:00'
SATURDAY:
type: object
properties:
open:
type: string
example: '8:00'
close:
type: string
example: '17:00'
SUNDAY:
type: object
properties:
open:
type: string
example: '10:00'
close:
type: string
example: '16:00'
specialHours:
type: object
properties:
'2024-12-25':
type: object
properties:
status:
type: string
example: closed
open:
type: string
example: null
nullable: true
close:
type: string
example: null
nullable: true
'2024-12-24':
type: object
properties:
status:
type: string
example: open
open:
type: string
example: '10:00'
close:
type: string
example: '15:00'
401:
description: Unauthorized
content:
application/json:
schema:
type: object
example:
message: Unauthenticated
properties:
message:
type: string
example: Unauthenticated
403:
description: Forbidden
content:
application/json:
schema:
type: object
example:
message: 'This action is unauthorized.'
properties:
message:
type: string
example: 'This action is unauthorized.'
tags:
- 'Google Locations'
patch:
summary: Update
operationId: update
description: " This endpoint can be used to update a Google location. Currently, the Pulse API can only be\n used to update Regular and Special hours. This endpoint is subject to Google rate limits so make sure you allow\n for plenty of time for the update to complete."
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: null
payload:
title: 'Palmer Ltd'
profile:
description: 'Non hic tempore deleniti asperiores quos quisquam. Alias totam assumenda vitae dicta minima. Pariatur beatae est eaque illo quos iure quasi.'
phoneNumbers:
primaryPhone: '0833 686 6655'
addititionalPhones: []
websiteUrl: adams.com
storefrontAddress:
postalCode: 'DD8 4EX'
locality: Christopherborough
addressLines:
- "Studio 14r\nTheo Meadows"
- ''
- ''
- ''
- ''
regionCode: GB
regularHours:
periods:
-
openDay: MONDAY
closeDay: MONDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: TUESDAY
closeDay: TUESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: WEDNESDAY
closeDay: WEDNESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: THURSDAY
closeDay: THURSDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: FRIDAY
closeDay: FRIDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
specialHours:
specialHourPeriods:
-
closed: true
endDate:
year: 2024
month: 12
day: 25
openTime:
hours: null
minutes: null
closeTime:
hours: null
minutes: null
startDate:
year: 2024
month: 12
day: 25
-
closed: false
endDate:
year: 2024
month: 12
day: 24
openTime:
hours: 10
minutes: 0
closeTime:
hours: 15
minutes: 0
startDate:
year: 2024
month: 12
day: 24
process_at: '2026-04-02T00:37:25.000000Z'
notes: 'Rem veniam excepturi veniam hic voluptas. Repellat et laboriosam beatae quasi. Optio illo eum odio quas.'
validateOnly: true
properties:
data:
type: object
properties:
id:
type: string
example: null
nullable: true
payload:
type: object
properties:
title:
type: string
example: 'Palmer Ltd'
profile:
type: object
properties:
description:
type: string
example: 'Non hic tempore deleniti asperiores quos quisquam. Alias totam assumenda vitae dicta minima. Pariatur beatae est eaque illo quos iure quasi.'
phoneNumbers:
type: object
properties:
primaryPhone:
type: string
example: '0833 686 6655'
addititionalPhones:
type: array
example: []
websiteUrl:
type: string
example: adams.com
storefrontAddress:
type: object
properties:
postalCode:
type: string
example: 'DD8 4EX'
locality:
type: string
example: Christopherborough
addressLines:
type: array
example:
- "Studio 14r\nTheo Meadows"
- ''
- ''
- ''
- ''
items:
type: string
regionCode:
type: string
example: GB
regularHours:
type: object
properties:
periods:
type: array
example:
-
openDay: MONDAY
closeDay: MONDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: TUESDAY
closeDay: TUESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: WEDNESDAY
closeDay: WEDNESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: THURSDAY
closeDay: THURSDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: FRIDAY
closeDay: FRIDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
items:
type: object
properties:
openDay:
type: string
example: MONDAY
closeDay:
type: string
example: MONDAY
openTime:
type: object
properties: { hours: { type: integer, example: 8 }, minutes: { type: integer, example: 0 } }
closeTime:
type: object
properties: { hours: { type: integer, example: 18 }, minutes: { type: integer, example: 0 } }
specialHours:
type: object
properties:
specialHourPeriods:
type: array
example:
-
closed: true
endDate:
year: 2024
month: 12
day: 25
openTime:
hours: null
minutes: null
closeTime:
hours: null
minutes: null
startDate:
year: 2024
month: 12
day: 25
-
closed: false
endDate:
year: 2024
month: 12
day: 24
openTime:
hours: 10
minutes: 0
closeTime:
hours: 15
minutes: 0
startDate:
year: 2024
month: 12
day: 24
items:
type: object
properties:
closed:
type: boolean
example: true
endDate:
type: object
properties: { year: { type: integer, example: 2024 }, month: { type: integer, example: 12 }, day: { type: integer, example: 25 } }
openTime:
type: object
properties: { hours: { type: string, example: null, nullable: true }, minutes: { type: string, example: null, nullable: true } }
closeTime:
type: object
properties: { hours: { type: string, example: null, nullable: true }, minutes: { type: string, example: null, nullable: true } }
startDate:
type: object
properties: { year: { type: integer, example: 2024 }, month: { type: integer, example: 12 }, day: { type: integer, example: 25 } }
process_at:
type: string
example: '2026-04-02T00:37:25.000000Z'
notes:
type: string
example: 'Rem veniam excepturi veniam hic voluptas. Repellat et laboriosam beatae quasi. Optio illo eum odio quas.'
validateOnly:
type: boolean
example: true
401:
description: Unauthorized
content:
application/json:
schema:
type: object
example:
message: Unauthenticated
properties:
message:
type: string
example: Unauthenticated
403:
description: Forbidden
content:
application/json:
schema:
type: object
example:
message: 'This action is unauthorized.'
properties:
message:
type: string
example: 'This action is unauthorized.'
tags:
- 'Google Locations'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
regularHours:
type: array
description: ''
example: null
items:
type: object
properties:
day:
type: 'The day of the week these hours apply to. Must be a valid day of the week. If a day is closed, do not send it in the payload.'
description: ''
example: Monday
openTime:
type: 'The time that the location opens. Must be in the format `H:i`. Must be before closeTime.'
description: ''
example: '09:00'
closeTime:
type: 'The time that the location closes. Must be in the format `H:i`. Must be after openTime.'
description: ''
example: '17:00'
required:
- day
specialHours:
type: array
description: ''
example: null
items:
type: object
properties:
date:
type: 'The date that the special hours apply to. Must be in the format `Y-m-D`. If a day is closed, only send the date.'
description: ''
example: '2024-12-24'
openTime:
type: 'The time that the location opens. Must be in the format `H:i`. Must be before closeTime.'
description: ''
example: '09:00'
closeTime:
type: 'The time that the location closes. Must be in the format `H:i`. Must be after openTime.'
description: ''
example: '17:00'
required:
- date
applyChangesOn:
type: string
description: 'The date and time you wish to schedule these changes for. Can be any date and time after now.'
example: '2030-05-01 23:00:00'
notes:
type: string
description: 'Additional notes for the update you are making. Must be 255 characters or less.'
example: 'Changes Wednesday to open at 10am and close at 4pm.'
validateOnly:
type: boolean
description: 'Set to true if you want to validate the changes without actually making them. The default is false.'
example: true
required:
- applyChangesOn
- notes
parameters:
-
in: path
name: googleLocation_google_id
description: ''
example: 749845872867289688
required: true
schema:
type: 'The Google ID of the Location you want to show.'
'/api/locations/google/{googleLocation_google_id}/copy-hours':
post:
summary: 'Copy Hours'
operationId: copyHours
description: " Copy this location's regular and/or special opening hours to other locations in your company.\n Creates one pending update per target location; changes are applied according to each update's process_at."
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: null
payload:
title: 'Chapman Ltd'
profile:
description: 'Expedita eum nulla voluptate consequatur voluptatem est accusantium. Ducimus eaque similique voluptatem veniam vero est quas. Fuga facilis quis et vel non.'
phoneNumbers:
primaryPhone: '0478 869 4568'
addititionalPhones: []
websiteUrl: evans.net
storefrontAddress:
postalCode: 'HA7 1HB'
locality: Patrickport
addressLines:
- '12 Turner Overpass'
- ''
- ''
- ''
- ''
regionCode: GB
regularHours:
periods:
-
openDay: MONDAY
closeDay: MONDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: TUESDAY
closeDay: TUESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: WEDNESDAY
closeDay: WEDNESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: THURSDAY
closeDay: THURSDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: FRIDAY
closeDay: FRIDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
specialHours:
specialHourPeriods:
-
closed: true
endDate:
year: 2024
month: 12
day: 25
openTime:
hours: null
minutes: null
closeTime:
hours: null
minutes: null
startDate:
year: 2024
month: 12
day: 25
-
closed: false
endDate:
year: 2024
month: 12
day: 24
openTime:
hours: 10
minutes: 0
closeTime:
hours: 15
minutes: 0
startDate:
year: 2024
month: 12
day: 24
process_at: '2026-03-27T00:37:25.000000Z'
notes: 'Dicta asperiores earum placeat tenetur iste voluptas dicta deleniti. Rerum voluptas iure voluptas officia. Dolorum soluta molestiae reiciendis sed maiores provident.'
validateOnly: true
-
id: null
payload:
title: 'Hunter Ltd'
profile:
description: 'Sint quis magnam officiis alias. Error expedita voluptatem et eum. Hic in provident vel architecto alias accusamus placeat.'
phoneNumbers:
primaryPhone: '+44(0)1104 794134'
addititionalPhones: []
websiteUrl: smith.com
storefrontAddress:
postalCode: 'RG27 8PG'
locality: 'Port Jamiemouth'
addressLines:
- '5 Ray Field'
- ''
- ''
- ''
- ''
regionCode: GB
regularHours:
periods:
-
openDay: MONDAY
closeDay: MONDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: TUESDAY
closeDay: TUESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: WEDNESDAY
closeDay: WEDNESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: THURSDAY
closeDay: THURSDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: FRIDAY
closeDay: FRIDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
specialHours:
specialHourPeriods:
-
closed: true
endDate:
year: 2024
month: 12
day: 25
openTime:
hours: null
minutes: null
closeTime:
hours: null
minutes: null
startDate:
year: 2024
month: 12
day: 25
-
closed: false
endDate:
year: 2024
month: 12
day: 24
openTime:
hours: 10
minutes: 0
closeTime:
hours: 15
minutes: 0
startDate:
year: 2024
month: 12
day: 24
process_at: '2026-04-15T00:37:25.000000Z'
notes: 'Est possimus et et tenetur ut alias. Provident laboriosam in et natus et repudiandae. Id dolorum voluptas quibusdam accusamus saepe.'
validateOnly: false
properties:
data:
type: array
example:
-
id: null
payload:
title: 'Chapman Ltd'
profile:
description: 'Expedita eum nulla voluptate consequatur voluptatem est accusantium. Ducimus eaque similique voluptatem veniam vero est quas. Fuga facilis quis et vel non.'
phoneNumbers:
primaryPhone: '0478 869 4568'
addititionalPhones: []
websiteUrl: evans.net
storefrontAddress:
postalCode: 'HA7 1HB'
locality: Patrickport
addressLines:
- '12 Turner Overpass'
- ''
- ''
- ''
- ''
regionCode: GB
regularHours:
periods:
-
openDay: MONDAY
closeDay: MONDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: TUESDAY
closeDay: TUESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: WEDNESDAY
closeDay: WEDNESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: THURSDAY
closeDay: THURSDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: FRIDAY
closeDay: FRIDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
specialHours:
specialHourPeriods:
-
closed: true
endDate:
year: 2024
month: 12
day: 25
openTime:
hours: null
minutes: null
closeTime:
hours: null
minutes: null
startDate:
year: 2024
month: 12
day: 25
-
closed: false
endDate:
year: 2024
month: 12
day: 24
openTime:
hours: 10
minutes: 0
closeTime:
hours: 15
minutes: 0
startDate:
year: 2024
month: 12
day: 24
process_at: '2026-03-27T00:37:25.000000Z'
notes: 'Dicta asperiores earum placeat tenetur iste voluptas dicta deleniti. Rerum voluptas iure voluptas officia. Dolorum soluta molestiae reiciendis sed maiores provident.'
validateOnly: true
-
id: null
payload:
title: 'Hunter Ltd'
profile:
description: 'Sint quis magnam officiis alias. Error expedita voluptatem et eum. Hic in provident vel architecto alias accusamus placeat.'
phoneNumbers:
primaryPhone: '+44(0)1104 794134'
addititionalPhones: []
websiteUrl: smith.com
storefrontAddress:
postalCode: 'RG27 8PG'
locality: 'Port Jamiemouth'
addressLines:
- '5 Ray Field'
- ''
- ''
- ''
- ''
regionCode: GB
regularHours:
periods:
-
openDay: MONDAY
closeDay: MONDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: TUESDAY
closeDay: TUESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: WEDNESDAY
closeDay: WEDNESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: THURSDAY
closeDay: THURSDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: FRIDAY
closeDay: FRIDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
specialHours:
specialHourPeriods:
-
closed: true
endDate:
year: 2024
month: 12
day: 25
openTime:
hours: null
minutes: null
closeTime:
hours: null
minutes: null
startDate:
year: 2024
month: 12
day: 25
-
closed: false
endDate:
year: 2024
month: 12
day: 24
openTime:
hours: 10
minutes: 0
closeTime:
hours: 15
minutes: 0
startDate:
year: 2024
month: 12
day: 24
process_at: '2026-04-15T00:37:25.000000Z'
notes: 'Est possimus et et tenetur ut alias. Provident laboriosam in et natus et repudiandae. Id dolorum voluptas quibusdam accusamus saepe.'
validateOnly: false
items:
type: object
properties:
id:
type: string
example: null
nullable: true
payload:
type: object
properties:
title:
type: string
example: 'Chapman Ltd'
profile:
type: object
properties:
description:
type: string
example: 'Expedita eum nulla voluptate consequatur voluptatem est accusantium. Ducimus eaque similique voluptatem veniam vero est quas. Fuga facilis quis et vel non.'
phoneNumbers:
type: object
properties:
primaryPhone:
type: string
example: '0478 869 4568'
addititionalPhones:
type: array
example: []
websiteUrl:
type: string
example: evans.net
storefrontAddress:
type: object
properties:
postalCode:
type: string
example: 'HA7 1HB'
locality:
type: string
example: Patrickport
addressLines:
type: array
example:
- '12 Turner Overpass'
- ''
- ''
- ''
- ''
items:
type: string
regionCode:
type: string
example: GB
regularHours:
type: object
properties:
periods:
type: array
example:
-
openDay: MONDAY
closeDay: MONDAY
openTime: { hours: 8, minutes: 0 }
closeTime: { hours: 18, minutes: 0 }
-
openDay: TUESDAY
closeDay: TUESDAY
openTime: { hours: 8, minutes: 0 }
closeTime: { hours: 18, minutes: 0 }
-
openDay: WEDNESDAY
closeDay: WEDNESDAY
openTime: { hours: 8, minutes: 0 }
closeTime: { hours: 18, minutes: 0 }
-
openDay: THURSDAY
closeDay: THURSDAY
openTime: { hours: 8, minutes: 0 }
closeTime: { hours: 18, minutes: 0 }
-
openDay: FRIDAY
closeDay: FRIDAY
openTime: { hours: 8, minutes: 0 }
closeTime: { hours: 18, minutes: 0 }
items:
type: object
properties:
openDay: { type: string, example: MONDAY }
closeDay: { type: string, example: MONDAY }
openTime: { type: object, properties: { hours: { type: integer, example: 8 }, minutes: { type: integer, example: 0 } } }
closeTime: { type: object, properties: { hours: { type: integer, example: 18 }, minutes: { type: integer, example: 0 } } }
specialHours:
type: object
properties:
specialHourPeriods:
type: array
example:
-
closed: true
endDate: { year: 2024, month: 12, day: 25 }
openTime: { hours: null, minutes: null }
closeTime: { hours: null, minutes: null }
startDate: { year: 2024, month: 12, day: 25 }
-
closed: false
endDate: { year: 2024, month: 12, day: 24 }
openTime: { hours: 10, minutes: 0 }
closeTime: { hours: 15, minutes: 0 }
startDate: { year: 2024, month: 12, day: 24 }
items:
type: object
properties:
closed: { type: boolean, example: true }
endDate: { type: object, properties: { year: { type: integer, example: 2024 }, month: { type: integer, example: 12 }, day: { type: integer, example: 25 } } }
openTime: { type: object, properties: { hours: { type: string, example: null, nullable: true }, minutes: { type: string, example: null, nullable: true } } }
closeTime: { type: object, properties: { hours: { type: string, example: null, nullable: true }, minutes: { type: string, example: null, nullable: true } } }
startDate: { type: object, properties: { year: { type: integer, example: 2024 }, month: { type: integer, example: 12 }, day: { type: integer, example: 25 } } }
process_at:
type: string
example: '2026-03-27T00:37:25.000000Z'
notes:
type: string
example: 'Dicta asperiores earum placeat tenetur iste voluptas dicta deleniti. Rerum voluptas iure voluptas officia. Dolorum soluta molestiae reiciendis sed maiores provident.'
validateOnly:
type: boolean
example: true
401:
description: Unauthorized
content:
application/json:
schema:
type: object
example:
message: Unauthenticated
properties:
message:
type: string
example: Unauthenticated
403:
description: Forbidden
content:
application/json:
schema:
type: object
example:
message: 'This action is unauthorized.'
properties:
message:
type: string
example: 'This action is unauthorized.'
422:
description: ''
content:
application/json:
schema:
oneOf:
-
description: 'Invalid targets'
type: object
example:
message: 'All target locations must belong to your company and not be the source location.'
properties:
message:
type: string
example: 'All target locations must belong to your company and not be the source location.'
-
description: 'Must choose regularHours and/or specialHours'
type: object
example:
message: 'Please select at least one of Regular hours or Special hours.'
properties:
message:
type: string
example: 'Please select at least one of Regular hours or Special hours.'
tags:
- 'Google Locations'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
target_google_ids:
type: array
description: 'Google IDs of the target locations to copy hours to.'
example:
- 749845872867289689
- 749845872867289690
items:
type: string
hours_to_copy:
type: array
description: 'What to copy: regularHours and/or specialHours.'
example:
- regularHours
- specialHours
items:
type: string
apply_changes_on:
type: string
description: 'When to apply the changes. Defaults to now if omitted.'
example: '2030-05-01 23:00:00'
notes:
type: string
description: 'Optional notes for the pending updates.'
example: nobis
required:
- target_google_ids
- hours_to_copy
parameters:
-
in: path
name: googleLocation_google_id
description: ''
example: 749845872867289688
required: true
schema:
type: 'The Google ID of the source location to copy hours from.'
'/api/locations/google/{googleLocation_google_id}/updates':
get:
summary: 'List Updates'
operationId: listUpdates
description: ' This endpoint will list all updates for the specified Google location.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: null
payload:
title: 'Williams Ltd'
profile:
description: 'Sunt eaque esse non soluta autem saepe dolorem. Eveniet porro id est quam voluptatibus distinctio distinctio eveniet. Est consectetur quos vel eligendi quod.'
phoneNumbers:
primaryPhone: '07604 413680'
addititionalPhones: []
websiteUrl: wilson.com
storefrontAddress:
postalCode: 'NG17 4JY'
locality: 'East Robhaven'
addressLines:
- '90 Jordan Trail'
- ''
- ''
- ''
- ''
regionCode: GB
regularHours:
periods:
-
openDay: MONDAY
closeDay: MONDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: TUESDAY
closeDay: TUESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: WEDNESDAY
closeDay: WEDNESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: THURSDAY
closeDay: THURSDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: FRIDAY
closeDay: FRIDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
specialHours:
specialHourPeriods:
-
closed: true
endDate:
year: 2024
month: 12
day: 25
openTime:
hours: null
minutes: null
closeTime:
hours: null
minutes: null
startDate:
year: 2024
month: 12
day: 25
-
closed: false
endDate:
year: 2024
month: 12
day: 24
openTime:
hours: 10
minutes: 0
closeTime:
hours: 15
minutes: 0
startDate:
year: 2024
month: 12
day: 24
process_at: '2026-03-28T00:37:25.000000Z'
notes: 'Reiciendis debitis est sed eos iure dolores ut. Aliquid at libero in enim. Id enim nulla alias asperiores minima.'
validateOnly: false
properties:
data:
type: object
properties:
id:
type: string
example: null
nullable: true
payload:
type: object
properties:
title:
type: string
example: 'Williams Ltd'
profile:
type: object
properties:
description:
type: string
example: 'Sunt eaque esse non soluta autem saepe dolorem. Eveniet porro id est quam voluptatibus distinctio distinctio eveniet. Est consectetur quos vel eligendi quod.'
phoneNumbers:
type: object
properties:
primaryPhone:
type: string
example: '07604 413680'
addititionalPhones:
type: array
example: []
websiteUrl:
type: string
example: wilson.com
storefrontAddress:
type: object
properties:
postalCode:
type: string
example: 'NG17 4JY'
locality:
type: string
example: 'East Robhaven'
addressLines:
type: array
example:
- '90 Jordan Trail'
- ''
- ''
- ''
- ''
items:
type: string
regionCode:
type: string
example: GB
regularHours:
type: object
properties:
periods:
type: array
example:
-
openDay: MONDAY
closeDay: MONDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: TUESDAY
closeDay: TUESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: WEDNESDAY
closeDay: WEDNESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: THURSDAY
closeDay: THURSDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: FRIDAY
closeDay: FRIDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
items:
type: object
properties:
openDay:
type: string
example: MONDAY
closeDay:
type: string
example: MONDAY
openTime:
type: object
properties: { hours: { type: integer, example: 8 }, minutes: { type: integer, example: 0 } }
closeTime:
type: object
properties: { hours: { type: integer, example: 18 }, minutes: { type: integer, example: 0 } }
specialHours:
type: object
properties:
specialHourPeriods:
type: array
example:
-
closed: true
endDate:
year: 2024
month: 12
day: 25
openTime:
hours: null
minutes: null
closeTime:
hours: null
minutes: null
startDate:
year: 2024
month: 12
day: 25
-
closed: false
endDate:
year: 2024
month: 12
day: 24
openTime:
hours: 10
minutes: 0
closeTime:
hours: 15
minutes: 0
startDate:
year: 2024
month: 12
day: 24
items:
type: object
properties:
closed:
type: boolean
example: true
endDate:
type: object
properties: { year: { type: integer, example: 2024 }, month: { type: integer, example: 12 }, day: { type: integer, example: 25 } }
openTime:
type: object
properties: { hours: { type: string, example: null, nullable: true }, minutes: { type: string, example: null, nullable: true } }
closeTime:
type: object
properties: { hours: { type: string, example: null, nullable: true }, minutes: { type: string, example: null, nullable: true } }
startDate:
type: object
properties: { year: { type: integer, example: 2024 }, month: { type: integer, example: 12 }, day: { type: integer, example: 25 } }
process_at:
type: string
example: '2026-03-28T00:37:25.000000Z'
notes:
type: string
example: 'Reiciendis debitis est sed eos iure dolores ut. Aliquid at libero in enim. Id enim nulla alias asperiores minima.'
validateOnly:
type: boolean
example: false
401:
description: Unauthorized
content:
application/json:
schema:
type: object
example:
message: Unauthenticated
properties:
message:
type: string
example: Unauthenticated
tags:
- 'Google Locations'
parameters:
-
in: path
name: googleLocation_google_id
description: ''
example: 749845872867289688
required: true
schema:
type: 'The Google ID of the location you want to list updates for'
'/api/locations/google/{googleLocation_google_id}/updates/{pendingGoogleLocationUpdate_id}':
get:
summary: 'Show Update'
operationId: showUpdate
description: ' This endpoint will show a specific update for the specified Google location.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: null
payload:
title: 'Clark Ltd'
profile:
description: 'Velit perferendis ipsam eius laudantium vel sapiente. Est expedita et aliquam numquam temporibus laboriosam. Magnam voluptates veritatis ut doloremque.'
phoneNumbers:
primaryPhone: '0125497703'
addititionalPhones: []
websiteUrl: saunders.com
storefrontAddress:
postalCode: 'FK3 8EP'
locality: 'East Kellymouth'
addressLines:
- "Studio 98u\nAnna Fork"
- ''
- ''
- ''
- ''
regionCode: GB
regularHours:
periods:
-
openDay: MONDAY
closeDay: MONDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: TUESDAY
closeDay: TUESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: WEDNESDAY
closeDay: WEDNESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: THURSDAY
closeDay: THURSDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: FRIDAY
closeDay: FRIDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
specialHours:
specialHourPeriods:
-
closed: true
endDate:
year: 2024
month: 12
day: 25
openTime:
hours: null
minutes: null
closeTime:
hours: null
minutes: null
startDate:
year: 2024
month: 12
day: 25
-
closed: false
endDate:
year: 2024
month: 12
day: 24
openTime:
hours: 10
minutes: 0
closeTime:
hours: 15
minutes: 0
startDate:
year: 2024
month: 12
day: 24
process_at: '2026-03-30T00:37:25.000000Z'
notes: 'Suscipit reiciendis ullam incidunt non ab cumque. Quia amet assumenda quis quidem eum officiis. Quas rem dolorum nemo sapiente eveniet.'
validateOnly: true
properties:
data:
type: object
properties:
id:
type: string
example: null
nullable: true
payload:
type: object
properties:
title:
type: string
example: 'Clark Ltd'
profile:
type: object
properties:
description:
type: string
example: 'Velit perferendis ipsam eius laudantium vel sapiente. Est expedita et aliquam numquam temporibus laboriosam. Magnam voluptates veritatis ut doloremque.'
phoneNumbers:
type: object
properties:
primaryPhone:
type: string
example: '0125497703'
addititionalPhones:
type: array
example: []
websiteUrl:
type: string
example: saunders.com
storefrontAddress:
type: object
properties:
postalCode:
type: string
example: 'FK3 8EP'
locality:
type: string
example: 'East Kellymouth'
addressLines:
type: array
example:
- "Studio 98u\nAnna Fork"
- ''
- ''
- ''
- ''
items:
type: string
regionCode:
type: string
example: GB
regularHours:
type: object
properties:
periods:
type: array
example:
-
openDay: MONDAY
closeDay: MONDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: TUESDAY
closeDay: TUESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: WEDNESDAY
closeDay: WEDNESDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: THURSDAY
closeDay: THURSDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
-
openDay: FRIDAY
closeDay: FRIDAY
openTime:
hours: 8
minutes: 0
closeTime:
hours: 18
minutes: 0
items:
type: object
properties:
openDay:
type: string
example: MONDAY
closeDay:
type: string
example: MONDAY
openTime:
type: object
properties: { hours: { type: integer, example: 8 }, minutes: { type: integer, example: 0 } }
closeTime:
type: object
properties: { hours: { type: integer, example: 18 }, minutes: { type: integer, example: 0 } }
specialHours:
type: object
properties:
specialHourPeriods:
type: array
example:
-
closed: true
endDate:
year: 2024
month: 12
day: 25
openTime:
hours: null
minutes: null
closeTime:
hours: null
minutes: null
startDate:
year: 2024
month: 12
day: 25
-
closed: false
endDate:
year: 2024
month: 12
day: 24
openTime:
hours: 10
minutes: 0
closeTime:
hours: 15
minutes: 0
startDate:
year: 2024
month: 12
day: 24
items:
type: object
properties:
closed:
type: boolean
example: true
endDate:
type: object
properties: { year: { type: integer, example: 2024 }, month: { type: integer, example: 12 }, day: { type: integer, example: 25 } }
openTime:
type: object
properties: { hours: { type: string, example: null, nullable: true }, minutes: { type: string, example: null, nullable: true } }
closeTime:
type: object
properties: { hours: { type: string, example: null, nullable: true }, minutes: { type: string, example: null, nullable: true } }
startDate:
type: object
properties: { year: { type: integer, example: 2024 }, month: { type: integer, example: 12 }, day: { type: integer, example: 25 } }
process_at:
type: string
example: '2026-03-30T00:37:25.000000Z'
notes:
type: string
example: 'Suscipit reiciendis ullam incidunt non ab cumque. Quia amet assumenda quis quidem eum officiis. Quas rem dolorum nemo sapiente eveniet.'
validateOnly:
type: boolean
example: true
401:
description: Unauthorized
content:
application/json:
schema:
type: object
example:
message: Unauthenticated
properties:
message:
type: string
example: Unauthenticated
tags:
- 'Google Locations'
delete:
summary: 'Delete Update'
operationId: deleteUpdate
description: ' This endpoint will delete a specific update for the specified Google location.'
parameters: []
responses:
204:
description: 'No Content'
content:
text/plain:
schema:
type: string
example: ''
401:
description: Unauthorized
content:
application/json:
schema:
type: object
example:
message: Unauthenticated
properties:
message:
type: string
example: Unauthenticated
tags:
- 'Google Locations'
parameters:
-
in: path
name: googleLocation_google_id
description: ''
example: 749845872867289688
required: true
schema:
type: 'The Google ID of the location attached to the update you want to show.'
-
in: path
name: pendingGoogleLocationUpdate_id
description: ''
example: 23
required: true
schema:
type: 'The ID of the update you want to show.'
/api/health:
get:
summary: Check
operationId: check
description: ' This endpoint will allow you to quickly check that you can authenticate to the API.'
parameters: []
responses:
200:
description: OK
content:
application/json:
schema:
type: object
example:
status: ok
properties:
status:
type: string
example: ok
401:
description: Unauthorized
content:
application/json:
schema:
type: object
example:
message: Unauthenticated
properties:
message:
type: string
example: Unauthenticated
tags:
- Health