Installation Request Flow
Technical overview of the 3rd-party integration installation process in Shift4 Marketplace.
Flow
The image below presents a simplified Installation Request Flow sequence diagram.
- A merchant clicks on install button for the desired integration
- Shift4 Marketplace redirects the merchant to a request form page which has merchant data prefilled from Lighthouse
- A merchant submits the form
- An installation request is created and 3rd party integration is notified via subscriptions mechanism
- Once onboarding is handled on 3rd party integration side a callback request is sent to Shift4 Marketplace to finalize the installation
- Depending on the onboarding result Shift4 Marketplace finalizes the installation
- If the installation is completed the merchant is notified via contact email that was provided in the request form
Shift4 Marketplace API
Retrieve the Installation Request
Returns installation request data
GET /marketplace/v2/locations/{locationId}/requests/installations/{guid}
Response 200
Installation Request template data
{
"state": "string",
"createdAt": "string",
"location": {
"id": 0,
"name": "string",
"timeZone": "string",
"merchantId": "string",
"countryCode": "US",
"currency": "USD",
"language": "en",
"brandRef": "string"
},
"restaurant": {
"name": "string",
"email": "string",
"addressLine1": "string",
"addressLine2": "string",
"city": "string",
"state": "string",
"zip": "string",
"hasIntegrationBusinessAccount": true,
"externalId": "string"
},
"contact": {
"firstName": "string",
"lastName": "string",
"email": "string",
"phone": "string"
},
"salesRepContact": {
"firstName": "string",
"lastName": "string",
"phone": "string",
"phoneExt": "string",
"email": "string"
},
"dealerContact": {
"company": "string",
"firstName": "string",
"lastName": "string",
"phone": "string",
"phoneExt": "string",
"email": "string"
}
}
Update Installation Request
Updates installation request with new values
PATCH /marketplace/v2/locations/{locationId}/requests/installations/{guid}
Request Body
Content-Type: application/json
{
"state": "FULFILLED"
}
Response 200
Installation Request data
{
"state": "IN_PROGRESS",
"createdAt": "string",
"location": {
"id": 0,
"name": "string",
"timeZone": "string",
"merchantId": "string",
"countryCode": "US",
"currency": "USD",
"language": "en",
"brandRef": "string"
},
"restaurant": {
"name": "string",
"email": "string",
"addressLine1": "string",
"addressLine2": "string",
"city": "string",
"state": "string",
"zip": "string",
"hasIntegrationBusinessAccount": true,
"externalId": "string"
},
"contact": {
"firstName": "string",
"lastName": "string",
"email": "string",
"phone": "string"
},
"salesRepContact": {
"firstName": "string",
"lastName": "string",
"phone": "string",
"phoneExt": "string",
"email": "string"
},
"dealerContact": {
"company": "string",
"firstName": "string",
"lastName": "string",
"phone": "string",
"phoneExt": "string",
"email": "string"
}
}
Definitions
- InstallationRequestUpdate
- LocationData
- InstallationRequestData
- InstallationRequestRestaurantData
- InstallationRequestContactData
InstallationRequestUpdate
Name | Type | Description |
---|---|---|
state* | string | A final installation state |
LocationData
Location data
Name | Type | Description |
---|---|---|
id* | integer | Location numeric ID |
name* | string | Location name |
timeZone* | string | Location timezone |
merchantId* | string | Merchant ID |
countryCode* | string | Two-letter ISO 3166-1 alpha-2 country code |
currency* | string | Three-letter ISO 4217 currency code |
language* | string | Two-letter ISO 639-1 language code |
brandRef* | string | Location brand reference |
InstallationRequestData
Name | Type | Description |
---|---|---|
state | string | Current installation request state (IN_PROGRESS, FULFILLED, REJECTED, CANCELLED) |
createdAt | string | UTC date-time |
location* | object | Location data |
restaurant | object | Installation Request Restaurant Data |
contact | object | Installation Request Contact Data |
salesRepContact | object | Sales Rep contact information |
dealerContact | object | Dealer contact information |
InstallationRequestRestaurantData
Installation Request Restaurant Data
Name | Type | Description |
---|---|---|
name | string | Restaurant name |
string | Restaurant email address | |
addressLine1 | string | Restaurant address line 1 |
addressLine2 | string | Restaurant address line 2 |
city | string | Restaurant city |
state | string | Restaurant state |
zip | string | Restaurant ZIP code |
hasIntegrationBusinessAccount | boolean | Describes whether the restaurant already has an integration's business account |
externalId | string | External id for 3rd party app |
InstallationRequestContactData
Installation Request Contact Data
Name | Type | Description |
---|---|---|
firstName | string | Contact's first name |
lastName | string | Contact's last name |
string | Contact's email address | |
phone | string | Contact's phone number |