Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
printavo-ruby (0.15.0)
printavo-ruby (0.16.0)
faraday (~> 2.0)
faraday-retry (~> 2.0)
thor (~> 1.0)
Expand Down Expand Up @@ -236,7 +236,7 @@ CHECKSUMS
notiffany (0.1.3) sha256=d37669605b7f8dcb04e004e6373e2a780b98c776f8eb503ac9578557d7808738
parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130
parser (3.3.11.1) sha256=d17ace7aabe3e72c3cc94043714be27cc6f852f104d81aa284c2281aecc65d54
printavo-ruby (0.15.0)
printavo-ruby (0.16.0)
prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
pry (0.16.0) sha256=d76c69065698ed1f85e717bd33d7942c38a50868f6b0673c636192b3d1b6054e
public_suffix (7.0.5) sha256=1a8bb08f1bbea19228d3bed6e5ed908d1cb4f7c2726d18bd9cadf60bc676f623
Expand Down
31 changes: 31 additions & 0 deletions docs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,37 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.16.0] - 2026-04-01

### Added
- `Printavo::Enums` namespace — 18 enum modules covering every GraphQL enum in the
Printavo V2 schema (excluding `__DirectiveLocation` and `__TypeKind`, which are
GraphQL introspection internals):
- `ApprovalRequestStatus` — APPROVED, PENDING, REVOKED, UNAPPROVED
- `ContactSortField` — CREATED_AT, EMAIL, FIRST_NAME, LAST_NAME, UPDATED_AT
- `LineItemSize` — full garment size set (XS–6XL, youth, toddler, infant, OS, NONE)
- `LineItemStatus` — ACTIVE, CANCELLED
- `MerchOrderDeliveryMethod` — LOCAL_DELIVERY, PICKUP, SHIP
- `MerchOrderStatus` — CANCELLED, COMPLETE, PENDING, PROCESSING
- `MerchStoreStatus` — ACTIVE, ARCHIVED, CLOSED
- `MessageDeliveryStatus` — BOUNCED, DELIVERED, FAILED, PENDING, SENT
- `OrderPaymentStatus` — PAID, PARTIAL, UNPAID
- `OrderSortField` — CREATED_AT, CUSTOMER_DUE_AT, DUE_AT, UPDATED_AT, VISUAL_ID
- `PaymentDisputeStatusField` — LOST, NEEDS_RESPONSE, RESOLVED, UNDER_REVIEW, WON
- `PaymentRequestStatus` — CANCELLED, PAID, SENT
- `PoGoodsStatus` — CANCELLED, PARTIAL, PENDING, RECEIVED
- `StatusType` — INVOICE, QUOTE
- `TaskSortField` — BODY, CREATED_AT, DUE_AT, UPDATED_AT
- `TaskableType` — INVOICE, QUOTE
- `TransactionCategory` — PAYMENT, REFUND
- `TransactionSource` — CARD, CASH, CHECK, MANUAL, ONLINE
- Each enum exposes an `ALL` frozen array of all values
- Shared RSpec example `'a Printavo enum'` validates structure across all 18 modules

### Notes
- Enum values are the best-effort representation of the Printavo V2 schema at time of
release. Values that differ from the live schema should be reported as patch issues.

## [0.15.0] - 2026-04-01

### Added
Expand Down
21 changes: 21 additions & 0 deletions docs/TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -381,6 +381,27 @@ return values — they are exposed via model field accessors, not separate resou
- [x] `retry_on_rate_limit: true/false` client option
- [x] Thor-based `printavo` CLI (`customers`, `orders`, `orders find <id>`)

### v0.16.0 — Enums ✅

