spree_api 6.0.1 → 6.0.3

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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -2
  3. data/app/controllers/concerns/spree/api/v3/admin/embed_permissions.rb +11 -3
  4. data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +10 -0
  5. data/app/controllers/spree/api/v3/admin/products_controller.rb +56 -0
  6. data/app/serializers/spree/api/v3/admin/admin_user_serializer.rb +21 -3
  7. data/app/serializers/spree/api/v3/admin/delivery_profile_serializer.rb +2 -1
  8. data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +1 -1
  9. data/app/serializers/spree/api/v3/admin/import_serializer.rb +1 -1
  10. data/app/serializers/spree/api/v3/admin/invitation_serializer.rb +2 -2
  11. data/app/serializers/spree/api/v3/admin/payment_serializer.rb +5 -1
  12. data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +3 -1
  13. data/app/serializers/spree/api/v3/admin/product_serializer.rb +8 -0
  14. data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +2 -2
  15. data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +4 -1
  16. data/app/serializers/spree/api/v3/admin/promotion_serializer.rb +13 -0
  17. data/app/serializers/spree/api/v3/admin/return_serializer.rb +1 -1
  18. data/app/serializers/spree/api/v3/admin/seller_requirement_status_serializer.rb +3 -2
  19. data/app/serializers/spree/api/v3/admin/seller_serializer.rb +2 -2
  20. data/app/serializers/spree/api/v3/admin/session_serializer.rb +17 -0
  21. data/app/serializers/spree/api/v3/fulfillment_serializer.rb +1 -1
  22. data/app/serializers/spree/api/v3/seller/import_serializer.rb +1 -1
  23. data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +2 -2
  24. data/app/serializers/spree/api/v3/seller/product_serializer.rb +8 -0
  25. data/app/serializers/spree/api/v3/seller/requirement_status_serializer.rb +3 -2
  26. data/config/initializers/typelizer.rb +8 -19
  27. data/config/routes.rb +5 -0
  28. data/lib/spree/api/admin_document.rb +284 -0
  29. data/lib/spree/api/agent_operations.rb +300 -0
  30. data/lib/spree/api/agent_resource_map.rb +32 -7
  31. data/lib/spree/api/agent_write_schemas.rb +15 -51
  32. data/lib/spree/api/dependencies.rb +1 -1
  33. data/lib/spree/api/engine.rb +14 -1
  34. data/lib/spree/api/enum_types.rb +4 -1
  35. data/lib/spree/api/oauth.rb +40 -20
  36. data/lib/spree/api/openapi/schema_helper.rb +3 -3
  37. data/lib/spree/api/sdk_types.rb +190 -0
  38. data/lib/spree/api/sdk_types_task.rb +68 -0
  39. data/lib/spree/api/testing_support/agent_tools.rb +35 -0
  40. data/lib/spree/api/testing_support/agent_tools_contract.rb +110 -0
  41. data/lib/spree/api/testing_support/deterministic_openapi.rb +147 -0
  42. data/lib/spree/api/testing_support/filter_parameters.rb +99 -0
  43. data/lib/spree/api/testing_support/openapi.rb +232 -0
  44. data/lib/spree/api/testing_support/openapi_tasks.rb +21 -0
  45. data/lib/spree/api/typelizer_generation.rb +39 -11
  46. data/lib/tasks/openapi.rake +5 -0
  47. data/lib/tasks/sdk_types.rake +6 -0
  48. data/lib/typelizer/open_enums.rb +14 -2
  49. data/openapi/admin.yaml +89138 -0
  50. data/openapi/store.yaml +25412 -0
  51. metadata +24 -10
  52. data/lib/spree/api/agent_workflow_endpoints.rb +0 -113
@@ -0,0 +1,5 @@
1
+ # `spree task openapi:generate` (`bin/rails spree:openapi:generate`) in a Spree
2
+ # application: writes openapi/admin.yaml from the app's own rswag specs, so the
3
+ # admin endpoints it adds are documented, and each documented action is an
4
+ # agent tool. Extensions get the same task from extension_rake.
5
+ load File.expand_path('../spree/api/testing_support/openapi_tasks.rb', __dir__)
@@ -0,0 +1,6 @@
1
+ # `spree task sdk:serializer_types OUT=…` (`bin/rails spree:sdk:serializer_types`)
2
+ # in a Spree application: writes the response types of a package that extends
3
+ # the SDKs for the app's own endpoints, from the app's serializers. Extensions
4
+ # get the same task from extension_rake.
5
+ require 'spree/api/sdk_types_task'
6
+ Spree::Api::SdkTypesTask.new
@@ -19,10 +19,18 @@ module Typelizer
19
19
  # the standard can add a country, a currency or a unit, and markets only
20
20
  # accept the locales `Spree::Locales::ALL` lists.
21
21
  module OpenEnums
22
+ class << self
23
+ # Where a named list's type is imported from. Spree's own SDKs re-export
24
+ # it from `@spree/sdk-core`; an extension's package (Spree::Api::SdkTypes)
25
+ # sets this to nil and defines its lists itself, open unless closed.
26
+ attr_accessor :source
27
+ end
28
+ self.source = '@spree/sdk-core'
29
+
22
30
  CLOSED_TYPE_NAMES = %w[CountryCode CurrencyCode LocaleCode WeightUnit DimensionUnit].freeze
23
31
 
24
32
  CLOSED_LIST_NAMES = %w[
25
- ApiKeyType CaptureMethod CatalogAssignableType CatalogPriceSource ClaimResolution
33
+ AdminUserStatus ApiKeyType CaptureMethod CatalogAssignableType CatalogPriceSource ClaimResolution
26
34
  CollectionRuleMatchPolicy CollectionSortOrder CommissionKind CompanyInvitationStatus CompanyKind
27
35
  ConsentSource DataRequestKind DeliveryStatus DeliveryZoneMemberType DiscountKind DocumentNumberFormat
28
36
  EmailFont EmailTemplateKind FileUploadVisibility FulfillmentType MatchPolicy MediaType OptionTypeKind
@@ -61,7 +69,11 @@ module Typelizer
61
69
 
62
70
  module Property
63
71
  def enum_definition(...)
64
- super && "type { #{enum_type_name} } from '@spree/sdk-core'"
72
+ definition = super
73
+ return definition unless definition
74
+ return "type { #{enum_type_name} } from '#{OpenEnums.source}'" if OpenEnums.source
75
+
76
+ OpenEnums.closed?(enum_type_name) ? definition : "#{definition} | (string & {})"
65
77
  end
66
78
 
67
79
  # Typelizer skips rewriting a file whose digest is unchanged, and the