square.rb 44.2.0.20251016 → 45.0.1.20260122
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.fern/metadata.json +9 -0
- data/.fernignore +20 -0
- data/.rubocop.yml +60 -0
- data/LICENSE +1 -1
- data/Rakefile +29 -0
- data/custom.gemspec.rb +19 -0
- data/lib/square/apple_pay/client.rb +24 -10
- data/lib/square/bank_accounts/client.rb +144 -31
- data/lib/square/bank_accounts/types/create_bank_account_request.rb +13 -0
- data/lib/square/bank_accounts/types/disable_bank_account_request.rb +11 -0
- data/lib/square/bank_accounts/types/get_by_v_1_id_bank_accounts_request.rb +1 -1
- data/lib/square/bank_accounts/types/list_bank_accounts_request.rb +1 -0
- data/lib/square/bookings/client.rb +238 -100
- data/lib/square/bookings/custom_attribute_definitions/client.rb +139 -67
- data/lib/square/bookings/custom_attribute_definitions/types/create_booking_custom_attribute_definition_request.rb +1 -3
- data/lib/square/bookings/custom_attribute_definitions/types/update_booking_custom_attribute_definition_request.rb +1 -3
- data/lib/square/bookings/custom_attributes/client.rb +168 -76
- data/lib/square/bookings/custom_attributes/types/bulk_delete_booking_custom_attributes_request.rb +1 -3
- data/lib/square/bookings/custom_attributes/types/bulk_upsert_booking_custom_attributes_request.rb +1 -3
- data/lib/square/bookings/location_profiles/client.rb +44 -24
- data/lib/square/bookings/team_member_profiles/client.rb +66 -31
- data/lib/square/cards/client.rb +103 -45
- data/lib/square/cash_drawers/client.rb +3 -1
- data/lib/square/cash_drawers/shifts/client.rb +121 -61
- data/lib/square/catalog/client.rb +203 -91
- data/lib/square/catalog/images/client.rb +50 -20
- data/lib/square/catalog/object/client.rb +66 -29
- data/lib/square/catalog/object/types/delete_object_request.rb +1 -1
- data/lib/square/catalog/object/types/get_object_request.rb +1 -1
- data/lib/square/catalog/types/batch_upsert_catalog_objects_request.rb +1 -3
- data/lib/square/catalog/types/search_catalog_items_request.rb +3 -9
- data/lib/square/catalog/types/search_catalog_objects_request.rb +1 -3
- data/lib/square/channels/client.rb +85 -38
- data/lib/square/checkout/client.rb +77 -31
- data/lib/square/checkout/payment_links/client.rb +120 -54
- data/lib/square/client.rb +8 -10
- data/lib/square/customers/cards/client.rb +43 -16
- data/lib/square/customers/client.rb +220 -97
- data/lib/square/customers/custom_attribute_definitions/client.rb +157 -74
- data/lib/square/customers/custom_attribute_definitions/types/batch_upsert_customer_custom_attributes_request.rb +1 -3
- data/lib/square/customers/custom_attribute_definitions/types/create_customer_custom_attribute_definition_request.rb +1 -3
- data/lib/square/customers/custom_attribute_definitions/types/update_customer_custom_attribute_definition_request.rb +1 -3
- data/lib/square/customers/custom_attributes/client.rb +117 -53
- data/lib/square/customers/groups/client.rb +156 -67
- data/lib/square/customers/segments/client.rb +62 -31
- data/lib/square/customers/types/bulk_create_customers_request.rb +1 -3
- data/lib/square/customers/types/bulk_update_customers_request.rb +1 -3
- data/lib/square/devices/client.rb +66 -31
- data/lib/square/devices/codes/client.rb +83 -38
- data/lib/square/disputes/client.rb +140 -60
- data/lib/square/disputes/evidence/client.rb +83 -39
- data/lib/square/employees/client.rb +66 -31
- data/lib/square/events/client.rb +80 -38
- data/lib/square/file_param.rb +77 -77
- data/lib/square/gift_cards/activities/client.rb +73 -31
- data/lib/square/gift_cards/client.rb +163 -69
- data/lib/square/internal/http/base_request.rb +6 -0
- data/lib/square/internal/http/raw_client.rb +111 -20
- data/lib/square/internal/iterators/cursor_item_iterator.rb +28 -0
- data/lib/square/internal/iterators/cursor_page_iterator.rb +51 -0
- data/lib/square/internal/iterators/item_iterator.rb +65 -0
- data/lib/square/internal/iterators/offset_item_iterator.rb +30 -0
- data/lib/square/internal/iterators/offset_page_iterator.rb +83 -0
- data/lib/square/internal/json/request.rb +2 -1
- data/lib/square/internal/multipart/multipart_request.rb +2 -1
- data/lib/square/internal/types/enum.rb +8 -0
- data/lib/square/internal/types/model/field.rb +11 -1
- data/lib/square/internal/types/model.rb +14 -4
- data/lib/square/internal/types/union.rb +88 -7
- data/lib/square/internal/types/utils.rb +20 -4
- data/lib/square/inventory/client.rb +100 -76
- data/lib/square/invoices/client.rb +228 -99
- data/lib/square/labor/break_types/client.rb +120 -53
- data/lib/square/labor/client.rb +205 -81
- data/lib/square/labor/employee_wages/client.rb +64 -31
- data/lib/square/labor/shifts/client.rb +94 -37
- data/lib/square/labor/team_member_wages/client.rb +64 -31
- data/lib/square/labor/types/bulk_publish_scheduled_shifts_request.rb +2 -6
- data/lib/square/labor/types/publish_scheduled_shift_request.rb +1 -3
- data/lib/square/labor/workweek_configs/client.rb +65 -32
- data/lib/square/locations/client.rb +102 -41
- data/lib/square/locations/custom_attribute_definitions/client.rb +135 -64
- data/lib/square/locations/custom_attribute_definitions/types/create_location_custom_attribute_definition_request.rb +1 -3
- data/lib/square/locations/custom_attribute_definitions/types/update_location_custom_attribute_definition_request.rb +1 -3
- data/lib/square/locations/custom_attributes/client.rb +156 -68
- data/lib/square/locations/custom_attributes/types/bulk_delete_location_custom_attributes_request.rb +1 -3
- data/lib/square/locations/custom_attributes/types/bulk_upsert_location_custom_attributes_request.rb +1 -3
- data/lib/square/locations/transactions/client.rb +93 -37
- data/lib/square/locations/types/create_checkout_request.rb +1 -3
- data/lib/square/loyalty/accounts/client.rb +109 -44
- data/lib/square/loyalty/accounts/types/search_loyalty_accounts_request.rb +1 -3
- data/lib/square/loyalty/client.rb +20 -8
- data/lib/square/loyalty/programs/client.rb +72 -29
- data/lib/square/loyalty/programs/promotions/client.rb +106 -46
- data/lib/square/loyalty/rewards/client.rb +96 -38
- data/lib/square/loyalty/rewards/types/search_loyalty_rewards_request.rb +1 -3
- data/lib/square/merchants/client.rb +60 -31
- data/lib/square/merchants/custom_attribute_definitions/client.rb +137 -65
- data/lib/square/merchants/custom_attribute_definitions/types/create_merchant_custom_attribute_definition_request.rb +1 -3
- data/lib/square/merchants/custom_attribute_definitions/types/update_merchant_custom_attribute_definition_request.rb +1 -3
- data/lib/square/merchants/custom_attributes/client.rb +156 -68
- data/lib/square/merchants/custom_attributes/types/bulk_delete_merchant_custom_attributes_request.rb +1 -3
- data/lib/square/merchants/custom_attributes/types/bulk_upsert_merchant_custom_attributes_request.rb +1 -3
- data/lib/square/o_auth/client.rb +76 -31
- data/lib/square/o_auth/types/obtain_token_request.rb +1 -0
- data/lib/square/orders/client.rb +156 -63
- data/lib/square/orders/custom_attribute_definitions/client.rb +137 -65
- data/lib/square/orders/custom_attribute_definitions/types/create_order_custom_attribute_definition_request.rb +1 -3
- data/lib/square/orders/custom_attribute_definitions/types/update_order_custom_attribute_definition_request.rb +1 -3
- data/lib/square/orders/custom_attributes/client.rb +159 -69
- data/lib/square/orders/custom_attributes/types/bulk_delete_order_custom_attributes_request.rb +1 -3
- data/lib/square/orders/custom_attributes/types/bulk_upsert_order_custom_attributes_request.rb +1 -3
- data/lib/square/orders/types/calculate_order_request.rb +1 -3
- data/lib/square/payments/client.rb +182 -70
- data/lib/square/payouts/client.rb +116 -54
- data/lib/square/refunds/client.rb +97 -40
- data/lib/square/refunds/types/refund_payment_request.rb +1 -3
- data/lib/square/sites/client.rb +26 -11
- data/lib/square/snippets/client.rb +73 -28
- data/lib/square/subscriptions/client.rb +271 -117
- data/lib/square/team/client.rb +81 -36
- data/lib/square/team_members/client.rb +119 -49
- data/lib/square/team_members/types/batch_create_team_members_request.rb +1 -3
- data/lib/square/team_members/types/batch_update_team_members_request.rb +1 -3
- data/lib/square/team_members/wage_setting/client.rb +48 -19
- data/lib/square/terminal/actions/client.rb +75 -30
- data/lib/square/terminal/checkouts/client.rb +76 -30
- data/lib/square/terminal/client.rb +60 -23
- data/lib/square/terminal/refunds/client.rb +78 -31
- data/lib/square/transfer_orders/client.rb +26 -21
- data/lib/square/types/address.rb +2 -1
- data/lib/square/types/application_details.rb +1 -3
- data/lib/square/types/application_type.rb +23 -0
- data/lib/square/types/availability.rb +3 -4
- data/lib/square/types/bank_account.rb +1 -0
- data/lib/square/types/batch_create_team_members_response.rb +1 -3
- data/lib/square/types/batch_create_vendors_response.rb +1 -3
- data/lib/square/types/batch_get_catalog_objects_response.rb +1 -3
- data/lib/square/types/batch_get_vendors_response.rb +1 -3
- data/lib/square/types/batch_update_team_members_response.rb +1 -3
- data/lib/square/types/batch_update_vendors_response.rb +1 -3
- data/lib/square/types/batch_upsert_catalog_objects_response.rb +1 -3
- data/lib/square/types/batch_upsert_customer_custom_attributes_request_customer_custom_attribute_upsert_request.rb +2 -1
- data/lib/square/types/batch_upsert_customer_custom_attributes_response.rb +4 -4
- data/lib/square/types/batch_upsert_customer_custom_attributes_response_customer_custom_attribute_upsert_response.rb +3 -1
- data/lib/square/types/booking.rb +2 -6
- data/lib/square/types/booking_created_event.rb +2 -1
- data/lib/square/types/booking_custom_attribute_definition_visible_created_event.rb +2 -1
- data/lib/square/types/booking_custom_attribute_definition_visible_deleted_event.rb +2 -1
- data/lib/square/types/booking_custom_attribute_definition_visible_updated_event.rb +2 -1
- data/lib/square/types/booking_custom_attribute_delete_request.rb +4 -2
- data/lib/square/types/booking_custom_attribute_delete_response.rb +3 -1
- data/lib/square/types/booking_custom_attribute_upsert_request.rb +2 -1
- data/lib/square/types/booking_custom_attribute_upsert_response.rb +3 -1
- data/lib/square/types/booking_updated_event.rb +2 -1
- data/lib/square/types/bulk_create_customers_response.rb +1 -3
- data/lib/square/types/bulk_delete_booking_custom_attributes_response.rb +4 -4
- data/lib/square/types/bulk_delete_customers_response.rb +1 -3
- data/lib/square/types/bulk_delete_location_custom_attributes_request_location_custom_attribute_delete_request.rb +2 -1
- data/lib/square/types/bulk_delete_location_custom_attributes_response.rb +4 -4
- data/lib/square/types/bulk_delete_location_custom_attributes_response_location_custom_attribute_delete_response.rb +2 -1
- data/lib/square/types/bulk_delete_merchant_custom_attributes_request_merchant_custom_attribute_delete_request.rb +2 -1
- data/lib/square/types/bulk_delete_merchant_custom_attributes_response.rb +4 -4
- data/lib/square/types/bulk_delete_merchant_custom_attributes_response_merchant_custom_attribute_delete_response.rb +2 -1
- data/lib/square/types/bulk_delete_order_custom_attributes_response.rb +1 -3
- data/lib/square/types/bulk_publish_scheduled_shifts_response.rb +1 -3
- data/lib/square/types/bulk_retrieve_bookings_response.rb +1 -3
- data/lib/square/types/bulk_retrieve_channels_request_constants.rb +23 -0
- data/lib/square/types/bulk_retrieve_channels_response.rb +1 -3
- data/lib/square/types/bulk_retrieve_customers_response.rb +1 -3
- data/lib/square/types/bulk_retrieve_team_member_booking_profiles_response.rb +3 -4
- data/lib/square/types/bulk_update_customers_response.rb +1 -3
- data/lib/square/types/bulk_upsert_booking_custom_attributes_response.rb +4 -4
- data/lib/square/types/bulk_upsert_location_custom_attributes_request_location_custom_attribute_upsert_request.rb +2 -1
- data/lib/square/types/bulk_upsert_location_custom_attributes_response.rb +4 -4
- data/lib/square/types/bulk_upsert_location_custom_attributes_response_location_custom_attribute_upsert_response.rb +3 -1
- data/lib/square/types/bulk_upsert_merchant_custom_attributes_request_merchant_custom_attribute_upsert_request.rb +2 -1
- data/lib/square/types/bulk_upsert_merchant_custom_attributes_response.rb +4 -4
- data/lib/square/types/bulk_upsert_merchant_custom_attributes_response_merchant_custom_attribute_upsert_response.rb +3 -1
- data/lib/square/types/bulk_upsert_order_custom_attributes_response.rb +1 -3
- data/lib/square/types/business_appointment_settings.rb +4 -12
- data/lib/square/types/business_booking_profile.rb +2 -6
- data/lib/square/types/buy_now_pay_later_details.rb +1 -0
- data/lib/square/types/card.rb +2 -0
- data/lib/square/types/card_issuer_alert.rb +23 -0
- data/lib/square/types/catalog_category.rb +1 -3
- data/lib/square/types/catalog_custom_attribute_definition.rb +6 -18
- data/lib/square/types/catalog_custom_attribute_definition_selection_config.rb +1 -3
- data/lib/square/types/catalog_id_mapping.rb +1 -1
- data/lib/square/types/catalog_info_response.rb +1 -3
- data/lib/square/types/catalog_item.rb +6 -12
- data/lib/square/types/catalog_item_food_and_beverage_details.rb +2 -6
- data/lib/square/types/catalog_item_food_and_beverage_details_dietary_preference.rb +2 -6
- data/lib/square/types/catalog_item_food_and_beverage_details_ingredient.rb +2 -6
- data/lib/square/types/catalog_item_modifier_list_info.rb +6 -9
- data/lib/square/types/catalog_item_variation.rb +17 -13
- data/lib/square/types/catalog_modifier.rb +4 -4
- data/lib/square/types/catalog_modifier_list.rb +4 -2
- data/lib/square/types/catalog_modifier_override.rb +2 -2
- data/lib/square/types/catalog_modifier_toggle_override_type.rb +13 -0
- data/lib/square/types/catalog_object.rb +7 -3
- data/lib/square/types/catalog_object_base.rb +2 -4
- data/lib/square/types/catalog_object_category.rb +3 -4
- data/lib/square/types/catalog_object_custom_attribute_definition.rb +1 -3
- data/lib/square/types/catalog_object_quick_amounts_settings.rb +1 -3
- data/lib/square/types/catalog_object_reference.rb +1 -1
- data/lib/square/types/catalog_object_subscription_plan_variation.rb +1 -3
- data/lib/square/types/catalog_query.rb +11 -13
- data/lib/square/types/catalog_query_prefix.rb +2 -1
- data/lib/square/types/catalog_query_text.rb +2 -1
- data/lib/square/types/catalog_subscription_plan.rb +5 -5
- data/lib/square/types/catalog_subscription_plan_variation.rb +4 -2
- data/lib/square/types/catalog_v_1_id.rb +1 -1
- data/lib/square/types/catalog_version_updated_event_object.rb +1 -3
- data/lib/square/types/checkout.rb +1 -3
- data/lib/square/types/checkout_location_settings.rb +1 -3
- data/lib/square/types/checkout_location_settings_branding.rb +2 -6
- data/lib/square/types/checkout_merchant_settings.rb +1 -3
- data/lib/square/types/checkout_merchant_settings_payment_methods.rb +4 -12
- data/lib/square/types/checkout_merchant_settings_payment_methods_afterpay_clearpay.rb +2 -6
- data/lib/square/types/component.rb +4 -12
- data/lib/square/types/create_bank_account_response.rb +11 -0
- data/lib/square/types/create_booking_custom_attribute_definition_response.rb +4 -4
- data/lib/square/types/create_catalog_image_request.rb +1 -1
- data/lib/square/types/create_customer_custom_attribute_definition_response.rb +4 -4
- data/lib/square/types/create_location_custom_attribute_definition_response.rb +4 -4
- data/lib/square/types/create_merchant_custom_attribute_definition_response.rb +4 -4
- data/lib/square/types/create_order_custom_attribute_definition_response.rb +1 -3
- data/lib/square/types/create_transfer_order_data.rb +3 -4
- data/lib/square/types/create_webhook_subscription_response.rb +2 -1
- data/lib/square/types/custom_attribute.rb +1 -1
- data/lib/square/types/custom_attribute_definition.rb +1 -3
- data/lib/square/types/custom_attribute_definition_event_data_object.rb +1 -3
- data/lib/square/types/custom_field.rb +2 -1
- data/lib/square/types/customer_address_filter.rb +2 -1
- data/lib/square/types/customer_created_event.rb +4 -2
- data/lib/square/types/customer_created_event_event_context_merge.rb +2 -1
- data/lib/square/types/customer_creation_source_filter.rb +1 -3
- data/lib/square/types/customer_custom_attribute_filter.rb +2 -1
- data/lib/square/types/customer_custom_attribute_filter_value.rb +2 -1
- data/lib/square/types/customer_custom_attribute_filters.rb +7 -6
- data/lib/square/types/customer_custom_attribute_visible_updated_event.rb +6 -3
- data/lib/square/types/customer_deleted_event.rb +4 -2
- data/lib/square/types/customer_deleted_event_event_context_merge.rb +2 -1
- data/lib/square/types/customer_tax_ids.rb +4 -2
- data/lib/square/types/customer_updated_event.rb +4 -2
- data/lib/square/types/delete_booking_custom_attribute_definition_response.rb +5 -2
- data/lib/square/types/delete_booking_custom_attribute_response.rb +2 -1
- data/lib/square/types/delete_customer_custom_attribute_response.rb +2 -1
- data/lib/square/types/delete_location_custom_attribute_response.rb +2 -1
- data/lib/square/types/delete_merchant_custom_attribute_response.rb +2 -1
- data/lib/square/types/delete_subscription_action_response.rb +2 -1
- data/lib/square/types/delete_webhook_subscription_response.rb +2 -1
- data/lib/square/types/destination_details.rb +1 -3
- data/lib/square/types/device_checkout_options.rb +1 -0
- data/lib/square/types/device_component_details_ethernet_details.rb +1 -1
- data/lib/square/types/device_component_details_wi_fi_details.rb +1 -1
- data/lib/square/types/digital_wallet_details.rb +1 -0
- data/lib/square/types/disable_bank_account_response.rb +11 -0
- data/lib/square/types/dispute.rb +2 -1
- data/lib/square/types/dispute_evidence_added_event.rb +2 -1
- data/lib/square/types/dispute_evidence_created_event.rb +2 -1
- data/lib/square/types/employee_wage.rb +2 -1
- data/lib/square/types/error_code.rb +2 -0
- data/lib/square/types/event_data.rb +1 -3
- data/lib/square/types/fulfillment.rb +4 -7
- data/lib/square/types/fulfillment_delivery_details.rb +1 -3
- data/lib/square/types/fulfillment_pickup_details.rb +1 -3
- data/lib/square/types/get_bank_account_response.rb +1 -1
- data/lib/square/types/get_booking_request.rb +23 -0
- data/lib/square/types/get_business_booking_profile_request.rb +23 -0
- data/lib/square/types/get_card_request.rb +23 -0
- data/lib/square/types/get_catalog_object_response.rb +1 -3
- data/lib/square/types/get_customer_custom_attribute_definition_response.rb +4 -4
- data/lib/square/types/get_customer_custom_attribute_response.rb +2 -1
- data/lib/square/types/get_customer_group_request.rb +23 -0
- data/lib/square/types/get_customer_request.rb +23 -0
- data/lib/square/types/get_customer_segment_request.rb +23 -0
- data/lib/square/types/get_dispute_evidence_request.rb +23 -0
- data/lib/square/types/get_dispute_request.rb +23 -0
- data/lib/square/types/get_employee_request.rb +23 -0
- data/lib/square/types/get_gift_card_request.rb +23 -0
- data/lib/square/types/get_inventory_adjustment_request.rb +23 -0
- data/lib/square/types/get_inventory_physical_count_request.rb +23 -0
- data/lib/square/types/get_inventory_transfer_request.rb +23 -0
- data/lib/square/types/get_location_request.rb +23 -0
- data/lib/square/types/get_loyalty_account_request.rb +23 -0
- data/lib/square/types/get_loyalty_program_request.rb +23 -0
- data/lib/square/types/get_loyalty_promotion_request.rb +23 -0
- data/lib/square/types/get_loyalty_reward_request.rb +23 -0
- data/lib/square/types/get_merchant_request.rb +23 -0
- data/lib/square/types/get_order_request.rb +23 -0
- data/lib/square/types/get_payment_link_request.rb +23 -0
- data/lib/square/types/get_snippet_request.rb +23 -0
- data/lib/square/types/get_team_member_booking_profile_request.rb +23 -0
- data/lib/square/types/get_team_member_booking_profile_response.rb +1 -3
- data/lib/square/types/get_team_member_request.rb +23 -0
- data/lib/square/types/get_transaction_request.rb +23 -0
- data/lib/square/types/get_vendor_request.rb +23 -0
- data/lib/square/types/get_wage_setting_request.rb +23 -0
- data/lib/square/types/get_webhook_subscription_request.rb +23 -0
- data/lib/square/types/get_webhook_subscription_response.rb +2 -1
- data/lib/square/types/gift_card_activity.rb +8 -24
- data/lib/square/types/gift_card_activity_block_reason.rb +23 -0
- data/lib/square/types/gift_card_activity_unblock_reason.rb +23 -0
- data/lib/square/types/gift_card_activity_updated_event.rb +2 -1
- data/lib/square/types/inventory_count_updated_event_object.rb +1 -3
- data/lib/square/types/invoice.rb +6 -13
- data/lib/square/types/invoice_accepted_payment_methods.rb +2 -1
- data/lib/square/types/invoice_attachment.rb +1 -1
- data/lib/square/types/invoice_custom_field.rb +2 -1
- data/lib/square/types/invoice_payment_made_event.rb +2 -1
- data/lib/square/types/invoice_payment_request.rb +6 -8
- data/lib/square/types/invoice_refunded_event.rb +2 -1
- data/lib/square/types/invoice_sort_field.rb +23 -0
- data/lib/square/types/labor_scheduled_shift_created_event_object.rb +1 -1
- data/lib/square/types/labor_scheduled_shift_published_event_object.rb +1 -1
- data/lib/square/types/labor_scheduled_shift_updated_event_object.rb +1 -1
- data/lib/square/types/list_bank_accounts_response.rb +1 -1
- data/lib/square/types/list_booking_custom_attribute_definitions_response.rb +4 -4
- data/lib/square/types/list_booking_custom_attributes_response.rb +3 -4
- data/lib/square/types/list_cash_drawer_shift_events_response.rb +1 -3
- data/lib/square/types/list_cash_drawer_shifts_response.rb +1 -3
- data/lib/square/types/list_channels_request_constants.rb +23 -0
- data/lib/square/types/list_customer_custom_attribute_definitions_response.rb +4 -4
- data/lib/square/types/list_customer_custom_attributes_response.rb +3 -4
- data/lib/square/types/list_gift_card_activities_response.rb +1 -3
- data/lib/square/types/list_location_booking_profiles_response.rb +1 -3
- data/lib/square/types/list_location_custom_attribute_definitions_response.rb +4 -4
- data/lib/square/types/list_location_custom_attributes_response.rb +3 -4
- data/lib/square/types/list_loyalty_promotions_response.rb +1 -3
- data/lib/square/types/list_merchant_custom_attribute_definitions_response.rb +4 -4
- data/lib/square/types/list_merchant_custom_attributes_response.rb +3 -4
- data/lib/square/types/list_order_custom_attribute_definitions_response.rb +1 -3
- data/lib/square/types/list_order_custom_attributes_response.rb +1 -3
- data/lib/square/types/list_subscription_events_response.rb +1 -3
- data/lib/square/types/list_team_member_booking_profiles_response.rb +1 -3
- data/lib/square/types/list_team_member_wages_response.rb +1 -3
- data/lib/square/types/list_webhook_subscriptions_response.rb +1 -3
- data/lib/square/types/list_workweek_configs_response.rb +1 -3
- data/lib/square/types/location.rb +1 -3
- data/lib/square/types/location_booking_profile.rb +2 -1
- data/lib/square/types/location_custom_attribute_visible_updated_event.rb +6 -3
- data/lib/square/types/loyalty_account.rb +1 -3
- data/lib/square/types/loyalty_account_mapping_type.rb +23 -0
- data/lib/square/types/loyalty_event.rb +3 -4
- data/lib/square/types/loyalty_event_filter.rb +1 -3
- data/lib/square/types/loyalty_program.rb +4 -7
- data/lib/square/types/loyalty_program_accrual_rule.rb +3 -4
- data/lib/square/types/loyalty_program_reward_tier.rb +3 -1
- data/lib/square/types/loyalty_promotion_incentive.rb +2 -6
- data/lib/square/types/loyalty_promotion_incentive_points_addition_data.rb +2 -1
- data/lib/square/types/loyalty_promotion_incentive_points_multiplier_data.rb +2 -1
- data/lib/square/types/loyalty_promotion_trigger_limit.rb +2 -1
- data/lib/square/types/loyalty_reward.rb +4 -2
- data/lib/square/types/measurement_unit_generic.rb +23 -0
- data/lib/square/types/oauth_authorization_revoked_event_object.rb +1 -3
- data/lib/square/types/oauth_authorization_revoked_event_revocation_object.rb +1 -3
- data/lib/square/types/order.rb +2 -6
- data/lib/square/types/order_card_surcharge_treatment_type.rb +12 -0
- data/lib/square/types/order_custom_attribute_definition_owned_created_event.rb +2 -1
- data/lib/square/types/order_custom_attribute_definition_owned_deleted_event.rb +2 -1
- data/lib/square/types/order_custom_attribute_definition_owned_updated_event.rb +2 -1
- data/lib/square/types/order_custom_attribute_definition_visible_created_event.rb +2 -1
- data/lib/square/types/order_custom_attribute_definition_visible_deleted_event.rb +2 -1
- data/lib/square/types/order_custom_attribute_definition_visible_updated_event.rb +2 -1
- data/lib/square/types/order_custom_attribute_owned_deleted_event.rb +2 -1
- data/lib/square/types/order_custom_attribute_owned_updated_event.rb +2 -1
- data/lib/square/types/order_custom_attribute_visible_deleted_event.rb +2 -1
- data/lib/square/types/order_custom_attribute_visible_updated_event.rb +2 -1
- data/lib/square/types/order_fulfillment_updated.rb +1 -3
- data/lib/square/types/order_line_item.rb +4 -12
- data/lib/square/types/order_line_item_applied_tax.rb +1 -0
- data/lib/square/types/order_line_item_pricing_blocklists.rb +3 -6
- data/lib/square/types/order_line_item_pricing_blocklists_blocked_service_charge.rb +14 -0
- data/lib/square/types/order_return.rb +3 -9
- data/lib/square/types/order_return_line_item.rb +4 -12
- data/lib/square/types/order_return_service_charge.rb +3 -6
- data/lib/square/types/order_service_charge.rb +2 -6
- data/lib/square/types/payment.rb +1 -3
- data/lib/square/types/payment_link_related_resources.rb +1 -3
- data/lib/square/types/payment_refund.rb +1 -3
- data/lib/square/types/payout_entry.rb +24 -72
- data/lib/square/types/pre_populated_data.rb +2 -1
- data/lib/square/types/product_type.rb +23 -0
- data/lib/square/types/refund.rb +1 -3
- data/lib/square/types/retrieve_booking_custom_attribute_definition_response.rb +4 -4
- data/lib/square/types/retrieve_booking_custom_attribute_response.rb +2 -1
- data/lib/square/types/retrieve_location_custom_attribute_definition_response.rb +4 -4
- data/lib/square/types/retrieve_location_custom_attribute_response.rb +2 -1
- data/lib/square/types/retrieve_merchant_custom_attribute_definition_response.rb +4 -4
- data/lib/square/types/retrieve_merchant_custom_attribute_response.rb +2 -1
- data/lib/square/types/retrieve_order_custom_attribute_definition_response.rb +1 -3
- data/lib/square/types/scheduled_shift_filter.rb +3 -7
- data/lib/square/types/scheduled_shift_workday.rb +1 -3
- data/lib/square/types/search_availability_filter.rb +1 -3
- data/lib/square/types/search_catalog_items_response.rb +2 -1
- data/lib/square/types/search_catalog_objects_response.rb +1 -3
- data/lib/square/types/search_events_sort_field.rb +23 -0
- data/lib/square/types/search_loyalty_accounts_request_loyalty_account_query.rb +1 -3
- data/lib/square/types/search_loyalty_accounts_response.rb +1 -3
- data/lib/square/types/search_orders_date_time_filter.rb +2 -1
- data/lib/square/types/search_orders_fulfillment_filter.rb +2 -6
- data/lib/square/types/search_orders_source_filter.rb +2 -0
- data/lib/square/types/search_scheduled_shifts_response.rb +1 -3
- data/lib/square/types/search_transfer_orders_response.rb +1 -3
- data/lib/square/types/shift_filter.rb +3 -2
- data/lib/square/types/shift_query.rb +2 -1
- data/lib/square/types/shift_sort.rb +2 -1
- data/lib/square/types/shift_wage.rb +2 -1
- data/lib/square/types/shift_workday.rb +2 -1
- data/lib/square/types/snippet.rb +2 -1
- data/lib/square/types/standard_unit_description_group.rb +1 -3
- data/lib/square/types/subscription_event.rb +1 -3
- data/lib/square/types/subscription_phase.rb +2 -1
- data/lib/square/types/subscription_test_result.rb +5 -3
- data/lib/square/types/team_member_assigned_locations.rb +1 -3
- data/lib/square/types/team_member_booking_profile.rb +2 -1
- data/lib/square/types/tender.rb +2 -6
- data/lib/square/types/tender_buy_now_pay_later_details.rb +1 -3
- data/lib/square/types/terminal_refund.rb +2 -1
- data/lib/square/types/test_webhook_subscription_response.rb +5 -5
- data/lib/square/types/timecard_filter.rb +1 -1
- data/lib/square/types/transfer_order.rb +1 -3
- data/lib/square/types/transfer_order_filter.rb +1 -3
- data/lib/square/types/transfer_order_goods_receipt.rb +1 -3
- data/lib/square/types/update_booking_custom_attribute_definition_response.rb +4 -4
- data/lib/square/types/update_customer_custom_attribute_definition_response.rb +4 -4
- data/lib/square/types/update_location_custom_attribute_definition_response.rb +4 -4
- data/lib/square/types/update_merchant_custom_attribute_definition_response.rb +4 -4
- data/lib/square/types/update_order_custom_attribute_definition_response.rb +1 -3
- data/lib/square/types/update_transfer_order_data.rb +1 -3
- data/lib/square/types/update_webhook_subscription_response.rb +2 -1
- data/lib/square/types/update_webhook_subscription_signature_key_response.rb +3 -1
- data/lib/square/types/upsert_booking_custom_attribute_response.rb +2 -1
- data/lib/square/types/upsert_catalog_object_response.rb +1 -3
- data/lib/square/types/upsert_customer_custom_attribute_response.rb +2 -1
- data/lib/square/types/upsert_location_custom_attribute_response.rb +2 -1
- data/lib/square/types/upsert_merchant_custom_attribute_response.rb +2 -1
- data/lib/square/types/v_1_get_payment_request.rb +23 -0
- data/lib/square/types/v_1_get_settlement_request.rb +23 -0
- data/lib/square/types/v_1_order.rb +1 -3
- data/lib/square/types/vendor_created_event_object_operation.rb +23 -0
- data/lib/square/types/vendor_updated_event_object_operation.rb +23 -0
- data/lib/square/types/wage_setting.rb +1 -3
- data/lib/square/v_1_transactions/client.rb +72 -29
- data/lib/square/vendors/client.rb +126 -51
- data/lib/square/vendors/types/batch_update_vendors_request.rb +1 -3
- data/lib/square/version.rb +1 -1
- data/lib/square/webhooks/client.rb +3 -1
- data/lib/square/webhooks/event_types/client.rb +25 -14
- data/lib/square/webhooks/subscriptions/client.rb +164 -69
- data/lib/square.rb +57 -5
- data/lib/square_legacy/utilities/webhooks_helper.rb +1 -1
- data/reference.md +29588 -0
- data/wiremock/docker-compose.test.yml +14 -0
- data/wiremock/wiremock-mappings.json +1 -0
- metadata +69 -45
- data/lib/square/mobile/client.rb +0 -50
- data/lib/square/mobile/types/create_mobile_authorization_code_request.rb +0 -11
- data/lib/square/types/create_mobile_authorization_code_response.rb +0 -13
- data/test/square/integration/client_tests/test_cash_drawers.rb +0 -27
- data/test/square/integration/client_tests/test_catalog.rb +0 -704
- data/test/square/integration/client_tests/test_customers.rb +0 -65
- data/test/square/integration/client_tests/test_customers_groups.rb +0 -144
- data/test/square/integration/client_tests/test_customers_segments.rb +0 -36
- data/test/square/integration/client_tests/test_devices.rb +0 -67
- data/test/square/integration/client_tests/test_inventory.rb +0 -28
- data/test/square/integration/client_tests/test_locations.rb +0 -18
- data/test/square/integration/client_tests/test_merchants.rb +0 -40
- data/test/square/integration/client_tests/test_mobile.rb +0 -21
- data/test/square/integration/client_tests/test_orders.rb +0 -177
- data/test/square/integration/client_tests/test_payments.rb +0 -167
- data/test/square/integration/client_tests/test_refunds.rb +0 -133
- data/test/square/integration/client_tests/test_team_members.rb +0 -97
- data/test/square/integration/client_tests/test_terminal.rb +0 -107
- data/test/square/integration/integration_test_base.rb +0 -16
- data/test/square/integration/testdata/image.jpeg +0 -0
- data/test/square/internal/multipart/test_form_data.rb +0 -311
- data/test/square/internal/types/test_array.rb +0 -37
- data/test/square/internal/types/test_boolean.rb +0 -35
- data/test/square/internal/types/test_enum.rb +0 -42
- data/test/square/internal/types/test_hash.rb +0 -50
- data/test/square/internal/types/test_model.rb +0 -105
- data/test/square/internal/types/test_union.rb +0 -52
- data/test/square/internal/types/test_utils.rb +0 -216
- data/test/square_legacy/api/api_test_base.rb +0 -27
- data/test/square_legacy/api/test_catalog_api.rb +0 -57
- data/test/square_legacy/api/test_customers_api.rb +0 -43
- data/test/square_legacy/api/test_employees_api.rb +0 -34
- data/test/square_legacy/api/test_labor_api.rb +0 -82
- data/test/square_legacy/api/test_locations_api.rb +0 -22
- data/test/square_legacy/api/test_merchants_api.rb +0 -38
- data/test/square_legacy/api/test_payments_api.rb +0 -40
- data/test/square_legacy/api/test_refunds_api.rb +0 -42
- data/test/square_legacy/http_response_catcher.rb +0 -14
- data/test/square_legacy/webhooks/test_webhooks_helper.rb +0 -153
- data/test/test_helper.rb +0 -123
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
module Square
|
|
4
4
|
module GiftCards
|
|
5
5
|
class Client
|
|
6
|
-
# @
|
|
6
|
+
# @param client [Square::Internal::Http::RawClient]
|
|
7
|
+
#
|
|
8
|
+
# @return [void]
|
|
7
9
|
def initialize(client:)
|
|
8
10
|
@client = client
|
|
9
11
|
end
|
|
@@ -11,183 +13,275 @@ module Square
|
|
|
11
13
|
# Lists all gift cards. You can specify optional filters to retrieve
|
|
12
14
|
# a subset of the gift cards. Results are sorted by `created_at` in ascending order.
|
|
13
15
|
#
|
|
16
|
+
# @param request_options [Hash]
|
|
17
|
+
# @param params [Hash]
|
|
18
|
+
# @option request_options [String] :base_url
|
|
19
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
20
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
21
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
22
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
23
|
+
# @option params [String, nil] :type
|
|
24
|
+
# @option params [String, nil] :state
|
|
25
|
+
# @option params [Integer, nil] :limit
|
|
26
|
+
# @option params [String, nil] :cursor
|
|
27
|
+
# @option params [String, nil] :customer_id
|
|
28
|
+
#
|
|
14
29
|
# @return [Square::Types::ListGiftCardsResponse]
|
|
15
30
|
def list(request_options: {}, **params)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
].
|
|
20
|
-
|
|
21
|
-
params.
|
|
31
|
+
params = Square::Internal::Types::Utils.normalize_keys(params)
|
|
32
|
+
query_param_names = %i[type state limit cursor customer_id]
|
|
33
|
+
query_params = {}
|
|
34
|
+
query_params["type"] = params[:type] if params.key?(:type)
|
|
35
|
+
query_params["state"] = params[:state] if params.key?(:state)
|
|
36
|
+
query_params["limit"] = params[:limit] if params.key?(:limit)
|
|
37
|
+
query_params["cursor"] = params[:cursor] if params.key?(:cursor)
|
|
38
|
+
query_params["customer_id"] = params[:customer_id] if params.key?(:customer_id)
|
|
39
|
+
params.except(*query_param_names)
|
|
22
40
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
41
|
+
Square::Internal::CursorItemIterator.new(
|
|
42
|
+
cursor_field: :cursor,
|
|
43
|
+
item_field: :gift_cards,
|
|
44
|
+
initial_cursor: query_params[:cursor]
|
|
45
|
+
) do |next_cursor|
|
|
46
|
+
query_params[:cursor] = next_cursor
|
|
47
|
+
request = Square::Internal::JSON::Request.new(
|
|
48
|
+
base_url: request_options[:base_url],
|
|
49
|
+
method: "GET",
|
|
50
|
+
path: "v2/gift-cards",
|
|
51
|
+
query: query_params,
|
|
52
|
+
request_options: request_options
|
|
53
|
+
)
|
|
54
|
+
begin
|
|
55
|
+
response = @client.send(request)
|
|
56
|
+
rescue Net::HTTPRequestTimeout
|
|
57
|
+
raise Square::Errors::TimeoutError
|
|
58
|
+
end
|
|
59
|
+
code = response.code.to_i
|
|
60
|
+
if code.between?(200, 299)
|
|
61
|
+
Square::Types::ListGiftCardsResponse.load(response.body)
|
|
62
|
+
else
|
|
63
|
+
error_class = Square::Errors::ResponseError.subclass_for_code(code)
|
|
64
|
+
raise error_class.new(response.body, code: code)
|
|
65
|
+
end
|
|
40
66
|
end
|
|
41
67
|
end
|
|
42
68
|
|
|
43
69
|
# Creates a digital gift card or registers a physical (plastic) gift card. The resulting gift card
|
|
44
70
|
# has a `PENDING` state. To activate a gift card so that it can be redeemed for purchases, call
|
|
45
71
|
# [CreateGiftCardActivity](api-endpoint:GiftCardActivities-CreateGiftCardActivity) and create an `ACTIVATE`
|
|
46
|
-
# activity with the initial balance. Alternatively, you can use
|
|
72
|
+
# activity with the initial balance. Alternatively, you can use
|
|
73
|
+
# [RefundPayment](api-endpoint:Refunds-RefundPayment)
|
|
47
74
|
# to refund a payment to the new gift card.
|
|
48
75
|
#
|
|
76
|
+
# @param request_options [Hash]
|
|
77
|
+
# @param params [Square::GiftCards::Types::CreateGiftCardRequest]
|
|
78
|
+
# @option request_options [String] :base_url
|
|
79
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
80
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
81
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
82
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
83
|
+
#
|
|
49
84
|
# @return [Square::Types::CreateGiftCardResponse]
|
|
50
85
|
def create(request_options: {}, **params)
|
|
51
|
-
|
|
52
|
-
|
|
86
|
+
params = Square::Internal::Types::Utils.normalize_keys(params)
|
|
87
|
+
request = Square::Internal::JSON::Request.new(
|
|
88
|
+
base_url: request_options[:base_url],
|
|
53
89
|
method: "POST",
|
|
54
90
|
path: "v2/gift-cards",
|
|
55
|
-
body: params
|
|
91
|
+
body: Square::GiftCards::Types::CreateGiftCardRequest.new(params).to_h,
|
|
92
|
+
request_options: request_options
|
|
56
93
|
)
|
|
57
94
|
begin
|
|
58
|
-
|
|
95
|
+
response = @client.send(request)
|
|
59
96
|
rescue Net::HTTPRequestTimeout
|
|
60
97
|
raise Square::Errors::TimeoutError
|
|
61
98
|
end
|
|
62
|
-
code =
|
|
99
|
+
code = response.code.to_i
|
|
63
100
|
if code.between?(200, 299)
|
|
64
|
-
Square::Types::CreateGiftCardResponse.load(
|
|
101
|
+
Square::Types::CreateGiftCardResponse.load(response.body)
|
|
65
102
|
else
|
|
66
103
|
error_class = Square::Errors::ResponseError.subclass_for_code(code)
|
|
67
|
-
raise error_class.new(
|
|
104
|
+
raise error_class.new(response.body, code: code)
|
|
68
105
|
end
|
|
69
106
|
end
|
|
70
107
|
|
|
71
108
|
# Retrieves a gift card using the gift card account number (GAN).
|
|
72
109
|
#
|
|
110
|
+
# @param request_options [Hash]
|
|
111
|
+
# @param params [Square::GiftCards::Types::GetGiftCardFromGanRequest]
|
|
112
|
+
# @option request_options [String] :base_url
|
|
113
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
114
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
115
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
116
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
117
|
+
#
|
|
73
118
|
# @return [Square::Types::GetGiftCardFromGanResponse]
|
|
74
119
|
def get_from_gan(request_options: {}, **params)
|
|
75
|
-
|
|
76
|
-
|
|
120
|
+
params = Square::Internal::Types::Utils.normalize_keys(params)
|
|
121
|
+
request = Square::Internal::JSON::Request.new(
|
|
122
|
+
base_url: request_options[:base_url],
|
|
77
123
|
method: "POST",
|
|
78
124
|
path: "v2/gift-cards/from-gan",
|
|
79
|
-
body: params
|
|
125
|
+
body: Square::GiftCards::Types::GetGiftCardFromGanRequest.new(params).to_h,
|
|
126
|
+
request_options: request_options
|
|
80
127
|
)
|
|
81
128
|
begin
|
|
82
|
-
|
|
129
|
+
response = @client.send(request)
|
|
83
130
|
rescue Net::HTTPRequestTimeout
|
|
84
131
|
raise Square::Errors::TimeoutError
|
|
85
132
|
end
|
|
86
|
-
code =
|
|
133
|
+
code = response.code.to_i
|
|
87
134
|
if code.between?(200, 299)
|
|
88
|
-
Square::Types::GetGiftCardFromGanResponse.load(
|
|
135
|
+
Square::Types::GetGiftCardFromGanResponse.load(response.body)
|
|
89
136
|
else
|
|
90
137
|
error_class = Square::Errors::ResponseError.subclass_for_code(code)
|
|
91
|
-
raise error_class.new(
|
|
138
|
+
raise error_class.new(response.body, code: code)
|
|
92
139
|
end
|
|
93
140
|
end
|
|
94
141
|
|
|
95
142
|
# Retrieves a gift card using a secure payment token that represents the gift card.
|
|
96
143
|
#
|
|
144
|
+
# @param request_options [Hash]
|
|
145
|
+
# @param params [Square::GiftCards::Types::GetGiftCardFromNonceRequest]
|
|
146
|
+
# @option request_options [String] :base_url
|
|
147
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
148
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
149
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
150
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
151
|
+
#
|
|
97
152
|
# @return [Square::Types::GetGiftCardFromNonceResponse]
|
|
98
153
|
def get_from_nonce(request_options: {}, **params)
|
|
99
|
-
|
|
100
|
-
|
|
154
|
+
params = Square::Internal::Types::Utils.normalize_keys(params)
|
|
155
|
+
request = Square::Internal::JSON::Request.new(
|
|
156
|
+
base_url: request_options[:base_url],
|
|
101
157
|
method: "POST",
|
|
102
158
|
path: "v2/gift-cards/from-nonce",
|
|
103
|
-
body: params
|
|
159
|
+
body: Square::GiftCards::Types::GetGiftCardFromNonceRequest.new(params).to_h,
|
|
160
|
+
request_options: request_options
|
|
104
161
|
)
|
|
105
162
|
begin
|
|
106
|
-
|
|
163
|
+
response = @client.send(request)
|
|
107
164
|
rescue Net::HTTPRequestTimeout
|
|
108
165
|
raise Square::Errors::TimeoutError
|
|
109
166
|
end
|
|
110
|
-
code =
|
|
167
|
+
code = response.code.to_i
|
|
111
168
|
if code.between?(200, 299)
|
|
112
|
-
Square::Types::GetGiftCardFromNonceResponse.load(
|
|
169
|
+
Square::Types::GetGiftCardFromNonceResponse.load(response.body)
|
|
113
170
|
else
|
|
114
171
|
error_class = Square::Errors::ResponseError.subclass_for_code(code)
|
|
115
|
-
raise error_class.new(
|
|
172
|
+
raise error_class.new(response.body, code: code)
|
|
116
173
|
end
|
|
117
174
|
end
|
|
118
175
|
|
|
119
176
|
# Links a customer to a gift card, which is also referred to as adding a card on file.
|
|
120
177
|
#
|
|
178
|
+
# @param request_options [Hash]
|
|
179
|
+
# @param params [Square::GiftCards::Types::LinkCustomerToGiftCardRequest]
|
|
180
|
+
# @option request_options [String] :base_url
|
|
181
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
182
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
183
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
184
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
185
|
+
# @option params [String] :gift_card_id
|
|
186
|
+
#
|
|
121
187
|
# @return [Square::Types::LinkCustomerToGiftCardResponse]
|
|
122
188
|
def link_customer(request_options: {}, **params)
|
|
123
|
-
|
|
189
|
+
params = Square::Internal::Types::Utils.normalize_keys(params)
|
|
190
|
+
request_data = Square::GiftCards::Types::LinkCustomerToGiftCardRequest.new(params).to_h
|
|
191
|
+
non_body_param_names = ["gift_card_id"]
|
|
192
|
+
body = request_data.except(*non_body_param_names)
|
|
124
193
|
|
|
125
|
-
|
|
126
|
-
base_url: request_options[:base_url]
|
|
194
|
+
request = Square::Internal::JSON::Request.new(
|
|
195
|
+
base_url: request_options[:base_url],
|
|
127
196
|
method: "POST",
|
|
128
197
|
path: "v2/gift-cards/#{params[:gift_card_id]}/link-customer",
|
|
129
|
-
body:
|
|
198
|
+
body: body,
|
|
199
|
+
request_options: request_options
|
|
130
200
|
)
|
|
131
201
|
begin
|
|
132
|
-
|
|
202
|
+
response = @client.send(request)
|
|
133
203
|
rescue Net::HTTPRequestTimeout
|
|
134
204
|
raise Square::Errors::TimeoutError
|
|
135
205
|
end
|
|
136
|
-
code =
|
|
206
|
+
code = response.code.to_i
|
|
137
207
|
if code.between?(200, 299)
|
|
138
|
-
Square::Types::LinkCustomerToGiftCardResponse.load(
|
|
208
|
+
Square::Types::LinkCustomerToGiftCardResponse.load(response.body)
|
|
139
209
|
else
|
|
140
210
|
error_class = Square::Errors::ResponseError.subclass_for_code(code)
|
|
141
|
-
raise error_class.new(
|
|
211
|
+
raise error_class.new(response.body, code: code)
|
|
142
212
|
end
|
|
143
213
|
end
|
|
144
214
|
|
|
145
215
|
# Unlinks a customer from a gift card, which is also referred to as removing a card on file.
|
|
146
216
|
#
|
|
217
|
+
# @param request_options [Hash]
|
|
218
|
+
# @param params [Square::GiftCards::Types::UnlinkCustomerFromGiftCardRequest]
|
|
219
|
+
# @option request_options [String] :base_url
|
|
220
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
221
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
222
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
223
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
224
|
+
# @option params [String] :gift_card_id
|
|
225
|
+
#
|
|
147
226
|
# @return [Square::Types::UnlinkCustomerFromGiftCardResponse]
|
|
148
227
|
def unlink_customer(request_options: {}, **params)
|
|
149
|
-
|
|
228
|
+
params = Square::Internal::Types::Utils.normalize_keys(params)
|
|
229
|
+
request_data = Square::GiftCards::Types::UnlinkCustomerFromGiftCardRequest.new(params).to_h
|
|
230
|
+
non_body_param_names = ["gift_card_id"]
|
|
231
|
+
body = request_data.except(*non_body_param_names)
|
|
150
232
|
|
|
151
|
-
|
|
152
|
-
base_url: request_options[:base_url]
|
|
233
|
+
request = Square::Internal::JSON::Request.new(
|
|
234
|
+
base_url: request_options[:base_url],
|
|
153
235
|
method: "POST",
|
|
154
236
|
path: "v2/gift-cards/#{params[:gift_card_id]}/unlink-customer",
|
|
155
|
-
body:
|
|
237
|
+
body: body,
|
|
238
|
+
request_options: request_options
|
|
156
239
|
)
|
|
157
240
|
begin
|
|
158
|
-
|
|
241
|
+
response = @client.send(request)
|
|
159
242
|
rescue Net::HTTPRequestTimeout
|
|
160
243
|
raise Square::Errors::TimeoutError
|
|
161
244
|
end
|
|
162
|
-
code =
|
|
245
|
+
code = response.code.to_i
|
|
163
246
|
if code.between?(200, 299)
|
|
164
|
-
Square::Types::UnlinkCustomerFromGiftCardResponse.load(
|
|
247
|
+
Square::Types::UnlinkCustomerFromGiftCardResponse.load(response.body)
|
|
165
248
|
else
|
|
166
249
|
error_class = Square::Errors::ResponseError.subclass_for_code(code)
|
|
167
|
-
raise error_class.new(
|
|
250
|
+
raise error_class.new(response.body, code: code)
|
|
168
251
|
end
|
|
169
252
|
end
|
|
170
253
|
|
|
171
254
|
# Retrieves a gift card using the gift card ID.
|
|
172
255
|
#
|
|
256
|
+
# @param request_options [Hash]
|
|
257
|
+
# @param params [Hash]
|
|
258
|
+
# @option request_options [String] :base_url
|
|
259
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
260
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
261
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
262
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
263
|
+
# @option params [String] :id
|
|
264
|
+
#
|
|
173
265
|
# @return [Square::Types::GetGiftCardResponse]
|
|
174
266
|
def get(request_options: {}, **params)
|
|
175
|
-
|
|
176
|
-
|
|
267
|
+
params = Square::Internal::Types::Utils.normalize_keys(params)
|
|
268
|
+
request = Square::Internal::JSON::Request.new(
|
|
269
|
+
base_url: request_options[:base_url],
|
|
177
270
|
method: "GET",
|
|
178
|
-
path: "v2/gift-cards/#{params[:id]}"
|
|
271
|
+
path: "v2/gift-cards/#{params[:id]}",
|
|
272
|
+
request_options: request_options
|
|
179
273
|
)
|
|
180
274
|
begin
|
|
181
|
-
|
|
275
|
+
response = @client.send(request)
|
|
182
276
|
rescue Net::HTTPRequestTimeout
|
|
183
277
|
raise Square::Errors::TimeoutError
|
|
184
278
|
end
|
|
185
|
-
code =
|
|
279
|
+
code = response.code.to_i
|
|
186
280
|
if code.between?(200, 299)
|
|
187
|
-
Square::Types::GetGiftCardResponse.load(
|
|
281
|
+
Square::Types::GetGiftCardResponse.load(response.body)
|
|
188
282
|
else
|
|
189
283
|
error_class = Square::Errors::ResponseError.subclass_for_code(code)
|
|
190
|
-
raise error_class.new(
|
|
284
|
+
raise error_class.new(response.body, code: code)
|
|
191
285
|
end
|
|
192
286
|
end
|
|
193
287
|
|
|
@@ -22,6 +22,12 @@ module Square
|
|
|
22
22
|
@request_options = request_options
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
+
# @return [Hash] The query parameters merged with additional query parameters from request options.
|
|
26
|
+
def encode_query
|
|
27
|
+
additional_query = @request_options&.dig(:additional_query_parameters) || @request_options&.dig("additional_query_parameters") || {}
|
|
28
|
+
@query.merge(additional_query)
|
|
29
|
+
end
|
|
30
|
+
|
|
25
31
|
# Child classes should implement:
|
|
26
32
|
# - encode_headers: Returns the encoded HTTP request headers.
|
|
27
33
|
# - encode_body: Returns the encoded HTTP request body.
|
|
@@ -5,6 +5,18 @@ module Square
|
|
|
5
5
|
module Http
|
|
6
6
|
# @api private
|
|
7
7
|
class RawClient
|
|
8
|
+
# Default HTTP status codes that trigger a retry
|
|
9
|
+
RETRYABLE_STATUSES = [408, 429, 500, 502, 503, 504, 521, 522, 524].freeze
|
|
10
|
+
# Initial delay between retries in seconds
|
|
11
|
+
INITIAL_RETRY_DELAY = 0.5
|
|
12
|
+
# Maximum delay between retries in seconds
|
|
13
|
+
MAX_RETRY_DELAY = 60.0
|
|
14
|
+
# Jitter factor for randomizing retry delays (20%)
|
|
15
|
+
JITTER_FACTOR = 0.2
|
|
16
|
+
|
|
17
|
+
# @return [String] The base URL for requests
|
|
18
|
+
attr_reader :base_url
|
|
19
|
+
|
|
8
20
|
# @param base_url [String] The base url for the request.
|
|
9
21
|
# @param max_retries [Integer] The number of times to retry a failed request, defaults to 2.
|
|
10
22
|
# @param timeout [Float] The timeout for the request, defaults to 60.0 seconds.
|
|
@@ -24,34 +36,106 @@ module Square
|
|
|
24
36
|
# @return [HTTP::Response] The HTTP response.
|
|
25
37
|
def send(request)
|
|
26
38
|
url = build_url(request)
|
|
39
|
+
attempt = 0
|
|
40
|
+
response = nil
|
|
27
41
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
42
|
+
loop do
|
|
43
|
+
http_request = build_http_request(
|
|
44
|
+
url:,
|
|
45
|
+
method: request.method,
|
|
46
|
+
headers: request.encode_headers,
|
|
47
|
+
body: request.encode_body
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
conn = connect(url)
|
|
51
|
+
conn.open_timeout = @timeout
|
|
52
|
+
conn.read_timeout = @timeout
|
|
53
|
+
conn.write_timeout = @timeout
|
|
54
|
+
conn.continue_timeout = @timeout
|
|
55
|
+
|
|
56
|
+
response = conn.request(http_request)
|
|
57
|
+
|
|
58
|
+
break unless should_retry?(response, attempt)
|
|
59
|
+
|
|
60
|
+
delay = retry_delay(response, attempt)
|
|
61
|
+
sleep(delay)
|
|
62
|
+
attempt += 1
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
response
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Determines if a request should be retried based on the response status code.
|
|
69
|
+
# @param response [Net::HTTPResponse] The HTTP response.
|
|
70
|
+
# @param attempt [Integer] The current retry attempt (0-indexed).
|
|
71
|
+
# @return [Boolean] Whether the request should be retried.
|
|
72
|
+
def should_retry?(response, attempt)
|
|
73
|
+
return false if attempt >= @max_retries
|
|
74
|
+
|
|
75
|
+
status = response.code.to_i
|
|
76
|
+
RETRYABLE_STATUSES.include?(status)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Calculates the delay before the next retry attempt using exponential backoff with jitter.
|
|
80
|
+
# Respects Retry-After header if present.
|
|
81
|
+
# @param response [Net::HTTPResponse] The HTTP response.
|
|
82
|
+
# @param attempt [Integer] The current retry attempt (0-indexed).
|
|
83
|
+
# @return [Float] The delay in seconds before the next retry.
|
|
84
|
+
def retry_delay(response, attempt)
|
|
85
|
+
# Check for Retry-After header (can be seconds or HTTP date)
|
|
86
|
+
retry_after = response["Retry-After"]
|
|
87
|
+
if retry_after
|
|
88
|
+
delay = parse_retry_after(retry_after)
|
|
89
|
+
return [delay, MAX_RETRY_DELAY].min if delay&.positive?
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Exponential backoff with jitter: base_delay * 2^attempt
|
|
93
|
+
base_delay = INITIAL_RETRY_DELAY * (2**attempt)
|
|
94
|
+
add_jitter([base_delay, MAX_RETRY_DELAY].min)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# Parses the Retry-After header value.
|
|
98
|
+
# @param value [String] The Retry-After header value (seconds or HTTP date).
|
|
99
|
+
# @return [Float, nil] The delay in seconds, or nil if parsing fails.
|
|
100
|
+
def parse_retry_after(value)
|
|
101
|
+
# Try parsing as integer (seconds)
|
|
102
|
+
seconds = Integer(value, exception: false)
|
|
103
|
+
return seconds.to_f if seconds
|
|
34
104
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
105
|
+
# Try parsing as HTTP date
|
|
106
|
+
begin
|
|
107
|
+
retry_time = Time.httpdate(value)
|
|
108
|
+
delay = retry_time - Time.now
|
|
109
|
+
delay.positive? ? delay : nil
|
|
110
|
+
rescue ArgumentError
|
|
111
|
+
nil
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# Adds random jitter to a delay value.
|
|
116
|
+
# @param delay [Float] The base delay in seconds.
|
|
117
|
+
# @return [Float] The delay with jitter applied.
|
|
118
|
+
def add_jitter(delay)
|
|
119
|
+
jitter = delay * JITTER_FACTOR * (rand - 0.5) * 2
|
|
120
|
+
[delay + jitter, 0].max
|
|
47
121
|
end
|
|
48
122
|
|
|
49
123
|
# @param request [Square::Internal::Http::BaseRequest] The HTTP request.
|
|
50
124
|
# @return [URI::Generic] The URL.
|
|
51
125
|
def build_url(request)
|
|
126
|
+
encoded_query = request.encode_query
|
|
127
|
+
|
|
128
|
+
# If the path is already an absolute URL, use it directly
|
|
129
|
+
if request.path.start_with?("http://", "https://")
|
|
130
|
+
url = request.path
|
|
131
|
+
url = "#{url}?#{encode_query(encoded_query)}" if encoded_query&.any?
|
|
132
|
+
return URI.parse(url)
|
|
133
|
+
end
|
|
134
|
+
|
|
52
135
|
path = request.path.start_with?("/") ? request.path[1..] : request.path
|
|
53
|
-
|
|
54
|
-
url = "#{
|
|
136
|
+
base = request.base_url || @base_url
|
|
137
|
+
url = "#{base.chomp("/")}/#{path}"
|
|
138
|
+
url = "#{url}?#{encode_query(encoded_query)}" if encoded_query&.any?
|
|
55
139
|
URI.parse(url)
|
|
56
140
|
end
|
|
57
141
|
|
|
@@ -96,9 +180,16 @@ module Square
|
|
|
96
180
|
|
|
97
181
|
http = Net::HTTP.new(url.host, port)
|
|
98
182
|
http.use_ssl = is_https
|
|
183
|
+
# NOTE: We handle retries at the application level with HTTP status code awareness,
|
|
184
|
+
# so we set max_retries to 0 to disable Net::HTTP's built-in network-level retries.
|
|
99
185
|
http.max_retries = 0
|
|
100
186
|
http
|
|
101
187
|
end
|
|
188
|
+
|
|
189
|
+
# @return [String]
|
|
190
|
+
def inspect
|
|
191
|
+
"#<#{self.class.name}:0x#{object_id.to_s(16)} @base_url=#{@base_url.inspect}>"
|
|
192
|
+
end
|
|
102
193
|
end
|
|
103
194
|
end
|
|
104
195
|
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Square
|
|
4
|
+
module Internal
|
|
5
|
+
class CursorItemIterator < ItemIterator
|
|
6
|
+
# Instantiates a CursorItemIterator, an Enumerable class which wraps calls to a cursor-based paginated API and yields individual items from it.
|
|
7
|
+
#
|
|
8
|
+
# @param initial_cursor [String] The initial cursor to use when iterating, if any.
|
|
9
|
+
# @param cursor_field [Symbol] The field in API responses to extract the next cursor from.
|
|
10
|
+
# @param item_field [Symbol] The field in API responses to extract the items to iterate over.
|
|
11
|
+
# @param block [Proc] A block which is responsible for receiving a cursor to use and returning the given page from the API.
|
|
12
|
+
# @return [Square::Internal::CursorItemIterator]
|
|
13
|
+
def initialize(initial_cursor:, cursor_field:, item_field:, &)
|
|
14
|
+
super()
|
|
15
|
+
@item_field = item_field
|
|
16
|
+
@page_iterator = CursorPageIterator.new(initial_cursor:, cursor_field:, &)
|
|
17
|
+
@page = nil
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Returns the CursorPageIterator mediating access to the underlying API.
|
|
21
|
+
#
|
|
22
|
+
# @return [Square::Internal::CursorPageIterator]
|
|
23
|
+
def pages
|
|
24
|
+
@page_iterator
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Square
|
|
4
|
+
module Internal
|
|
5
|
+
class CursorPageIterator
|
|
6
|
+
include Enumerable
|
|
7
|
+
|
|
8
|
+
# Instantiates a CursorPageIterator, an Enumerable class which wraps calls to a cursor-based paginated API and yields pages of items.
|
|
9
|
+
#
|
|
10
|
+
# @param initial_cursor [String] The initial cursor to use when iterating, if any.
|
|
11
|
+
# @param cursor_field [Symbol] The name of the field in API responses to extract the next cursor from.
|
|
12
|
+
# @param block [Proc] A block which is responsible for receiving a cursor to use and returning the given page from the API.
|
|
13
|
+
# @return [Square::Internal::CursorPageIterator]
|
|
14
|
+
def initialize(initial_cursor:, cursor_field:, &block)
|
|
15
|
+
@need_initial_load = initial_cursor.nil?
|
|
16
|
+
@cursor = initial_cursor
|
|
17
|
+
@cursor_field = cursor_field
|
|
18
|
+
@get_next_page = block
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Iterates over each page returned by the API.
|
|
22
|
+
#
|
|
23
|
+
# @param block [Proc] The block which each retrieved page is yielded to.
|
|
24
|
+
# @return [NilClass]
|
|
25
|
+
def each(&block)
|
|
26
|
+
while (page = next_page)
|
|
27
|
+
block.call(page)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Whether another page will be available from the API.
|
|
32
|
+
#
|
|
33
|
+
# @return [Boolean]
|
|
34
|
+
def next?
|
|
35
|
+
@need_initial_load || !@cursor.nil?
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Retrieves the next page from the API.
|
|
39
|
+
#
|
|
40
|
+
# @return [Boolean]
|
|
41
|
+
def next_page
|
|
42
|
+
return if !@need_initial_load && @cursor.nil?
|
|
43
|
+
|
|
44
|
+
@need_initial_load = false
|
|
45
|
+
fetched_page = @get_next_page.call(@cursor)
|
|
46
|
+
@cursor = fetched_page.send(@cursor_field)
|
|
47
|
+
fetched_page
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|