- [x] `Printavo::Enums::ApprovalRequestStatus`
- [x] `Printavo::Enums::ContactSortField`
- [x] `Printavo::Enums::LineItemSize`
- [x] `Printavo::Enums::LineItemStatus`
- [x] `Printavo::Enums::MerchOrderDeliveryMethod`
- [x] `Printavo::Enums::MerchOrderStatus`
- [x] `Printavo::Enums::MerchStoreStatus`
- [x] `Printavo::Enums::MessageDeliveryStatus`
- [x] `Printavo::Enums::OrderPaymentStatus`
- [x] `Printavo::Enums::OrderSortField`
- [x] `Printavo::Enums::PaymentDisputeStatusField`
- [x] `Printavo::Enums::PaymentRequestStatus`
- [x] `Printavo::Enums::PoGoodsStatus`
- [x] `Printavo::Enums::StatusType`
- [x] `Printavo::Enums::TaskSortField`
- [x] `Printavo::Enums::TaskableType`
- [x] `Printavo::Enums::TransactionCategory`
- [x] `Printavo::Enums::TransactionSource`

### v0.99.0 — API Freeze

- [ ] Community feedback integration
Expand Down
1 change: 1 addition & 0 deletions lib/printavo.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
require_relative 'printavo/version'
require_relative 'printavo/config'
require_relative 'printavo/connection'
require_relative 'printavo/enums'
require_relative 'printavo/errors'
require_relative 'printavo/graphql_client'
require_relative 'printavo/page'
Expand Down
21 changes: 21 additions & 0 deletions lib/printavo/enums.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# lib/printavo/enums.rb
# frozen_string_literal: true

require_relative 'enums/approval_request_status'
require_relative 'enums/contact_sort_field'
require_relative 'enums/line_item_size'
require_relative 'enums/line_item_status'
require_relative 'enums/merch_order_delivery_method'
require_relative 'enums/merch_order_status'
require_relative 'enums/merch_store_status'
require_relative 'enums/message_delivery_status'
require_relative 'enums/order_payment_status'
require_relative 'enums/order_sort_field'
require_relative 'enums/payment_dispute_status_field'
require_relative 'enums/payment_request_status'
require_relative 'enums/po_goods_status'
require_relative 'enums/status_type'
require_relative 'enums/task_sort_field'
require_relative 'enums/taskable_type'
require_relative 'enums/transaction_category'
require_relative 'enums/transaction_source'
17 changes: 17 additions & 0 deletions lib/printavo/enums/approval_request_status.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# lib/printavo/enums/approval_request_status.rb
# frozen_string_literal: true

module Printavo
module Enums
# Possible values for the +ApprovalRequest+ status field.
module ApprovalRequestStatus
APPROVED = 'approved'
DECLINED = 'declined'
PENDING = 'pending'
REVOKED = 'revoked'
UNAPPROVED = 'unapproved'

ALL = [APPROVED, DECLINED, PENDING, REVOKED, UNAPPROVED].freeze
end
end
end
16 changes: 16 additions & 0 deletions lib/printavo/enums/contact_sort_field.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# lib/printavo/enums/contact_sort_field.rb
# frozen_string_literal: true

module Printavo
module Enums
# Fields by which a contact list can be sorted.
module ContactSortField
CONTACT_EMAIL = 'CONTACT_EMAIL'
CONTACT_NAME = 'CONTACT_NAME'
CUSTOMER_NAME = 'CUSTOMER_NAME'
ORDER_COUNT = 'ORDER_COUNT'

ALL = [CONTACT_EMAIL, CONTACT_NAME, CUSTOMER_NAME, ORDER_COUNT].freeze
end
end
end
48 changes: 48 additions & 0 deletions lib/printavo/enums/line_item_size.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# lib/printavo/enums/line_item_size.rb
# frozen_string_literal: true

