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/v1/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: 'Thomas Ltd' locations: [] properties: data: type: object properties: name: type: string example: 'Thomas 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/v1/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: '65256199' name: 'Harrison Ltd' googleRating: 3.2 preciseGoogleRating: 3.2366 reviewsCount: 152 site: baker.com address: "41 Wilson Keys\nDuncanhaven\nOL12 7TX" 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: '6140039' name: 'Richards Ltd' googleRating: 4.6 preciseGoogleRating: 4.5843 reviewsCount: 171 site: brown.com address: "Flat 90z\nAva Road\nEast Keith\nFK2 8DB" 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: '65256199' name: 'Harrison Ltd' googleRating: 3.2 preciseGoogleRating: 3.2366 reviewsCount: 152 site: baker.com address: "41 Wilson Keys\nDuncanhaven\nOL12 7TX" 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: '6140039' name: 'Richards Ltd' googleRating: 4.6 preciseGoogleRating: 4.5843 reviewsCount: 171 site: brown.com address: "Flat 90z\nAva Road\nEast Keith\nFK2 8DB" 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: '65256199' name: type: string example: 'Harrison Ltd' googleRating: type: number example: 3.2 preciseGoogleRating: type: number example: 3.2366 reviewsCount: type: integer example: 152 site: type: string example: baker.com address: type: string example: "41 Wilson Keys\nDuncanhaven\nOL12 7TX" 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/v1/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: '94733922' name: 'Khan Ltd' googleRating: 3.9 preciseGoogleRating: 3.8581 reviewsCount: 162 site: morris.biz address: "47 Collins Burgs\nHollyborough\nG77 6DL" 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: '94733922' name: type: string example: 'Khan Ltd' googleRating: type: number example: 3.9 preciseGoogleRating: type: number example: 3.8581 reviewsCount: type: integer example: 162 site: type: string example: morris.biz address: type: string example: "47 Collins Burgs\nHollyborough\nG77 6DL" 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: 'Davis Ltd' profile: description: 'Dolor aperiam voluptate sit voluptatem. Nemo quos nam qui natus omnis eos itaque. Voluptatem placeat a sed quas tempora sit accusamus.' phoneNumbers: primaryPhone: '0349 245 9232' addititionalPhones: [] websiteUrl: fox.com storefrontAddress: postalCode: 'W10 6DY' locality: Quentinport addressLines: - '1 Cooper Hill' - '' - '' - '' - '' 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-07-04T16:22:51.000000Z' notes: 'Nemo suscipit nostrum temporibus ex commodi ut. Rem quae eaque sint adipisci. Autem fuga ab qui.' validateOnly: false properties: data: type: object properties: id: type: string example: null nullable: true payload: type: object properties: title: type: string example: 'Davis Ltd' profile: type: object properties: description: type: string example: 'Dolor aperiam voluptate sit voluptatem. Nemo quos nam qui natus omnis eos itaque. Voluptatem placeat a sed quas tempora sit accusamus.' phoneNumbers: type: object properties: primaryPhone: type: string example: '0349 245 9232' addititionalPhones: type: array example: [] websiteUrl: type: string example: fox.com storefrontAddress: type: object properties: postalCode: type: string example: 'W10 6DY' locality: type: string example: Quentinport addressLines: type: array example: - '1 Cooper Hill' - '' - '' - '' - '' 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-07-04T16:22:51.000000Z' notes: type: string example: 'Nemo suscipit nostrum temporibus ex commodi ut. Rem quae eaque sint adipisci. Autem fuga ab qui.' validateOnly: type: boolean example: false 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/v1/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: 'Edwards Ltd' profile: description: 'Consequatur iste rerum earum voluptas aperiam aut qui. Voluptas vel veniam velit. Odio deleniti ea porro quae ut.' phoneNumbers: primaryPhone: '+44(0)1035 88411' addititionalPhones: [] websiteUrl: watson.com storefrontAddress: postalCode: 'CF48 2SR' locality: Huntermouth addressLines: - '149 Wright Common' - '' - '' - '' - '' 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-07-09T16:22:51.000000Z' notes: 'Sequi delectus hic tempore quibusdam eligendi. Minima qui praesentium modi et et ut. Accusamus culpa vel atque et sapiente.' validateOnly: true - id: null payload: title: 'King Ltd' profile: description: 'Ea vitae quibusdam omnis vel maiores nulla. Ut harum sed fuga libero est. Repudiandae quis quis earum reiciendis nihil vero omnis sapiente.' phoneNumbers: primaryPhone: '(0293) 4584776' addititionalPhones: [] websiteUrl: chapman.com storefrontAddress: postalCode: 'YO32 9SX' locality: 'New Charlotte' addressLines: - "Flat 94x\nOliver Fords" - '' - '' - '' - '' 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-06-28T16:22:51.000000Z' notes: 'Iusto corporis rerum voluptas rem eum sint quaerat. Doloribus corrupti aut esse illum. Porro minus veniam accusamus repellat dolorum.' validateOnly: true properties: data: type: array example: - id: null payload: title: 'Edwards Ltd' profile: description: 'Consequatur iste rerum earum voluptas aperiam aut qui. Voluptas vel veniam velit. Odio deleniti ea porro quae ut.' phoneNumbers: primaryPhone: '+44(0)1035 88411' addititionalPhones: [] websiteUrl: watson.com storefrontAddress: postalCode: 'CF48 2SR' locality: Huntermouth addressLines: - '149 Wright Common' - '' - '' - '' - '' 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-07-09T16:22:51.000000Z' notes: 'Sequi delectus hic tempore quibusdam eligendi. Minima qui praesentium modi et et ut. Accusamus culpa vel atque et sapiente.' validateOnly: true - id: null payload: title: 'King Ltd' profile: description: 'Ea vitae quibusdam omnis vel maiores nulla. Ut harum sed fuga libero est. Repudiandae quis quis earum reiciendis nihil vero omnis sapiente.' phoneNumbers: primaryPhone: '(0293) 4584776' addititionalPhones: [] websiteUrl: chapman.com storefrontAddress: postalCode: 'YO32 9SX' locality: 'New Charlotte' addressLines: - "Flat 94x\nOliver Fords" - '' - '' - '' - '' 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-06-28T16:22:51.000000Z' notes: 'Iusto corporis rerum voluptas rem eum sint quaerat. Doloribus corrupti aut esse illum. Porro minus veniam accusamus repellat dolorum.' validateOnly: true items: type: object properties: id: type: string example: null nullable: true payload: type: object properties: title: type: string example: 'Edwards Ltd' profile: type: object properties: description: type: string example: 'Consequatur iste rerum earum voluptas aperiam aut qui. Voluptas vel veniam velit. Odio deleniti ea porro quae ut.' phoneNumbers: type: object properties: primaryPhone: type: string example: '+44(0)1035 88411' addititionalPhones: type: array example: [] websiteUrl: type: string example: watson.com storefrontAddress: type: object properties: postalCode: type: string example: 'CF48 2SR' locality: type: string example: Huntermouth addressLines: type: array example: - '149 Wright Common' - '' - '' - '' - '' 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-07-09T16:22:51.000000Z' notes: type: string example: 'Sequi delectus hic tempore quibusdam eligendi. Minima qui praesentium modi et et ut. Accusamus culpa vel atque et sapiente.' 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: qui 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/v1/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: 'Moore Ltd' profile: description: 'Rerum vel mollitia ut. Assumenda harum non reiciendis numquam sit voluptas. Illo iusto delectus dolorum animi consectetur.' phoneNumbers: primaryPhone: '+44(0)1560 89623' addititionalPhones: [] websiteUrl: thompson.com storefrontAddress: postalCode: 'CM22 6DR' locality: 'West Mandy' addressLines: - "Flat 83\nWard Land" - '' - '' - '' - '' 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-07-02T16:22:51.000000Z' notes: 'Et magnam ut aut reprehenderit veniam dolores illo amet. Molestias quisquam in enim recusandae tempora autem quos. Delectus occaecati esse ipsam molestiae qui libero ab.' validateOnly: true properties: data: type: object properties: id: type: string example: null nullable: true payload: type: object properties: title: type: string example: 'Moore Ltd' profile: type: object properties: description: type: string example: 'Rerum vel mollitia ut. Assumenda harum non reiciendis numquam sit voluptas. Illo iusto delectus dolorum animi consectetur.' phoneNumbers: type: object properties: primaryPhone: type: string example: '+44(0)1560 89623' addititionalPhones: type: array example: [] websiteUrl: type: string example: thompson.com storefrontAddress: type: object properties: postalCode: type: string example: 'CM22 6DR' locality: type: string example: 'West Mandy' addressLines: type: array example: - "Flat 83\nWard Land" - '' - '' - '' - '' 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-07-02T16:22:51.000000Z' notes: type: string example: 'Et magnam ut aut reprehenderit veniam dolores illo amet. Molestias quisquam in enim recusandae tempora autem quos. Delectus occaecati esse ipsam molestiae qui libero ab.' 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' 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/v1/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: 'Khan Ltd' profile: description: 'Harum similique velit omnis aspernatur dolores. Labore provident sunt repellendus. Velit error laboriosam voluptatem omnis et corporis omnis.' phoneNumbers: primaryPhone: '06102352678' addititionalPhones: [] websiteUrl: richards.com storefrontAddress: postalCode: 'G12 9BH' locality: 'South Mikemouth' addressLines: - '55 Rob Plains' - '' - '' - '' - '' 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-07-09T16:22:51.000000Z' notes: 'Distinctio iusto tempore sequi laboriosam laudantium quis quae. Aut porro dolores mollitia pariatur maxime aut molestias est. Nulla sunt dolor ab sed aut.' validateOnly: true properties: data: type: object properties: id: type: string example: null nullable: true payload: type: object properties: title: type: string example: 'Khan Ltd' profile: type: object properties: description: type: string example: 'Harum similique velit omnis aspernatur dolores. Labore provident sunt repellendus. Velit error laboriosam voluptatem omnis et corporis omnis.' phoneNumbers: type: object properties: primaryPhone: type: string example: '06102352678' addititionalPhones: type: array example: [] websiteUrl: type: string example: richards.com storefrontAddress: type: object properties: postalCode: type: string example: 'G12 9BH' locality: type: string example: 'South Mikemouth' addressLines: type: array example: - '55 Rob Plains' - '' - '' - '' - '' 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-07-09T16:22:51.000000Z' notes: type: string example: 'Distinctio iusto tempore sequi laboriosam laudantium quis quae. Aut porro dolores mollitia pariatur maxime aut molestias est. Nulla sunt dolor ab sed aut.' 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/v1/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