A service can be created under a seller, which would appear in the marketplace for brokers. However, before creating the service, a request will have to be performed in order to retrieve a list of categories which is a required input parameter when creating a service.

NOTE! Creating a Seller service can be done through the Cloudmore user interface or API. This guide will focus on API usage.
API Details
| SellerServices | |||
| Operation | Swagger Description | Method | API |
| Create Service | Creates new service for the seller | POST | /api/sellers/{sellerId}/services |
| Return a Service | Returns seller service by identifier | GET | /api/sellers/{sellerId}/services/{id} |
| Return all Services | Returns all seller services | GET | /api/sellers/{sellerId}/services |
| Update a Service | Updates service for the seller | PUT | /api/sellers/{sellerId}/services/{id} |
| Delete a Service | Disables service for the seller | DELETE | /api/sellers/{sellerId}/services/{id} |
| Other | |||
| Return a list of resellers with the service | Returns the list of resellers who has signed seller’s services | GET | /api/sellers/{sellerId}/services/{serviceId}/resellers |
| Return services custom properties | Returns seller service custom property data | GET | /api/sellers/{sellerId}/services/{id}/custom-properties-data |
| Return a list of categories | Retrieve service categories | GET | /api/services/categories |
API Examples
Retrieve Categories
| Retrieve a list of categories | |
|---|---|
| End Point | /api/services/categories |
| HTTP Method | GET |
| Request Body | N/A. |
| Successful Example Response | 200[ { "categoryId": "f2443537-5686-466f-8d0e-0427231d0417", "name": "Backup & Security", "description": null }, { "categoryId": "cf96c4f5-d7c2-4f37-b9ff-7dfbf0c4b5f7", "name": "Business Intelligence & Analytics", "description": null }, { "categoryId": "0e96c34f-d402-449d-b2b3-87b6e0986a96", "name": "Collaboration", "description": null }, { "categoryId": "9e5f4e1a-d298-4b7f-b4ac-9d03239a2653", "name": "Communication & Collaboration", "description": null } ] |
Create Service
| Create a Service | |
|---|---|
| End Point | /api/sellers/{sellerId}/services |
| HTTP Method | POST |
| Request Body | { "serviceName": "Google Workspace (Integrations Guide Service)", "vendor": "Google", "categories": [ "9e5f4e1a-d298-4b7f-b4ac-9d03239a2653" ], "enableExternalResellerAdmins": true, "enableExternalOrganizationAdmins": true, "customProperties": [ { "type": "TextBox", "propertyId": "account_id", "name": "Account Id", "defaultValue": "", "visible": true, "mandatory": true, "allowedValues": [ "" ], "appliesToOrganizations": false, "appliesToBrokers": true, "appliesToSeller": false }, { "type": "TextBox", "propertyId": "adminFirstName", "name": "Organization Admin First Name", "defaultValue": "", "visible": true, "mandatory": true, "allowedValues": [ "" ], "appliesToOrganizations": true, "appliesToBrokers": false, "appliesToSeller": false }, { "type": "TextBox", "propertyId": "adminLastName", "name": "Organization Admin Last Name", "defaultValue": "", "visible": true, "mandatory": true, "allowedValues": [ "" ], "appliesToOrganizations": true, "appliesToBrokers": false, "appliesToSeller": false }, { "type": "TextBox", "propertyId": "domain", "name": "Domain", "defaultValue": "", "visible": true, "mandatory": true, "allowedValues": [ "" ], "appliesToOrganizations": true, "appliesToBrokers": true, "appliesToSeller": false }, { "type": "CheckBox", "propertyId": "cloudIdentityExists", "name": "Cloud Identity Exists", "defaultValue": "", "visible": false, "mandatory": false, "allowedValues": [ "" ], "appliesToOrganizations": false, "appliesToBrokers": true, "appliesToSeller": false }, { "type": "TextBox", "propertyId": "customerId", "name": "Customer Id", "defaultValue": "", "visible": false, "allowedValues": [ "" ], "appliesToOrganizations": true, "appliesToBrokers": false, "appliesToSeller": false }, { "type": "TextBox", "propertyId": "siteVerificationToken", "name": "Site Verification Token", "defaultValue": "", "visible": false, "allowedValues": [ "" ], "appliesToOrganizations": true, "appliesToBrokers": false, "appliesToSeller": false }, { "type": "TextBox", "propertyId": "siteVerification", "name": "Site Verification", "defaultValue": "", "visible": false, "allowedValues": [ "" ], "appliesToOrganizations": true, "appliesToBrokers": false, "appliesToSeller": false } ], "allowStartDateChanges": "None", "generateBilling": true, "allowDoNotBillInitialPeriod": false, "enableLicenseKey": false, "enableExternalPortal": true, "externalPortalName": "Google Workspace", "externalPortalURL": "https://workspace.google.com/", "generateBillingDayOfMonth": 1, "userAssignedService": true, "allowMultipleUsers": false, "onlyOneSubscription": false, "displayOnly": false, "provisioningAction": "ServiceConnector", } |
| Successful Example Response | 201 |
| Error Example Response | 400{ "provisioningAction": [ "The input was not valid." ] }{ "provisioningAction": [ "The input was not valid." ], "categories[0]": [ "The input was not valid." ] } |
Field Definitions
| Field | Description |
| serviceName* | The name of the service. |
| vendor* | The name of the vendor. |
| categories* | Categories that the service belongs to. Available categories can be retrieved at /api/services/categories. |
| generateBillingDayOfMonth* | The day of the month that billing generation should be done. |
| enableExternalResellerAdmins | External admins enable resellers to create and manage external admins in Cloudmore. |
| enableExternalOrganizationAdmins | External admins enable organizations to create and manage external admins in Cloudmore. |
| customProperties | Custom Properties The custom property values are defined and then can be set when Seller publishes serviceReseller adds serviceOrganization adds service |
| allowStartDateChanges | Determines when a service billing start date can be set. Some customers want to start in the future. Some customers want to include historical data and set it in the past. |
| generateBilling | Set this to true to auto-generate billing data for the service. |
| allowDoNotBillInitialPeriod | Determines if the billing records will be generated for the past period (up until the date of adding the service). Only viable if the start date is in the past. |
| enableLicenseKey | Enable the license key field, which can be set when a subscription is created. |
| enableExternalPortal | Determines if an external link should be shown. |
| externalPortalName | Shows the link name. |
| externalPortalURL | The link to be used for the external portal. |
| welcomeBrokerTemplateId | Send a notification message to brokers when they add a service. The option will be disabled if the template id is not provided. |
| userAssignedService | Determines if the service will be assigned to specific organization users. |
| allowMultipleUsers | Allow for users to be assigned to multiple subscriptions. |
| onlyOneSubscription | Allow only one subscription to be created. |
| displayOnly | Shows if this is a display-only service in the marketplace. |
| provisioningAction | Email – Every time a broker adds this service, an e-mail will be sent to the seller user.Cloudmore Service Connector – Webhook Integration |
| welcomeTemplateId | Send a notification message to organization users when they add a service. The option will be disabled if the template id is not provided. |