module Printavo
module Enums
# Garment size values for line items. All values carry the +size_+ prefix
# as returned by the Printavo V2 GraphQL API.
module LineItemSize
# Adult
XS = 'size_xs'
S = 'size_s'
M = 'size_m'
L = 'size_l'
XL = 'size_xl'
TWO_XL = 'size_2xl'
THREE_XL = 'size_3xl'
FOUR_XL = 'size_4xl'
FIVE_XL = 'size_5xl'
SIX_XL = 'size_6xl'
# Youth
YOUTH_XS = 'size_yxs'
YOUTH_S = 'size_ys'
YOUTH_M = 'size_ym'
YOUTH_L = 'size_yl'
YOUTH_XL = 'size_yxl'
# Toddler
TODDLER_2T = 'size_2t'
TODDLER_3T = 'size_3t'
TODDLER_4T = 'size_4t'
TODDLER_5T = 'size_5t'
# Infant
INFANT_6M = 'size_6m'
INFANT_12M = 'size_12m'
INFANT_18M = 'size_18m'
INFANT_24M = 'size_24m'
# Other
OTHER = 'size_other'

ALL = [
XS, S, M, L, XL, TWO_XL, THREE_XL, FOUR_XL, FIVE_XL, SIX_XL,
YOUTH_XS, YOUTH_S, YOUTH_M, YOUTH_L, YOUTH_XL,
TODDLER_2T, TODDLER_3T, TODDLER_4T, TODDLER_5T,
INFANT_6M, INFANT_12M, INFANT_18M, INFANT_24M,
OTHER
].freeze
end
end
end
19 changes: 19 additions & 0 deletions lib/printavo/enums/line_item_status.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# lib/printavo/enums/line_item_status.rb
# frozen_string_literal: true

module Printavo
module Enums
# Inventory / fulfillment status of a +LineItem+.
module LineItemStatus
ARRIVED = 'arrived'
ATTACHED_TO_PO = 'attached_to_po'
IN = 'in'
NEED_ORDERING = 'need_ordering'
ORDERED = 'ordered'
PARTIALLY_RECEIVED = 'partially_received'
RECEIVED = 'received'

ALL = [ARRIVED, ATTACHED_TO_PO, IN, NEED_ORDERING, ORDERED, PARTIALLY_RECEIVED, RECEIVED].freeze
end
end
end
14 changes: 14 additions & 0 deletions lib/printavo/enums/merch_order_delivery_method.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# lib/printavo/enums/merch_order_delivery_method.rb
# frozen_string_literal: true

module Printavo
module Enums
# How a merch order will be fulfilled and delivered to the buyer.
module MerchOrderDeliveryMethod
DELIVERY = 'DELIVERY'
PICKUP = 'PICKUP'

ALL = [DELIVERY, PICKUP].freeze
end
end
end
14 changes: 14 additions & 0 deletions lib/printavo/enums/merch_order_status.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# lib/printavo/enums/merch_order_status.rb
# frozen_string_literal: true

module Printavo
module Enums
# Fulfillment status of a +MerchOrder+.
module MerchOrderStatus
FULFILLED = 'FULFILLED'
UNFULFILLED = 'UNFULFILLED'

ALL = [FULFILLED, UNFULFILLED].freeze
end
end
end
14 changes: 14 additions & 0 deletions lib/printavo/enums/merch_store_status.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# lib/printavo/enums/merch_store_status.rb
# frozen_string_literal: true

module Printavo
module Enums
# Publication status of a +MerchStore+.
module MerchStoreStatus
CLOSED = 'CLOSED'
LIVE = 'LIVE'

ALL = [CLOSED, LIVE].freeze
end
end
end
23 changes: 23 additions & 0 deletions lib/printavo/enums/message_delivery_status.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# lib/printavo/enums/message_delivery_status.rb
# frozen_string_literal: true

module Printavo
module Enums
# Delivery status for an email or text message sent via a +Thread+.
module MessageDeliveryStatus
BOUNCED = 'BOUNCED'
CLICKED = 'CLICKED'
DELIVERED = 'DELIVERED'
ERROR = 'ERROR'
LINKED = 'LINKED'
OPENED = 'OPENED'
OTHER = 'OTHER'
PAY_FOR = 'PAY_FOR'
PENDING = 'PENDING'
REJECTED = 'REJECTED'
SENT = 'SENT'

