

# PurchaseOffering
<a name="API_PurchaseOffering"></a>

Immediately purchases offerings for an AWS account. Offerings renew with the latest total purchased quantity for an offering, unless the renewal was overridden. The API returns a `NotEligible` error if the user is not permitted to invoke the operation. If you must be able to invoke this operation, contact [aws-devicefarm-support@amazon.com](mailto:aws-devicefarm-support@amazon.com).

## Request Syntax
<a name="API_PurchaseOffering_RequestSyntax"></a>

```
{
   "offeringId": "string",
   "offeringPromotionId": "string",
   "quantity": number
}
```

## Request Parameters
<a name="API_PurchaseOffering_RequestParameters"></a>

For information about the parameters that are common to all actions, see [Common Parameters](CommonParameters.md).

The request accepts the following data in JSON format.

 ** [offeringId](#API_PurchaseOffering_RequestSyntax) **   <a name="devicefarm-PurchaseOffering-request-offeringId"></a>
The ID of the offering.  
Type: String  
Length Constraints: Minimum length of 32.  
Required: Yes

 ** [offeringPromotionId](#API_PurchaseOffering_RequestSyntax) **   <a name="devicefarm-PurchaseOffering-request-offeringPromotionId"></a>
The ID of the offering promotion to be applied to the purchase.  
Type: String  
Length Constraints: Minimum length of 4.  
Required: No

 ** [quantity](#API_PurchaseOffering_RequestSyntax) **   <a name="devicefarm-PurchaseOffering-request-quantity"></a>
The number of device slots to purchase in an offering request.  
Type: Integer  
Required: Yes

## Response Syntax
<a name="API_PurchaseOffering_ResponseSyntax"></a>

```
{
   "offeringTransaction": { 
      "cost": { 
         "amount": number,
         "currencyCode": "string"
      },
      "createdOn": number,
      "offeringPromotionId": "string",
      "offeringStatus": { 
         "effectiveOn": number,
         "offering": { 
            "description": "string",
            "id": "string",
            "platform": "string",
            "recurringCharges": [ 
               { 
                  "cost": { 
                     "amount": number,
                     "currencyCode": "string"
                  },
                  "frequency": "string"
               }
            ],
            "type": "string"
         },
         "quantity": number,
         "type": "string"
      },
      "transactionId": "string"
   }
}
```

## Response Elements
<a name="API_PurchaseOffering_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [offeringTransaction](#API_PurchaseOffering_ResponseSyntax) **   <a name="devicefarm-PurchaseOffering-response-offeringTransaction"></a>
Represents the offering transaction for the purchase result.  
Type: [OfferingTransaction](API_OfferingTransaction.md) object

## Errors
<a name="API_PurchaseOffering_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ArgumentException **   
An invalid argument was specified.    
 ** message **   
Any additional information about the exception.
HTTP Status Code: 400

 ** LimitExceededException **   
A limit was exceeded.    
 ** message **   
Any additional information about the exception.
HTTP Status Code: 400

 ** NotEligibleException **   
Exception gets thrown when a user is not eligible to perform the specified transaction.    
 ** message **   
The HTTP response code of a Not Eligible exception.
HTTP Status Code: 400

 ** NotFoundException **   
The specified entity was not found.    
 ** message **   
Any additional information about the exception.
HTTP Status Code: 400

 ** ServiceAccountException **   
There was a problem with the service account.    
 ** message **   
Any additional information about the exception.
HTTP Status Code: 400

## Examples
<a name="API_PurchaseOffering_Examples"></a>

### Example
<a name="API_PurchaseOffering_Example_1"></a>

The following example purchases one unmetered iOS device.

#### Sample Request
<a name="API_PurchaseOffering_Example_1_Request"></a>

```
{
  "transactions": [
    "purchase": {
      "offeringId": "offering-id-ios",
      "quantity": 1
    }
  ]
}
```

#### Sample Response
<a name="API_PurchaseOffering_Example_1_Response"></a>

```
{
    "offeringTransaction": {
        "createdOn": 1458587590.308,
        "offeringStatus": {
            "effectiveOn": 1458587590.24,
            "type": "RECURRING",
            "offering": {
                "platform": "IOS",
                "type": "RECURRING",
                "id": "offering-id-ios",
                "description": "iOS Unmetered Device Slot"
            },
            "quantity": 1
        },
        "cost": {
            "amount": 80.65,
            "currencyCode": "USD"
        },
        "transactionId": "transaction-id"
    }
}
```

## See Also
<a name="API_PurchaseOffering_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/devicefarm-2015-06-23/PurchaseOffering) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/devicefarm-2015-06-23/PurchaseOffering) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/devicefarm-2015-06-23/PurchaseOffering) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/devicefarm-2015-06-23/PurchaseOffering) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/devicefarm-2015-06-23/PurchaseOffering) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/devicefarm-2015-06-23/PurchaseOffering) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/devicefarm-2015-06-23/PurchaseOffering) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/devicefarm-2015-06-23/PurchaseOffering) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/devicefarm-2015-06-23/PurchaseOffering) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/devicefarm-2015-06-23/PurchaseOffering) 