A client-owned service.
A Service is an instance of a Product purchased by a Client by way of an Order and, optionally, provisioned to a Server by a provisioning module.
Services are attached to a Domain name. The status of the attached domain name is tracked here.
The payment gateway used, the recurring amount and billing cycle, as well as the initial payment used to activate this product are recorded here.
If the provisioning module provides instrumentation for tracking bandwidth and disk space usage, it is tracked and stored in this object.
If the Service requires a username and password to utilize, those are tracked here.
If this Service is suspended, the reason for the suspension is stored here. Instanced Services can also be made immune to automatic suspension by WHMCS, for a specific time period or until suspensions are intentionally re-allowed. This can allow the operator to cause a Service to remain active despite WHMCS's billing rules. (For example, the operator may flag the operator's own websites as immune from suspension, while utilizing all the other management features of WHMCS).
Dedicated IP addresses and the nameservers for the Domain attached to this Service are stored in this object.
This Service can act as a parent to various Service\Addons, which provide additional features beyond the configuration of the Product this Service was instanced from.
Any CancellationRequests for this server can also be accessed via this object.
|int||$id||Unique ID for this service.|
|int||$clientId||ID of client who owns this service.|
|int||$orderId||ID of order used to purchase this service.|
|int||$packageId||ID of package purchased in the order for this service.|
|int||$serverId||ID of server this service has been provisioned to.|
|Carbon||$registrationDate||Date this service was purchased.|
|string||$domain||Domain name this service is registered under.|
|string||$paymentGateway||English language internal name for the gateway used to originally purchase this service.|
|float||$firstPaymentAmount||The first amount paid for this service.|
|float||$recurringAmount||The recurring payment amount for this service.|
|string||$billingCycle||English language internal name of this service's billing cycle from this set: 'Free Account', 'One Time', 'Monthly', 'Quarterly', 'Semi-Annually', 'Annually', 'Biennially', 'Triennially'|
|string||$nextDueDate||Date next payment is due.|
|string||$nextInvoiceDate||Date next invoice will be generated.|
|string||$terminationDate||Date the service was Terminated or Cancelled.|
|string||$completedDate||Date the service was Completed.|
|string||$status||Alias of domainStatus|
|string||$domainStatus||English language internal name of status of this service, from this set: 'Pending', 'Active', 'Suspended', 'Terminated', 'Cancelled', 'Fraud' (Additionally custom status may exist)|
|string||$username||Username associated with this service (for external control panels, etc)|
|string||$password||Password associated with this service.|
|string||$notes||Admin custom notes, with expectation that client will not see them.|
|string||$subscriptionId||If the service is a recurring service, and a payment gateway which supports subscriptions have been used (such as PayPal), the subscription ID for the payment gateway is stored here.|
|int||$promotionId||ID of promotion used when purchasing this service, or null otherwise.|
|int||$promotionCount||Number of times the associated promotion has been used while invoicing this service. Setting to null will see WHMCS use invoice item count to determine correct value during invoice generation.|
|string||$suspendReason||An admin provided string as to why a suspension was enacted on this service.|
|bool||$overrideAutoSuspend||If true, WHMCS will not attempt to automatically suspend this service.|
|Carbon||$overrideSuspendUntilDate||If Auto Suspend is not overridden, on this date the service will be automatically suspended.|
|string||$dedicatedIp||If the service provides a dedicated IP address, it is stored here.|
|string||$assignedIps||If the service is assigned to IP addresses, those addresses will appear as comma delimited strings here.|
|string||$ns1||If the service requires a nameserver (such as a domain name), the first nameserver is stored here.|
|string||$ns2||If the service requires a second nameserver, that nameserver is stored here.|
|int||$diskUsage||If the service's module provides disk usage telemetry, that value is stored here.|
|int||$diskLimit||If the service was purchased with a disk usage limit, that limit is stored here.|
|int||$bandwidthUsage||If the service's module provides bandwidth usage telemetry, that value is stored here.|
|int||$bandwidthLimit||If the service was purchased with a disk usage limit, that limit is stored here.|
|string|null||$domainPunycode||The punycoded value for a domain|
|Carbon|string||$nextDueDateFormatted||Client formatted display for next Due Date|
|Carbon|string||$registrationDateFormatted||Client formatted display for Registration Date|
|array||$nextDueDateProperties||An array of Next Due Date values used within the template. isPast, isFuture, and daysTillExpiry.|
|Carbon||$lastUpdateDate||Date this service was last modified.|
|Carbon||$createdAt||Date this service was created.|
|Carbon||$updatedAt||Date this service was last modified.|
|Client||$client||Client object which owns this service.|
|Product||$product||Product associated with this service.|
|Collection|Addon||$addons||Addons purchased alongside this service.|
|Collection|CancellationRequest||$cancellationRequests||Any cancellation requests related to this service.|
|Collection|Queue||$failedActions||Any failed actions related to this service.|
|Return Type||Method Name||Description|
|Builder||scopeUserId(Builder $query, int $userId)||-|
|Builder||scopeDomain(Builder $query, string $domain)||-|
|Builder||scopeMarketConnect(Builder $query)||Filter for only MarketConnect services.|
|BelongsTo||client()||Each service belongs to one client.|
|BelongsTo||product()||Each service is an instance of a product.|
|HasMany||paymentGateway()||Each service has many payment gateway records.|
|HasMany||addons()||Each service can have many addons|
|BelongsTo||order()||A domain belongs to a single order.|
|HasOne||promotion()||Each service can have one promotion.|
|HasMany||cancellationRequests()||Each service can have many cancellation requests|
|HasMany||ssl()||Each service could have many ssl records.|
|bool||hasAvailableUpgrades()||Determine if a service has available upgrades.|
|bool||canBeUpgraded()||Determine if service can be upgraded.|
|bool||isService()||Is this entity a service?|
|bool||isAddon()||Is this entity an addon?|
|belongsTo||serverModel()||Each service may belong to a server.|
|string||legacyProvision()||Run provision action in legacy mode.|
|ServiceMetric||metrics($onlyBilledMetrics = false, $mode = null)||-|
|Service|null||getParentalSiblingAttribute()||Locate another Service that appears to be related to this service in a parental relationship.|
scopeUserId (Builder $query, int $userId)
scopeDomain (Builder $query, string $domain)
scopeActive (Builder $query)
scopeMarketConnect (Builder $query)
Filter for only MarketConnect services.
scopeIsConsideredActive (Builder $query)
scopeIsNotRecurring (Builder $query)
Each service belongs to one client.
Each service is an instance of a product.
Each service has many payment gateway records.
Each service can have many addons
A domain belongs to a single order.
Each service can have one promotion.
Each service can have many cancellation requests
Each service could have many ssl records.
Determine if a service has available upgrades.
Determine if service can be upgraded.
Is this entity a service?
Is this entity an addon?
Each service may belong to a server.
Run provision action in legacy mode.
Legacy mode returns 'success' on success and an error message string on failure.
metrics ($onlyBilledMetrics = false, $mode = null)
getUniqueIdentifierValue (string $uniqueIdField)
Locate another Service that appears to be related to this service in a parental relationship.
This is despite $this Service not being an Addon to another Service. Thus a result from this method implies $this Service is a pseudo-addon. Eg. SSL service ordered independently, but with the same domain as a hosting Service; return the hosting Service as a "parent".