Interface Order.Service

All Superinterfaces:
Maskable, ResultLimitable, Service
Enclosing class:
Order

@ApiService("SoftLayer_Product_Order")
public static interface Order.Service
extends Service
All orders (servers, virtual servers and services) pass through the [[SoftLayer_Product_Order]] service. This service provides the entry point for placing orders and quotes with SoftLayer. To place orders using these services, you must provide the appropriate container type as defined by [[SoftLayer_Container_Product_Order]]. For server orders, you would use [[SoftLayer_Container_Product_Order_Hardware_Server]]. For virtual server orders, you would use [[SoftLayer_Container_Product_Order_Virtual_Guest]]. For additional service orders, it will depend on the additional service (e.g., network attached storage, object storage) being purchased. See the data types documentation to get a list of all the available container types beginning with `SoftLayer_Container_Product_Order_*`.

There are several main entry points associated with ordering:

- [[SoftLayer_Product_Order/placeOrder]] Order servers and services. Your credit card or PayPal account will get charged when successfully placed.

- [[SoftLayer_Product_Order/verifyOrder]] Run verification on your order before it's actually placed to get additional information, like your total monthly or hourly recurring charges. You may also call this service to help ensure that your call to [[SoftLayer_Product_Order/placeOrder]] will succeed. **This service is called internally, so it is not required to verify before you call `placeOrder`.** No credit card or PayPal charges result from this call.

- [[SoftLayer_Product_Order/placeQuote]] Create a quote only. Subsequent orders may be placed from this quote. See [[SoftLayer_Billing_Order_Quote/placeOrder]] for details on how to order from a quote.

- [[SoftLayer_Product_Order/getVlans]] Get a list of available VLANs that can be supplied when placing an order.

While this service provides detailed customization for ordering, some customers may find the simplified ordering system sufficient for their needs. For more information, see the following:

- [[SoftLayer_Virtual_Guest/createObject]] - Simplified virtual server ordering

