         self.client = client
     }
     
+    /**
+     Create a SKU
+     Creates a new SKU associated with a product.
+     
+     - parameter currency:          Three-letter ISO currency code, in lowercase.
+     - parameter inventory:         Description of the SKU’s inventory.
+     - parameter price:             The cost of the item as a nonnegative integer in the smallest 
+                                    currency unit (that is, 100 cents to charge $1.00, or 100 to 
+                                    charge ¥100, Japanese Yen being a zero-decimal currency).
+     - parameter product:           The ID of the product this SKU is associated with.
+     - parameter id:                The ID of the product this SKU is associated with.
+     - parameter active:            Whether or not the SKU is available for purchase. Default to true.
+     - parameter attributes:        A dictionary of attributes and values for the attributes defined by 
+                                    the product. If, for example, a product’s attributes are ["size", "gender"], 
+                                    a valid SKU has the following dictionary of attributes: 
+                                    {"size": "Medium", "gender": "Unisex"}.
+     - parameter image:             The URL of an image for this SKU, meant to be displayable to the customer.
+     - parameter packageDimensions: The dimensions of this SKU for shipping purposes.
+     - parameter metadata:          A set of key/value pairs that you can attach to a SKU object. It can be 
+                                    useful for storing additional information about the SKU in a structured format.
+     
+     - returns: A StripeRequest<> item which you can then use to convert to the corresponding node
+     */
     public func create(currency: StripeCurrency, inventory: Node, price: Int, product: String, id: String? = nil, active: Bool? = nil, attributes: Node? = nil, image: String? = nil, packageDimensions: Node? = nil, metadata: Node? = nil) throws -> StripeRequest<SKU> {
         var body = Node([:])
         

     return try StripeRequest(client: self.client, method: .get, route: .sku, query: query, body: nil, headers: nil)
     }
    
    public func delete(sku skuId: String) throws -> StripeRequest<DeletedObject> {
        return try StripeRequest(client: self.client, method: .delete, route: .skus(skuId), query: [:], body: nil, headers: nil)
    }

        return try StripeRequest(client: self.client, method: .post, route: .sku, query: [:], body: Body.data(body.formURLEncoded()), headers: nil)
    }
    
    /**
     Retrieve a SKU
     Retrieves the details of an existing SKU. Supply the unique SKU identifier from either a SKU 
     creation request or from the product, and Stripe will return the corresponding SKU information.
     
     - parameter skuId: The identifier of the SKU to be retrieved.
     
     - returns: A StripeRequest<> item which you can then use to convert to the corresponding node
     */
    public func retrieve(sku skuId: String) throws -> StripeRequest<SKU> {
        return try StripeRequest(client: self.client, method: .get, route: .skus(skuId), query: [:], body: nil, headers: nil)
    }
    
    /**
     Update a SKU
     Updates the specific SKU by setting the values of the parameters passed. Any parameters not 
     provided will be left unchanged.
     Note that a SKU’s attributes are not editable. Instead, you would need to deactivate the 
     existing SKU and create a new one with the new attribute values.
     
     - parameter skuId:             The identifier of the SKU to be updated.
     - parameter active:            Whether or not this SKU is available for purchase.
     - parameter attributes:        A dictionary of attributes and values for the attributes 
                                    defined by the product. When specified, attributes will 
                                    partially update the existing attributes dictionary on the 
                                    product, with the postcondition that a value must be present 
                                    for each attribute key on the product, and that all SKUs for 
                                    the product must have unique sets of attributes.
     - parameter currency:          hree-letter ISO currency code, in lowercase.
     - parameter image:             The URL of an image for this SKU, meant to be displayable to 
                                    the customer. This will be unset if you POST an empty value.
     - parameter inventory:         Description of the SKU’s inventory.
     - parameter packageDimensions: The dimensions of this SKU for shipping purposes.
     - parameter price:             The cost of the item as a positive integer in the smallest 
                                    currency unit (that is, 100 cents to charge $1.00, or 100 
                                    to charge ¥100, Japanese Yen being a zero-decimal currency).
     - parameter product:           The ID of the product that this SKU should belong to. The 
                                    product must exist and have the same set of attribute names 
                                    as the SKU’s current product.
     - parameter metadata:          A set of key/value pairs that you can attach to a SKU object. 
                                    It can be useful for storing additional information about the 
                                    SKU in a structured format. You can unset individual keys if 
                                    you POST an empty value for that key. You can clear all keys 
                                    if you POST an empty value for metadata.
     
     - returns: A StripeRequest<> item which you can then use to convert to the corresponding node
     */
    public func update(sku skuId: String, active: Bool? = nil, attributes: Node? = nil, currency: StripeCurrency? = nil, image: String? = nil, inventory: Node? = nil, packageDimensions: Node? = nil, price: Int? = nil, product: String? = nil, metadata: Node? = nil) throws -> StripeRequest<SKU> {
        var body = Node([:])
        