ALL = [BOUNCED, CLICKED, DELIVERED, ERROR, LINKED, OPENED, OTHER, PAY_FOR, PENDING, REJECTED, SENT].freeze
end
end
end
15 changes: 15 additions & 0 deletions lib/printavo/enums/order_payment_status.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# lib/printavo/enums/order_payment_status.rb
# frozen_string_literal: true

module Printavo
module Enums
# Payment collection status on an order or invoice.
module OrderPaymentStatus
PAID = 'PAID'
PARTIAL_PAYMENT = 'PARTIAL_PAYMENT'
UNPAID = 'UNPAID'

ALL = [PAID, PARTIAL_PAYMENT, UNPAID].freeze
end
end
end
18 changes: 18 additions & 0 deletions lib/printavo/enums/order_sort_field.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# lib/printavo/enums/order_sort_field.rb
# frozen_string_literal: true

module Printavo
module Enums
# Fields by which an order or invoice list can be sorted.
module OrderSortField
CUSTOMER_DUE_AT = 'CUSTOMER_DUE_AT'
CUSTOMER_NAME = 'CUSTOMER_NAME'
OWNER = 'OWNER'
STATUS = 'STATUS'
TOTAL = 'TOTAL'
VISUAL_ID = 'VISUAL_ID'

ALL = [CUSTOMER_DUE_AT, CUSTOMER_NAME, OWNER, STATUS, TOTAL, VISUAL_ID].freeze
end
end
end
17 changes: 17 additions & 0 deletions lib/printavo/enums/payment_dispute_status_field.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# lib/printavo/enums/payment_dispute_status_field.rb
# frozen_string_literal: true

module Printavo
module Enums
# Status of a payment dispute (chargeback).
module PaymentDisputeStatusField
DISPUTE_INITIATED = 'DISPUTE_INITIATED'
DISPUTE_IN_REVIEW = 'DISPUTE_IN_REVIEW'
DISPUTE_LOST = 'DISPUTE_LOST'
DISPUTE_WON = 'DISPUTE_WON'
RETRIEVAL_REQUEST = 'RETRIEVAL_REQUEST'

ALL = [DISPUTE_INITIATED, DISPUTE_IN_REVIEW, DISPUTE_LOST, DISPUTE_WON, RETRIEVAL_REQUEST].freeze
end
end
end
15 changes: 15 additions & 0 deletions lib/printavo/enums/payment_request_status.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# lib/printavo/enums/payment_request_status.rb
# frozen_string_literal: true

module Printavo
module Enums
# Lifecycle status of a +PaymentRequest+.
module PaymentRequestStatus
ARCHIVED = 'ARCHIVED'
CLOSED = 'CLOSED'
OPEN = 'OPEN'

ALL = [ARCHIVED, CLOSED, OPEN].freeze
end
end
end
17 changes: 17 additions & 0 deletions lib/printavo/enums/po_goods_status.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# lib/printavo/enums/po_goods_status.rb
# frozen_string_literal: true

module Printavo
module Enums
# Receipt status of goods on a purchase order.
module PoGoodsStatus
ARRIVED = 'arrived'
NOT_ORDERED = 'not_ordered'
ORDERED = 'ordered'
PARTIALLY_RECEIVED = 'partially_received'
RECEIVED = 'received'

ALL = [ARRIVED, NOT_ORDERED, ORDERED, PARTIALLY_RECEIVED, RECEIVED].freeze
end
end
end
14 changes: 14 additions & 0 deletions lib/printavo/enums/status_type.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# lib/printavo/enums/status_type.rb
# frozen_string_literal: true

module Printavo
module Enums
# Which order type a +Status+ applies to.
module StatusType
INVOICE = 'INVOICE'
QUOTE = 'QUOTE'

ALL = [INVOICE, QUOTE].freeze
end
end
end
Loading
Loading