Class: Prodigi::OrderResource

Inherits:
Resource
  • Object
show all
Defined in:
lib/prodigi/resources/orders.rb

Overview

Resource class for managing orders via the Prodigi API

Provides methods for creating, retrieving, listing, and managing orders. Orders represent print jobs that will be fulfilled by Prodigi’s worldwide printing network.

Examples:

Listing orders

orders = client.orders.list
orders.data.each do |order|
  puts order.id
end

Creating an order

order = client.orders.create(
  merchantReference: "order-123",
  shippingMethod: "Overnight",
  recipient: {
    name: "John Doe",
    address: {
      line1: "123 Main St",
      townOrCity: "New York",
      postalOrZipCode: "10001",
      countryCode: "US"
    }
  },
  items: [
    {
      sku: "GLOBAL-CAN-10X10",
      copies: 1,
      assets: [{ printArea: "default", url: "https://..." }]
    }
  ]
)

Updating order metadata

client.orders.(
  prodigi_order_id: "ord_123",
  metadata: { order_source: "website" }
)

See Also:

Constant Summary

Constants inherited from Resource

Resource::ERROR_MAP

Instance Attribute Summary

Attributes inherited from Resource

#client

Instance Method Summary collapse

Methods inherited from Resource

#default_headers, #delete_request, #get_request, #handle_response, #initialize, #patch_request, #post_request, #put_request

Constructor Details

This class inherits a constructor from Prodigi::Resource

Instance Method Details

#actions(prodigi_order_id:) ⇒ Object



65
66
67
68
69
70
# File 'lib/prodigi/resources/orders.rb', line 65

def actions(prodigi_order_id:)
  response = get_request("orders/#{prodigi_order_id}/actions")
  return unless response.body["outcome"] == "Ok"

  Object.new response.body
end

#cancel(prodigi_order_id:, **attributes) ⇒ Object



95
96
97
98
99
100
101
# File 'lib/prodigi/resources/orders.rb', line 95

def cancel(prodigi_order_id:, **attributes)
  response = post_request("orders/#{prodigi_order_id}/actions/cancel",
                          body: attributes)
  return unless response.body["outcome"] == "Cancelled"

  Order.new response.body["order"]
end

#create(**attributes) ⇒ Object



51
52
53
54
55
56
# File 'lib/prodigi/resources/orders.rb', line 51

def create(**attributes)
  response = post_request("orders", body: attributes)
  return unless response.body["outcome"] == "Created"

  Order.new response.body["order"]
end

#list(**params) ⇒ Object



46
47
48
49
# File 'lib/prodigi/resources/orders.rb', line 46

def list(**params)
  response = get_request("orders", params: params)
  Collection.from_response(response, key: "orders", type: Order)
end

#retrieve(prodigi_order_id:) ⇒ Object



58
59
60
61
62
63
# File 'lib/prodigi/resources/orders.rb', line 58

def retrieve(prodigi_order_id:)
  response = get_request("orders/#{prodigi_order_id}")
  return unless response.body["outcome"] == "Ok"

  Order.new response.body["order"]
end

#update_metadata(prodigi_order_id:, **attributes) ⇒ Object



88
89
90
91
92
93
# File 'lib/prodigi/resources/orders.rb', line 88

def (prodigi_order_id:, **attributes)
  response = post_request("orders/#{prodigi_order_id}/actions/updateMetadata", body: attributes)
  return unless response.body["outcome"] == "Updated"

  Order.new response.body["order"]
end

#update_recipient(prodigi_order_id:, **attributes) ⇒ Object



80
81
82
83
84
85
86
# File 'lib/prodigi/resources/orders.rb', line 80

def update_recipient(prodigi_order_id:, **attributes)
  response = post_request("orders/#{prodigi_order_id}/actions/updateRecipient",
                          body: attributes)
  return unless response.body["outcome"] == "Updated"

  Order.new response.body["order"]
end

#update_shipping(prodigi_order_id:, **attributes) ⇒ Object



72
73
74
75
76
77
78
# File 'lib/prodigi/resources/orders.rb', line 72

def update_shipping(prodigi_order_id:, **attributes)
  response = post_request("orders/#{prodigi_order_id}/actions/updateShipping",
                          body: attributes)
  return unless response.body["outcome"] == "Updated"

  Order.new response.body["order"]
end