- [[SoftLayer_Hardware/createObject]] - Simplified bare metal server ordering
See Also:
SoftLayer_Product_Order
  • Method Details

    • asAsync

      Description copied from interface: Service
      Get an async version of this service
      Specified by:
      asAsync in interface Service
    • withNewMask

      Order.Mask withNewMask()
      Description copied from interface: Maskable
      Overwrite the existing mask on this service with a new one and return it
      Specified by:
      withNewMask in interface Maskable
    • withMask

      Order.Mask withMask()
      Description copied from interface: Maskable
      Use the existing mask on this service or create it if not present
      Specified by:
      withMask in interface Maskable
    • setMask

      void setMask​(Order.Mask mask)
    • checkItemAvailability

      @ApiMethod Boolean checkItemAvailability​(List<Price> itemPrices, Long accountId, List<String> availabilityTypeKeyNames)
      See Also:
      SoftLayer_Product_Order::checkItemAvailability
    • checkItemAvailabilityForImageTemplate

      @ApiMethod Boolean checkItemAvailabilityForImageTemplate​(Long imageTemplateId, Long accountId, Long packageId, List<String> availabilityTypeKeyNames)
      See Also:
      SoftLayer_Product_Order::checkItemAvailabilityForImageTemplate
    • checkItemConflicts

      @ApiMethod Boolean checkItemConflicts​(List<Price> itemPrices)
      Check order items for conflicts
      See Also:
      SoftLayer_Product_Order::checkItemConflicts
    • getExternalPaymentAuthorizationReceipt

      @ApiMethod Receipt getExternalPaymentAuthorizationReceipt​(String token, String payerId)
      This method simply returns a receipt for a previously finalized payment authorization from PayPal. The response matches the response returned from placeOrder when the order was originally placed with PayPal as the payment type.
      See Also:
      SoftLayer_Product_Order::getExternalPaymentAuthorizationReceipt
    • getNetworks

      @ApiMethod List<Network> getNetworks​(Long locationId, Long packageId, Long accountId)
      This method returns a collection of [[SoftLayer_Container_Product_Order_Network]] objects. This will contain the available networks that can be used when ordering services.

      If a location id is supplied, the list of networks will be trimmed down to only those that are available at that particular datacenter.

      If a package id is supplied, the list of public VLANs and subnets will be trimmed down to those that are available for that particular package.

      The account id is for internal use only and will be ignored when supplied by customers.
      See Also:
      SoftLayer_Product_Order::getNetworks
    • getResellerOrder

      @ApiMethod Order getResellerOrder​(Order orderContainer)
      When the account is on an external reseller brand, this service will provide a SoftLayer_Product_Order with the the pricing adjusted by the external reseller.
      See Also:
      SoftLayer_Product_Order::getResellerOrder
    • getTaxCalculationResult

      @ApiMethod Cache getTaxCalculationResult​(String orderHash)
      Sometimes taxes cannot be calculated immediately, so we start the calculations and let them run in the background. This method will return the current progress and information related to a specific tax calculation, which allows real-time progress updates on tax calculations.
      See Also:
      SoftLayer_Product_Order::getTaxCalculationResult
    • getVlans

      @ApiMethod Vlans getVlans​(Long locationId, Long packageId, String selectedItems, List<Long> vlanIds, List<Long> subnetIds, Long accountId, Order orderContainer, Boolean hardwareFirewallOrderedFlag)
      Return collections of public and private VLANs that are available during ordering. If a location ID is provided, the resulting VLANs will be limited to that location. If the Virtual Server package id (46) is provided, the VLANs will be narrowed down to those locations that contain routers with the VIRTUAL_IMAGE_STORE data attribute.

      For the selectedItems parameter, this is a comma-separated string of category codes and item values. For example:

      - `port_speed=10,guest_disk0=LOCAL_DISK`

      - `port_speed=100,disk0=SAN_DISK`

      - `port_speed=100,private_network_only=1,guest_disk0=LOCAL_DISK`

      This parameter is used to narrow the available results down even further. It's not necessary when selecting a VLAN, but it will help avoid errors when attempting to place an order. The only acceptable category codes are:

      - `port_speed`

      - A disk category, such as `guest_disk0` or `disk0`, with values of either `LOCAL_DISK` or `SAN_DISK`

      - `private_network_only`

      - `dual_path_network`

      For most customers, it's sufficient to only provide the first 2 parameters.
      See Also:
      SoftLayer_Product_Order::getVlans
    • placeOrder

      @ApiMethod Receipt placeOrder​(Order orderData, Boolean saveAsQuote)

      Use this method to place bare metal server, virtual server and additional service orders with SoftLayer.
      Upon success, your credit card or PayPal account will incur charges for the monthly order total
      (or prorated value if ordered mid billing cycle). If all products on the order are only billed hourly,
      you will be charged on your billing anniversary date, which occurs monthly on the day you ordered your first
      service with SoftLayer. For new customers, you are required to provide billing information when you place an order.
      For existing customers, the credit card on file will be charged. If you're a PayPal customer, a URL will be
      returned from the call to [[SoftLayer_Product_Order/placeOrder]] which is to be used to finish the authorization
      process. This authorization tells PayPal that you indeed want to place an order with SoftLayer.
      From PayPal's web site, you will be redirected back to SoftLayer for your order receipt.


      When an order is placed, your order will be in a "pending approval" state. When all internal checks pass,
      your order will be automatically approved. For orders that may need extra attention, a Sales representative
      will review the order and contact you if necessary. Once the order is approved, your server or service will
      be provisioned and available to you shortly thereafter. Depending on the type of server or service ordered,
      provisioning times will vary.


      ## Order Containers



      When placing API orders, it's important to order your server and services on the appropriate
      [[SoftLayer_Container_Product_Order]]. Failing to provide the correct container may delay your server or service
      from being provisioned in a timely manner. Some common order containers are included below.


      **Note:** `SoftLayer_Container_Product_Order_` has been removed from the containers in the table below for readability.


      | Product | Order Container | Package Type |
      | ------- | --------------- | ------------ |
      | Bare metal server by CPU | [[SoftLayer_Container_Product_Order_Hardware_Server]] | BARE_METAL_CPU |
      | Bare metal server by core | [[SoftLayer_Container_Product_Order_Hardware_Server]] | BARE_METAL_CORE |
      | Virtual server | [[SoftLayer_Container_Product_Order_Virtual_Guest]] | VIRTUAL_SERVER_INSTANCE |
      | DNS domain registration | [[SoftLayer_Container_Product_Order_Dns_Domain_Registrationn]] | ADDITIONAL_SERVICES |
      | Local & dedicated load balancers | [[SoftLayer_Container_Product_Order_Network_LoadBalancer]] | ADDITIONAL_SERVICES_LOAD_BALANCER |
      | Content delivery network | [[SoftLayer_Container_Product_Order_Network_ContentDelivery_Account]] | ADDITIONAL_SERVICES_CDN |
      | Content delivery network Addon | [[SoftLayer_Container_Product_Order_Network_ContentDelivery_Account_Addon]] | ADDITIONAL_SERVICES_CDN_ADDON |
      | Hardware & software firewalls | [[SoftLayer_Container_Product_Order_Network_Protection_Firewall]] | ADDITIONAL_SERVICES_FIREWALL |
      | Dedicated firewall | [[SoftLayer_Container_Product_Order_Network_Protection_Firewall_Dedicated]] | ADDITIONAL_SERVICES_FIREWALL |
      | Object storage | [[SoftLayer_Container_Product_Order_Network_Storage_Object]] | ADDITIONAL_SERVICES_OBJECT_STORAGE |
      | Object storage (hub) | [[SoftLayer_Container_Product_Order_Network_Storage_Hub]] | ADDITIONAL_SERVICES_OBJECT_STORAGE |
      | Network attached storage | [[SoftLayer_Container_Product_Order_Network_Storage_Nas]] | ADDITIONAL_SERVICES_NETWORK_ATTACHED_STORAGE |
      | Iscsi storage | [[SoftLayer_Container_Product_Order_Network_Storage_Iscsi]] | ADDITIONAL_SERVICES_ISCSI_STORAGE |
      | Evault | [[SoftLayer_Container_Product_Order_Network_Storage_Backup_Evault_Vault]] | ADDITIONAL_SERVICES |
      | Evault Plugin | [[SoftLayer_Container_Product_Order_Network_Storage_Backup_Evault_Plugin]] | ADDITIONAL_SERVICES |
      | Application delivery appliance | [[SoftLayer_Container_Product_Order_Network_Application_Delivery_Controller]] | ADDITIONAL_SERVICES_APPLICATION_DELIVERY_APPLIANCE |
      | Network subnet | [[SoftLayer_Container_Product_Order_Network_Subnet]] | ADDITIONAL_SERVICES |
      | Global IPv4 | [[SoftLayer_Container_Product_Order_Network_Subnet]] | ADDITIONAL_SERVICES_GLOBAL_IP_ADDRESSES |
      | Global IPv6 | [[SoftLayer_Container_Product_Order_Network_Subnet]] | ADDITIONAL_SERVICES_GLOBAL_IP_ADDRESSES |
      | Network VLAN | [[SoftLayer_Container_Product_Order_Network_Vlan]] | ADDITIONAL_SERVICES_NETWORK_VLAN |
      | Portable storage | [[SoftLayer_Container_Product_Order_Virtual_Disk_Image]] | ADDITIONAL_SERVICES_PORTABLE_STORAGE |
      | SSL certificate | [[SoftLayer_Container_Product_Order_Security_Certificate]] | ADDITIONAL_SERVICES_SSL_CERTIFICATE |
      | External authentication | [[SoftLayer_Container_Product_Order_User_Customer_External_Binding]] | ADDITIONAL_SERVICES |
      | Dedicated Host | [[SoftLayer_Container_Product_Order_Virtual_DedicatedHost]] | DEDICATED_HOST |


      ## Server example



      This example includes a single bare metal server being ordered with monthly billing.


      **Warning:** the price ids provided below may be outdated or unavailable, so you will need to determine the

      available prices from the bare metal server [[SoftLayer_Product_Package/getAllObjects]], which have a
      [[SoftLayer_Product_Package_Type]] of `BARE_METAL_CPU` or `BARE_METAL_CORE`. You can get a full list of
      package types with [[SoftLayer_Product_Package_Type/getAllObjects]].


      ### Bare Metal Ordering

      ```xml



      your username
      your api key







      example.com
      server1


      138124
      142


      58


      22337


      21189


      876


      57


      55


      21190


      36381


      21


      22013


      906


      420


      418


      342


      false





      ```


      ## Virtual server example



      This example includes 2 identical virtual servers (except for hostname) being ordered for hourly billing.
      It includes an optional image template id and VLAN data specified on the virtualGuest objects -
      `primaryBackendNetworkComponent` and `primaryNetworkComponent`.


      **Warning:** the price ids provided below may be outdated or unavailable, so you will need to determine the

      available prices from the virtual server package with [[SoftLayer_Product_Package/getAllObjects]],
      which has a [[SoftLayer_Product_Package_Type]] of `VIRTUAL_SERVER_INSTANCE`.


      #### Virtual Ordering

      ```xml



      your username
      your api key





      13251
      37473
      46


      2159


      55


      13754


      1641


      905


      1800


      58


      21


      1645


      272


      57


      418


      420


      2
      true


      example.com
      server1


      12345




      67890




      example.com
      server2


      12345




      67890









      ```


      ## VLAN example


      **Warning:** the price ids provided below may be outdated or unavailable, so you will need to determine the

      available prices from the additional services pacakge with [[SoftLayer_Product_Package/getAllObjects]],
      which has a [[SoftLayer_Product_Package_Type]] of `ADDITIONAL_SERVICES`.
      You can get a full list of [[SoftLayer_Product_Package_Type/getAllObjects|]] to find other available additional
      service packages.




      ### VLAN Ordering

      ```xml



      your username
      your api key





      154820
      0


      2021


      2018


      true





      ```


      ## Multiple products example



      This example includes a combination of the above examples in a single order. Note that all the configuration
      options for each individual order container are the same as above, except now we encapsulate each one within
      the `orderContainers` property on the base [[SoftLayer_Container_Product_Order]].


      **Warning:** not all products are available to be ordered with other products. For example, since

      SSL certificates require validation from a 3rd party, the approval process may take days or even weeks,
      and this would not be acceptable when you need your hourly virtual server right now. To better accommodate
      customers, we restrict several products to be ordered individually.


      ### Bare metal server + virtual server + VLAN



      ```xml



      your username
      your api key







      ...


      ...


      ...







      ```

      See Also:
      SoftLayer_Product_Order::placeOrder
    • placeQuote

      @ApiMethod Receipt placeQuote​(Order orderData)
      Use this method for placing server quotes and additional services quotes. The same applies for this as with verifyOrder. Send in the SoftLayer_Container_Product_Order_Hardware_Server for server quotes. After placing the quote, you must go to this URL to finish the order process. After going to this URL, it will direct you back to a SoftLayer webpage that tells us you have finished the process. After this, it will go to sales for final approval.
      See Also:
      SoftLayer_Product_Order::placeQuote
    • processExternalPaymentAuthorization

      @ApiMethod Order processExternalPaymentAuthorization​(String token, String payerId)
      This method simply finalizes an authorization from PayPal. It tells SoftLayer that the customer has completed the PayPal process. This is ONLY needed if you, the customer, have your own API into PayPal and wish to automate authorizations from PayPal and our system. For most, this method will not be needed. Once an order is placed using placeOrder() for PayPal customers, a URL is given back to the customer. In it is the token and PayerID. If you want to systematically pay with PayPal, do so then call this method with the token and PayerID.
      See Also:
      SoftLayer_Product_Order::processExternalPaymentAuthorization
    • requiredItems

      @ApiMethod List<Item> requiredItems​(List<Price> itemPrices)
      Get list of items that are required with the item prices provided
      See Also:
      SoftLayer_Product_Order::requiredItems
    • verifyOrder

      @ApiMethod Order verifyOrder​(Order orderData)
      This service is used to verify that an order meets all the necessary requirements to purchase a server, virtual server or service from SoftLayer. It will verify that the products requested do not conflict. For example, you cannot order a Windows firewall with a Linux operating system. It will also check to make sure you have provided all the products that are required for the [[SoftLayer_Product_Package_Order_Configuration]] associated with the [[SoftLayer_Product_Package]] on each of the [[SoftLayer_Container_Product_Order]] specified.



      This service returns the same container that was provided, but with additional information that can be used for debugging or validation. It will also contain pricing information (prorated if applicable) for each of the products on the order. If an exception occurs during verification, a container with the SoftLayer_Exception_Order exception type will be specified in the result.



      verifyOrder accepts the same [[SoftLayer_Container_Product_Order]] as placeOrder, so see [[SoftLayer_Product_Order/placeOrder]] for more details.

      See Also:
      SoftLayer_Product_Order::verifyOrder