spree_api 6.0.2 → 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.
- checksums.yaml +4 -4
- data/app/controllers/concerns/spree/api/v3/admin/embed_permissions.rb +5 -2
- data/app/controllers/spree/api/v3/admin/products_controller.rb +56 -0
- data/app/serializers/spree/api/v3/admin/admin_user_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/admin/delivery_profile_serializer.rb +2 -1
- data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/admin/import_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/admin/invitation_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +3 -1
- data/app/serializers/spree/api/v3/admin/product_serializer.rb +8 -0
- data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +4 -1
- data/app/serializers/spree/api/v3/admin/promotion_serializer.rb +13 -0
- data/app/serializers/spree/api/v3/admin/return_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/admin/seller_requirement_status_serializer.rb +3 -2
- data/app/serializers/spree/api/v3/admin/seller_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/fulfillment_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/seller/import_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/seller/product_serializer.rb +8 -0
- data/app/serializers/spree/api/v3/seller/requirement_status_serializer.rb +3 -2
- data/config/initializers/typelizer.rb +8 -19
- data/config/routes.rb +5 -0
- data/lib/spree/api/admin_document.rb +284 -0
- data/lib/spree/api/agent_operations.rb +300 -0
- data/lib/spree/api/agent_resource_map.rb +32 -7
- data/lib/spree/api/agent_write_schemas.rb +15 -51
- data/lib/spree/api/engine.rb +14 -1
- data/lib/spree/api/enum_types.rb +4 -1
- data/lib/spree/api/openapi/schema_helper.rb +3 -3
- data/lib/spree/api/sdk_types.rb +190 -0
- data/lib/spree/api/sdk_types_task.rb +68 -0
- data/lib/spree/api/testing_support/agent_tools.rb +35 -0
- data/lib/spree/api/testing_support/agent_tools_contract.rb +110 -0
- data/lib/spree/api/testing_support/deterministic_openapi.rb +147 -0
- data/lib/spree/api/testing_support/filter_parameters.rb +99 -0
- data/lib/spree/api/testing_support/openapi.rb +232 -0
- data/lib/spree/api/testing_support/openapi_tasks.rb +21 -0
- data/lib/spree/api/typelizer_generation.rb +39 -11
- data/lib/tasks/openapi.rake +5 -0
- data/lib/tasks/sdk_types.rake +6 -0
- data/lib/typelizer/open_enums.rb +13 -1
- data/openapi/admin.yaml +1540 -33
- metadata +20 -9
- data/lib/spree/api/agent_workflow_endpoints.rb +0 -113
data/openapi/admin.yaml
CHANGED
|
@@ -3916,6 +3916,7 @@ paths:
|
|
|
3916
3916
|
summary: Reposition a category product
|
|
3917
3917
|
tags:
|
|
3918
3918
|
- Categories
|
|
3919
|
+
operationId: categories_reposition_product
|
|
3919
3920
|
security:
|
|
3920
3921
|
- api_key: []
|
|
3921
3922
|
bearer_auth: []
|
|
@@ -6081,6 +6082,9 @@ paths:
|
|
|
6081
6082
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
6082
6083
|
"/api/v3/admin/customers/{id}/anonymize":
|
|
6083
6084
|
post:
|
|
6085
|
+
x-spree-agent: false
|
|
6086
|
+
x-spree-agent-reason: Irreversible erasure of a person's data under GDPR Art.
|
|
6087
|
+
17, which is not something to offer a model behind one confirmation prompt.
|
|
6084
6088
|
summary: Erase a customer's personal data
|
|
6085
6089
|
tags:
|
|
6086
6090
|
- Customers
|
|
@@ -7701,6 +7705,94 @@ paths:
|
|
|
7701
7705
|
schema:
|
|
7702
7706
|
"$ref": "#/components/schemas/TaxIdentifierUpdateParams"
|
|
7703
7707
|
required: true
|
|
7708
|
+
"/api/v3/admin/customers/{customer_id}/tax_identifiers/{id}/validate":
|
|
7709
|
+
parameters:
|
|
7710
|
+
- name: x-spree-api-key
|
|
7711
|
+
in: header
|
|
7712
|
+
required: true
|
|
7713
|
+
schema:
|
|
7714
|
+
type: string
|
|
7715
|
+
- name: Authorization
|
|
7716
|
+
in: header
|
|
7717
|
+
required: true
|
|
7718
|
+
schema:
|
|
7719
|
+
type: string
|
|
7720
|
+
- name: customer_id
|
|
7721
|
+
in: path
|
|
7722
|
+
required: true
|
|
7723
|
+
schema:
|
|
7724
|
+
type: string
|
|
7725
|
+
- name: id
|
|
7726
|
+
in: path
|
|
7727
|
+
required: true
|
|
7728
|
+
schema:
|
|
7729
|
+
type: string
|
|
7730
|
+
post:
|
|
7731
|
+
summary: Re-check a customer tax registration
|
|
7732
|
+
tags:
|
|
7733
|
+
- Customers
|
|
7734
|
+
x-codeSamples:
|
|
7735
|
+
- lang: javascript
|
|
7736
|
+
label: Spree Admin SDK
|
|
7737
|
+
source: |-
|
|
7738
|
+
import { createAdminClient } from '@spree/admin-sdk'
|
|
7739
|
+
|
|
7740
|
+
const client = createAdminClient({
|
|
7741
|
+
baseUrl: 'https://your-store.com',
|
|
7742
|
+
secretKey: 'sk_xxx',
|
|
7743
|
+
})
|
|
7744
|
+
|
|
7745
|
+
const registration = await client.customers.taxIdentifiers.validate(
|
|
7746
|
+
'cust_UkLWZg9DAJ',
|
|
7747
|
+
'txi_UkLWZg9DAJ',
|
|
7748
|
+
)
|
|
7749
|
+
- lang: bash
|
|
7750
|
+
label: Spree CLI
|
|
7751
|
+
source: spree api post /customers/{customer_id}/tax_identifiers/{id}/validate
|
|
7752
|
+
-d '{ ... }'
|
|
7753
|
+
operationId: customer_tax_identifiers_validate
|
|
7754
|
+
security:
|
|
7755
|
+
- api_key: []
|
|
7756
|
+
bearer_auth: []
|
|
7757
|
+
description: |-
|
|
7758
|
+
Asks the registry again. Manual because a registry answers only "valid now" — a number verified
|
|
7759
|
+
last year may have been deregistered since — and because a check that came back unavailable
|
|
7760
|
+
cannot otherwise be retried without editing the number.
|
|
7761
|
+
|
|
7762
|
+
|
|
7763
|
+
**Required scope:** `write_customers` (for API-key authentication).
|
|
7764
|
+
responses:
|
|
7765
|
+
'202':
|
|
7766
|
+
description: registry check queued
|
|
7767
|
+
content:
|
|
7768
|
+
application/json:
|
|
7769
|
+
example:
|
|
7770
|
+
id: txi_UkLWZg9DAJ
|
|
7771
|
+
kind: eu_vat
|
|
7772
|
+
value: DE100000032
|
|
7773
|
+
validation_status: pending
|
|
7774
|
+
validation_evidence:
|
|
7775
|
+
source:
|
|
7776
|
+
validated_at:
|
|
7777
|
+
created_at: '2026-01-15T12:00:00.000Z'
|
|
7778
|
+
updated_at: '2026-01-15T12:00:00.000Z'
|
|
7779
|
+
validatable: true
|
|
7780
|
+
customer_id: cust_UkLWZg9DAJ
|
|
7781
|
+
cart_id:
|
|
7782
|
+
order_id:
|
|
7783
|
+
schema:
|
|
7784
|
+
"$ref": "#/components/schemas/TaxIdentifier"
|
|
7785
|
+
'422':
|
|
7786
|
+
description: no validator installed for this kind
|
|
7787
|
+
content:
|
|
7788
|
+
application/json:
|
|
7789
|
+
example:
|
|
7790
|
+
error:
|
|
7791
|
+
code: tax_id_not_validatable
|
|
7792
|
+
message: No registry validator is installed for tax identifier kind
|
|
7793
|
+
'eu_vat'
|
|
7794
|
+
schema:
|
|
7795
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
7704
7796
|
"/api/v3/admin/customers":
|
|
7705
7797
|
get:
|
|
7706
7798
|
summary: List customers
|
|
@@ -15999,6 +16091,81 @@ paths:
|
|
|
15999
16091
|
schema:
|
|
16000
16092
|
"$ref": "#/components/schemas/ClaimUpdateParams"
|
|
16001
16093
|
required: true
|
|
16094
|
+
"/api/v3/admin/orders/{order_id}/claims/{id}/approve":
|
|
16095
|
+
patch:
|
|
16096
|
+
summary: Approve a claim
|
|
16097
|
+
tags:
|
|
16098
|
+
- Orders
|
|
16099
|
+
x-codeSamples:
|
|
16100
|
+
- lang: javascript
|
|
16101
|
+
label: Spree Admin SDK
|
|
16102
|
+
source: |-
|
|
16103
|
+
import { createAdminClient } from '@spree/admin-sdk'
|
|
16104
|
+
|
|
16105
|
+
const client = createAdminClient({
|
|
16106
|
+
baseUrl: 'https://your-store.com',
|
|
16107
|
+
secretKey: 'sk_xxx',
|
|
16108
|
+
})
|
|
16109
|
+
|
|
16110
|
+
const claim = await client.orders.claims.approve('or_UkLWZg9DAJ', 'claim_UkLWZg9DAJ')
|
|
16111
|
+
- lang: bash
|
|
16112
|
+
label: Spree CLI
|
|
16113
|
+
source: spree api patch /orders/{order_id}/claims/{id}/approve -d '{ ... }'
|
|
16114
|
+
security:
|
|
16115
|
+
- api_key: []
|
|
16116
|
+
bearer_auth: []
|
|
16117
|
+
description: |-
|
|
16118
|
+
Accepts an open claim, the step before resolving it with a refund, a replacement or both. Only an open claim can be approved; deny it to turn it down.
|
|
16119
|
+
|
|
16120
|
+
**Required scope:** `write_orders` (for API-key authentication).
|
|
16121
|
+
parameters:
|
|
16122
|
+
- name: x-spree-api-key
|
|
16123
|
+
in: header
|
|
16124
|
+
required: true
|
|
16125
|
+
schema:
|
|
16126
|
+
type: string
|
|
16127
|
+
- name: Authorization
|
|
16128
|
+
in: header
|
|
16129
|
+
required: true
|
|
16130
|
+
schema:
|
|
16131
|
+
type: string
|
|
16132
|
+
- name: order_id
|
|
16133
|
+
in: path
|
|
16134
|
+
required: true
|
|
16135
|
+
description: Order prefixed ID
|
|
16136
|
+
schema:
|
|
16137
|
+
type: string
|
|
16138
|
+
- name: id
|
|
16139
|
+
in: path
|
|
16140
|
+
required: true
|
|
16141
|
+
description: Claim prefixed ID
|
|
16142
|
+
schema:
|
|
16143
|
+
type: string
|
|
16144
|
+
responses:
|
|
16145
|
+
'200':
|
|
16146
|
+
description: claim approved
|
|
16147
|
+
content:
|
|
16148
|
+
application/json:
|
|
16149
|
+
example:
|
|
16150
|
+
id: claim_UkLWZg9DAJ
|
|
16151
|
+
number: CLM1001
|
|
16152
|
+
status: approved
|
|
16153
|
+
resolution:
|
|
16154
|
+
order_id: or_UkLWZg9DAJ
|
|
16155
|
+
reason_id:
|
|
16156
|
+
refund_total: '10.00'
|
|
16157
|
+
approved_at: '2026-01-15T12:00:00Z'
|
|
16158
|
+
resolved_at:
|
|
16159
|
+
denied_at:
|
|
16160
|
+
canceled_at:
|
|
16161
|
+
memo: Arrived with a cracked screen
|
|
16162
|
+
metadata: {}
|
|
16163
|
+
created_at: '2026-01-15T12:00:00.000Z'
|
|
16164
|
+
updated_at: '2026-01-15T12:00:00.000Z'
|
|
16165
|
+
created_by_id: adm_UkLWZg9DAJ
|
|
16166
|
+
created_by_type: admin_user
|
|
16167
|
+
schema:
|
|
16168
|
+
"$ref": "#/components/schemas/Claim"
|
|
16002
16169
|
"/api/v3/admin/orders/{order_id}/claims/{id}/resolve":
|
|
16003
16170
|
patch:
|
|
16004
16171
|
summary: Resolve a claim
|
|
@@ -16510,6 +16677,149 @@ paths:
|
|
|
16510
16677
|
required:
|
|
16511
16678
|
- data
|
|
16512
16679
|
- meta
|
|
16680
|
+
"/api/v3/admin/digital_links/{id}":
|
|
16681
|
+
parameters:
|
|
16682
|
+
- name: id
|
|
16683
|
+
in: path
|
|
16684
|
+
required: true
|
|
16685
|
+
description: Digital link ID
|
|
16686
|
+
schema:
|
|
16687
|
+
type: string
|
|
16688
|
+
get:
|
|
16689
|
+
summary: Get a digital link
|
|
16690
|
+
tags:
|
|
16691
|
+
- Orders
|
|
16692
|
+
security:
|
|
16693
|
+
- api_key: []
|
|
16694
|
+
bearer_auth: []
|
|
16695
|
+
description: |-
|
|
16696
|
+
Returns a single download link with its download count and expiry.
|
|
16697
|
+
|
|
16698
|
+
**Required scope:** `read_orders` (for API-key authentication).
|
|
16699
|
+
x-codeSamples:
|
|
16700
|
+
- lang: javascript
|
|
16701
|
+
label: Spree Admin SDK
|
|
16702
|
+
source: |-
|
|
16703
|
+
import { createAdminClient } from '@spree/admin-sdk'
|
|
16704
|
+
|
|
16705
|
+
const client = createAdminClient({
|
|
16706
|
+
baseUrl: 'https://your-store.com',
|
|
16707
|
+
secretKey: 'sk_xxx',
|
|
16708
|
+
})
|
|
16709
|
+
|
|
16710
|
+
const digitalLink = await client.digitalLinks.retrieve('dl_xxx')
|
|
16711
|
+
- lang: bash
|
|
16712
|
+
label: Spree CLI
|
|
16713
|
+
source: spree api get /digital_links/{id}
|
|
16714
|
+
parameters:
|
|
16715
|
+
- name: x-spree-api-key
|
|
16716
|
+
in: header
|
|
16717
|
+
required: true
|
|
16718
|
+
schema:
|
|
16719
|
+
type: string
|
|
16720
|
+
- name: Authorization
|
|
16721
|
+
in: header
|
|
16722
|
+
required: true
|
|
16723
|
+
description: Bearer token for admin authentication
|
|
16724
|
+
schema:
|
|
16725
|
+
type: string
|
|
16726
|
+
responses:
|
|
16727
|
+
'200':
|
|
16728
|
+
description: digital link found
|
|
16729
|
+
content:
|
|
16730
|
+
application/json:
|
|
16731
|
+
example:
|
|
16732
|
+
id: dl_UkLWZg9DAJ
|
|
16733
|
+
access_counter: 0
|
|
16734
|
+
filename: thinking-cat.jpg
|
|
16735
|
+
content_type: image/jpeg
|
|
16736
|
+
download_url: "/api/v3/store/digital_links/ks9F16gjTLQPCzwFDpj2ifrJ"
|
|
16737
|
+
expires_at: '2026-01-22T12:00:00Z'
|
|
16738
|
+
authorizable: true
|
|
16739
|
+
expired: false
|
|
16740
|
+
access_limit_exceeded: false
|
|
16741
|
+
created_at: '2026-01-15T12:00:00.000Z'
|
|
16742
|
+
updated_at: '2026-01-15T12:00:00.000Z'
|
|
16743
|
+
schema:
|
|
16744
|
+
"$ref": "#/components/schemas/DigitalLink"
|
|
16745
|
+
'404':
|
|
16746
|
+
description: digital link not found
|
|
16747
|
+
content:
|
|
16748
|
+
application/json:
|
|
16749
|
+
example:
|
|
16750
|
+
error:
|
|
16751
|
+
code: record_not_found
|
|
16752
|
+
message: Digital link not found
|
|
16753
|
+
schema:
|
|
16754
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
16755
|
+
"/api/v3/admin/digital_links/{id}/reset":
|
|
16756
|
+
parameters:
|
|
16757
|
+
- name: id
|
|
16758
|
+
in: path
|
|
16759
|
+
required: true
|
|
16760
|
+
description: Digital link ID
|
|
16761
|
+
schema:
|
|
16762
|
+
type: string
|
|
16763
|
+
patch:
|
|
16764
|
+
summary: Reset a digital link
|
|
16765
|
+
tags:
|
|
16766
|
+
- Orders
|
|
16767
|
+
x-codeSamples:
|
|
16768
|
+
- lang: javascript
|
|
16769
|
+
label: Spree Admin SDK
|
|
16770
|
+
source: |-
|
|
16771
|
+
import { createAdminClient } from '@spree/admin-sdk'
|
|
16772
|
+
|
|
16773
|
+
const client = createAdminClient({
|
|
16774
|
+
baseUrl: 'https://your-store.com',
|
|
16775
|
+
secretKey: 'sk_xxx',
|
|
16776
|
+
})
|
|
16777
|
+
|
|
16778
|
+
const digitalLink = await client.digitalLinks.reset('dl_xxx')
|
|
16779
|
+
- lang: bash
|
|
16780
|
+
label: Spree CLI
|
|
16781
|
+
source: spree api patch /digital_links/{id}/reset -d '{ ... }'
|
|
16782
|
+
security:
|
|
16783
|
+
- api_key: []
|
|
16784
|
+
bearer_auth: []
|
|
16785
|
+
description: |-
|
|
16786
|
+
Gives the customer their full download allowance back and restarts the
|
|
16787
|
+
link's expiry clock. Use it when a download failed, or the file was
|
|
16788
|
+
replaced after the customer had used up their attempts.
|
|
16789
|
+
|
|
16790
|
+
|
|
16791
|
+
**Required scope:** `write_orders` (for API-key authentication).
|
|
16792
|
+
parameters:
|
|
16793
|
+
- name: x-spree-api-key
|
|
16794
|
+
in: header
|
|
16795
|
+
required: true
|
|
16796
|
+
schema:
|
|
16797
|
+
type: string
|
|
16798
|
+
- name: Authorization
|
|
16799
|
+
in: header
|
|
16800
|
+
required: true
|
|
16801
|
+
description: Bearer token for admin authentication
|
|
16802
|
+
schema:
|
|
16803
|
+
type: string
|
|
16804
|
+
responses:
|
|
16805
|
+
'200':
|
|
16806
|
+
description: digital link reset
|
|
16807
|
+
content:
|
|
16808
|
+
application/json:
|
|
16809
|
+
example:
|
|
16810
|
+
id: dl_UkLWZg9DAJ
|
|
16811
|
+
access_counter: 0
|
|
16812
|
+
filename: thinking-cat.jpg
|
|
16813
|
+
content_type: image/jpeg
|
|
16814
|
+
download_url: "/api/v3/store/digital_links/tPqch4JvZidezkNn2YoqxDLc"
|
|
16815
|
+
expires_at: '2026-01-22T12:00:00Z'
|
|
16816
|
+
authorizable: true
|
|
16817
|
+
expired: false
|
|
16818
|
+
access_limit_exceeded: false
|
|
16819
|
+
created_at: '2026-01-15T12:00:00.000Z'
|
|
16820
|
+
updated_at: '2026-01-15T12:00:00.000Z'
|
|
16821
|
+
schema:
|
|
16822
|
+
"$ref": "#/components/schemas/DigitalLink"
|
|
16513
16823
|
"/api/v3/admin/exchanges":
|
|
16514
16824
|
get:
|
|
16515
16825
|
summary: List exchanges
|
|
@@ -16999,6 +17309,92 @@ paths:
|
|
|
16999
17309
|
schema:
|
|
17000
17310
|
"$ref": "#/components/schemas/ExchangeUpdateParams"
|
|
17001
17311
|
required: true
|
|
17312
|
+
"/api/v3/admin/orders/{order_id}/exchanges/{id}/approve":
|
|
17313
|
+
patch:
|
|
17314
|
+
summary: Approve an exchange
|
|
17315
|
+
tags:
|
|
17316
|
+
- Orders
|
|
17317
|
+
x-codeSamples:
|
|
17318
|
+
- lang: javascript
|
|
17319
|
+
label: Spree Admin SDK
|
|
17320
|
+
source: |-
|
|
17321
|
+
import { createAdminClient } from '@spree/admin-sdk'
|
|
17322
|
+
|
|
17323
|
+
const client = createAdminClient({
|
|
17324
|
+
baseUrl: 'https://your-store.com',
|
|
17325
|
+
secretKey: 'sk_xxx',
|
|
17326
|
+
})
|
|
17327
|
+
|
|
17328
|
+
const exchange = await client.orders.exchanges.approve('or_UkLWZg9DAJ', 'exch_UkLWZg9DAJ')
|
|
17329
|
+
- lang: bash
|
|
17330
|
+
label: Spree CLI
|
|
17331
|
+
source: spree api patch /orders/{order_id}/exchanges/{id}/approve -d '{ ...
|
|
17332
|
+
}'
|
|
17333
|
+
security:
|
|
17334
|
+
- api_key: []
|
|
17335
|
+
bearer_auth: []
|
|
17336
|
+
description: |-
|
|
17337
|
+
Accepts a requested exchange so the customer can send the goods back for their replacement. Only a requested exchange can be approved; receive it once the goods arrive.
|
|
17338
|
+
|
|
17339
|
+
**Required scope:** `write_orders` (for API-key authentication).
|
|
17340
|
+
parameters:
|
|
17341
|
+
- name: x-spree-api-key
|
|
17342
|
+
in: header
|
|
17343
|
+
required: true
|
|
17344
|
+
schema:
|
|
17345
|
+
type: string
|
|
17346
|
+
- name: Authorization
|
|
17347
|
+
in: header
|
|
17348
|
+
required: true
|
|
17349
|
+
schema:
|
|
17350
|
+
type: string
|
|
17351
|
+
- name: order_id
|
|
17352
|
+
in: path
|
|
17353
|
+
required: true
|
|
17354
|
+
description: Order prefixed ID
|
|
17355
|
+
schema:
|
|
17356
|
+
type: string
|
|
17357
|
+
- name: id
|
|
17358
|
+
in: path
|
|
17359
|
+
required: true
|
|
17360
|
+
description: Exchange prefixed ID
|
|
17361
|
+
schema:
|
|
17362
|
+
type: string
|
|
17363
|
+
responses:
|
|
17364
|
+
'200':
|
|
17365
|
+
description: exchange approved
|
|
17366
|
+
content:
|
|
17367
|
+
application/json:
|
|
17368
|
+
example:
|
|
17369
|
+
id: exch_UkLWZg9DAJ
|
|
17370
|
+
number: EX1001
|
|
17371
|
+
status: approved
|
|
17372
|
+
order_id: or_UkLWZg9DAJ
|
|
17373
|
+
reason_id:
|
|
17374
|
+
price_difference: '9.99'
|
|
17375
|
+
approved_at: '2026-01-15T12:00:00Z'
|
|
17376
|
+
received_at:
|
|
17377
|
+
fulfilled_at:
|
|
17378
|
+
canceled_at:
|
|
17379
|
+
memo: Wrong size
|
|
17380
|
+
metadata: {}
|
|
17381
|
+
created_at: '2026-01-15T12:00:00.000Z'
|
|
17382
|
+
updated_at: '2026-01-15T12:00:00.000Z'
|
|
17383
|
+
stock_location_id: sloc_UkLWZg9DAJ
|
|
17384
|
+
created_by_id: adm_UkLWZg9DAJ
|
|
17385
|
+
created_by_type: admin_user
|
|
17386
|
+
schema:
|
|
17387
|
+
"$ref": "#/components/schemas/Exchange"
|
|
17388
|
+
'422':
|
|
17389
|
+
description: the exchange is not requested
|
|
17390
|
+
content:
|
|
17391
|
+
application/json:
|
|
17392
|
+
example:
|
|
17393
|
+
error:
|
|
17394
|
+
code: processing_error
|
|
17395
|
+
message: Not requested
|
|
17396
|
+
schema:
|
|
17397
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
17002
17398
|
"/api/v3/admin/orders/{order_id}/exchanges/{id}/receive":
|
|
17003
17399
|
patch:
|
|
17004
17400
|
summary: Receive an exchange
|
|
@@ -20613,6 +21009,147 @@ paths:
|
|
|
20613
21009
|
cancel_reason_name:
|
|
20614
21010
|
customer_id: cust_UkLWZg9DAJ
|
|
20615
21011
|
freight_summary:
|
|
21012
|
+
"/api/v3/admin/orders/{id}/resend_digital_links":
|
|
21013
|
+
post:
|
|
21014
|
+
summary: Resend digital download links
|
|
21015
|
+
tags:
|
|
21016
|
+
- Orders
|
|
21017
|
+
x-codeSamples:
|
|
21018
|
+
- lang: javascript
|
|
21019
|
+
label: Spree Admin SDK
|
|
21020
|
+
source: |-
|
|
21021
|
+
import { createAdminClient } from '@spree/admin-sdk'
|
|
21022
|
+
|
|
21023
|
+
const client = createAdminClient({
|
|
21024
|
+
baseUrl: 'https://your-store.com',
|
|
21025
|
+
secretKey: 'sk_xxx',
|
|
21026
|
+
})
|
|
21027
|
+
|
|
21028
|
+
await client.orders.resendDigitalLinks('or_UkLWZg9DAJ')
|
|
21029
|
+
- lang: bash
|
|
21030
|
+
label: Spree CLI
|
|
21031
|
+
source: spree api post /orders/{id}/resend_digital_links -d '{ ... }'
|
|
21032
|
+
security:
|
|
21033
|
+
- api_key: []
|
|
21034
|
+
bearer_auth: []
|
|
21035
|
+
description: |-
|
|
21036
|
+
Emails the customer their download links for the digital products on
|
|
21037
|
+
this order again. Nothing is sent when the order has no digital links or
|
|
21038
|
+
the store does not send transactional emails. Use it when the original
|
|
21039
|
+
email was lost; to restore used-up downloads or an expired link, reset
|
|
21040
|
+
the digital link instead.
|
|
21041
|
+
|
|
21042
|
+
|
|
21043
|
+
**Required scope:** `write_orders` (for API-key authentication).
|
|
21044
|
+
parameters:
|
|
21045
|
+
- name: x-spree-api-key
|
|
21046
|
+
in: header
|
|
21047
|
+
required: true
|
|
21048
|
+
schema:
|
|
21049
|
+
type: string
|
|
21050
|
+
- name: Authorization
|
|
21051
|
+
in: header
|
|
21052
|
+
required: true
|
|
21053
|
+
description: Bearer token for admin authentication
|
|
21054
|
+
schema:
|
|
21055
|
+
type: string
|
|
21056
|
+
- name: id
|
|
21057
|
+
in: path
|
|
21058
|
+
required: true
|
|
21059
|
+
description: Order ID
|
|
21060
|
+
schema:
|
|
21061
|
+
type: string
|
|
21062
|
+
responses:
|
|
21063
|
+
'200':
|
|
21064
|
+
description: digital links resent
|
|
21065
|
+
content:
|
|
21066
|
+
application/json:
|
|
21067
|
+
example:
|
|
21068
|
+
id: or_UkLWZg9DAJ
|
|
21069
|
+
market_id: mkt_UkLWZg9DAJ
|
|
21070
|
+
withdrawal_period_ends_at:
|
|
21071
|
+
within_withdrawal_period: true
|
|
21072
|
+
shipping_eq_billing_address: false
|
|
21073
|
+
cart_id:
|
|
21074
|
+
channel_id: ch_UkLWZg9DAJ
|
|
21075
|
+
company_id:
|
|
21076
|
+
company_name:
|
|
21077
|
+
po_document_filename:
|
|
21078
|
+
po_document_byte_size:
|
|
21079
|
+
number: R1001
|
|
21080
|
+
email: ivana@schmidtfeest.com
|
|
21081
|
+
customer_note:
|
|
21082
|
+
po_number:
|
|
21083
|
+
currency: USD
|
|
21084
|
+
locale: en
|
|
21085
|
+
total_quantity: 1
|
|
21086
|
+
coupon_code:
|
|
21087
|
+
fulfillment_status:
|
|
21088
|
+
payment_status:
|
|
21089
|
+
completed_at: '2026-01-15T12:00:00.000Z'
|
|
21090
|
+
item_total: '10.00'
|
|
21091
|
+
discount_total: '0.00'
|
|
21092
|
+
tax_total: '0.00'
|
|
21093
|
+
included_tax_total: '0.00'
|
|
21094
|
+
additional_tax_total: '0.00'
|
|
21095
|
+
delivery_total: '100.00'
|
|
21096
|
+
fee_total: '0.00'
|
|
21097
|
+
gift_card_total: '0.00'
|
|
21098
|
+
store_credit_total: '0.00'
|
|
21099
|
+
total: '110.00'
|
|
21100
|
+
amount_due: '110.00'
|
|
21101
|
+
covered_by_store_credit: false
|
|
21102
|
+
adjustment_total: '0.00'
|
|
21103
|
+
gift_card:
|
|
21104
|
+
market:
|
|
21105
|
+
id: mkt_UkLWZg9DAJ
|
|
21106
|
+
name: United States
|
|
21107
|
+
currency: USD
|
|
21108
|
+
default_locale: en
|
|
21109
|
+
tax_inclusive: false
|
|
21110
|
+
default: true
|
|
21111
|
+
country_codes:
|
|
21112
|
+
- US
|
|
21113
|
+
supported_locales:
|
|
21114
|
+
- en
|
|
21115
|
+
created_at: '2026-11-03T16:44:09.130Z'
|
|
21116
|
+
updated_at: '2026-11-03T16:44:09.130Z'
|
|
21117
|
+
tax_provider:
|
|
21118
|
+
external_references: {}
|
|
21119
|
+
status: placed
|
|
21120
|
+
last_ip_address:
|
|
21121
|
+
considered_risky: false
|
|
21122
|
+
confirmation_delivered: false
|
|
21123
|
+
store_owner_notification_delivered:
|
|
21124
|
+
metadata: {}
|
|
21125
|
+
cancel_note:
|
|
21126
|
+
canceled_at:
|
|
21127
|
+
approved_at:
|
|
21128
|
+
created_at: '2026-01-15T12:00:00.000Z'
|
|
21129
|
+
updated_at: '2026-01-15T12:00:00.000Z'
|
|
21130
|
+
payment_total: '0.00'
|
|
21131
|
+
commission_amount_total: '0.00'
|
|
21132
|
+
commission_tax_total: '0.00'
|
|
21133
|
+
commission_total: '0.00'
|
|
21134
|
+
preferred_stock_location_id:
|
|
21135
|
+
po_document_url:
|
|
21136
|
+
seller_id:
|
|
21137
|
+
order_group_id:
|
|
21138
|
+
tags: []
|
|
21139
|
+
internal_note:
|
|
21140
|
+
internal_note_html:
|
|
21141
|
+
approver_id:
|
|
21142
|
+
approver_type:
|
|
21143
|
+
canceler_id:
|
|
21144
|
+
canceler_type:
|
|
21145
|
+
created_by_id:
|
|
21146
|
+
created_by_type:
|
|
21147
|
+
cancel_reason_id:
|
|
21148
|
+
cancel_reason_name:
|
|
21149
|
+
customer_id: cust_UkLWZg9DAJ
|
|
21150
|
+
freight_summary:
|
|
21151
|
+
schema:
|
|
21152
|
+
"$ref": "#/components/schemas/Order"
|
|
20616
21153
|
"/api/v3/admin/returns":
|
|
20617
21154
|
get:
|
|
20618
21155
|
summary: List returns
|
|
@@ -21138,18 +21675,11 @@ paths:
|
|
|
21138
21675
|
schema:
|
|
21139
21676
|
"$ref": "#/components/schemas/ReturnUpdateParams"
|
|
21140
21677
|
required: true
|
|
21141
|
-
"/api/v3/admin/orders/{order_id}/returns/{id}/
|
|
21678
|
+
"/api/v3/admin/orders/{order_id}/returns/{id}/approve":
|
|
21142
21679
|
patch:
|
|
21143
|
-
summary:
|
|
21680
|
+
summary: Approve a return
|
|
21144
21681
|
tags:
|
|
21145
21682
|
- Orders
|
|
21146
|
-
security:
|
|
21147
|
-
- api_key: []
|
|
21148
|
-
bearer_auth: []
|
|
21149
|
-
description: |-
|
|
21150
|
-
Records what arrived on an approved return. Omit `items` to receive everything as requested and resellable; send rows for a partial or damaged receipt.
|
|
21151
|
-
|
|
21152
|
-
**Required scope:** `write_orders` (for API-key authentication).
|
|
21153
21683
|
x-codeSamples:
|
|
21154
21684
|
- lang: javascript
|
|
21155
21685
|
label: Spree Admin SDK
|
|
@@ -21161,13 +21691,18 @@ paths:
|
|
|
21161
21691
|
secretKey: 'sk_xxx',
|
|
21162
21692
|
})
|
|
21163
21693
|
|
|
21164
|
-
|
|
21165
|
-
const orderReturn = await client.orders.returns.receive('or_UkLWZg9DAJ', 'ret_UkLWZg9DAJ', {
|
|
21166
|
-
items: [{ return_line_item_id: 'rli_UkLWZg9DAJ', quantity: 1, resellable: false }],
|
|
21167
|
-
})
|
|
21694
|
+
const orderReturn = await client.orders.returns.approve('or_UkLWZg9DAJ', 'ret_UkLWZg9DAJ')
|
|
21168
21695
|
- lang: bash
|
|
21169
21696
|
label: Spree CLI
|
|
21170
|
-
source: spree api patch /orders/{order_id}/returns/{id}/
|
|
21697
|
+
source: spree api patch /orders/{order_id}/returns/{id}/approve -d '{ ...
|
|
21698
|
+
}'
|
|
21699
|
+
security:
|
|
21700
|
+
- api_key: []
|
|
21701
|
+
bearer_auth: []
|
|
21702
|
+
description: |-
|
|
21703
|
+
Accepts a requested return so the customer can send the goods back. Only a requested return can be approved; receive it once the goods arrive.
|
|
21704
|
+
|
|
21705
|
+
**Required scope:** `write_orders` (for API-key authentication).
|
|
21171
21706
|
parameters:
|
|
21172
21707
|
- name: x-spree-api-key
|
|
21173
21708
|
in: header
|
|
@@ -21193,19 +21728,19 @@ paths:
|
|
|
21193
21728
|
type: string
|
|
21194
21729
|
responses:
|
|
21195
21730
|
'200':
|
|
21196
|
-
description: return
|
|
21731
|
+
description: return approved
|
|
21197
21732
|
content:
|
|
21198
21733
|
application/json:
|
|
21199
21734
|
example:
|
|
21200
21735
|
id: ret_UkLWZg9DAJ
|
|
21201
21736
|
number: RET1001
|
|
21202
|
-
status:
|
|
21737
|
+
status: approved
|
|
21203
21738
|
order_id: or_UkLWZg9DAJ
|
|
21204
21739
|
reason_id:
|
|
21205
21740
|
refund_total: '10.00'
|
|
21206
21741
|
refund_tax_total: '0.00'
|
|
21207
21742
|
approved_at: '2026-01-15T12:00:00Z'
|
|
21208
|
-
received_at:
|
|
21743
|
+
received_at:
|
|
21209
21744
|
refunded_at:
|
|
21210
21745
|
canceled_at:
|
|
21211
21746
|
external_references: {}
|
|
@@ -21214,8 +21749,8 @@ paths:
|
|
|
21214
21749
|
created_at: '2026-01-15T12:00:00.000Z'
|
|
21215
21750
|
updated_at: '2026-01-15T12:00:00.000Z'
|
|
21216
21751
|
stock_location_id: sloc_UkLWZg9DAJ
|
|
21217
|
-
created_by_id:
|
|
21218
|
-
created_by_type:
|
|
21752
|
+
created_by_id: adm_UkLWZg9DAJ
|
|
21753
|
+
created_by_type: admin_user
|
|
21219
21754
|
refunded_total: '0.00'
|
|
21220
21755
|
refundable_total: '10.00'
|
|
21221
21756
|
documents: []
|
|
@@ -21223,23 +21758,28 @@ paths:
|
|
|
21223
21758
|
deliveries: []
|
|
21224
21759
|
schema:
|
|
21225
21760
|
"$ref": "#/components/schemas/Return"
|
|
21226
|
-
|
|
21227
|
-
|
|
21228
|
-
|
|
21229
|
-
|
|
21230
|
-
|
|
21231
|
-
|
|
21761
|
+
'422':
|
|
21762
|
+
description: the return is not requested
|
|
21763
|
+
content:
|
|
21764
|
+
application/json:
|
|
21765
|
+
example:
|
|
21766
|
+
error:
|
|
21767
|
+
code: processing_error
|
|
21768
|
+
message: Not requested
|
|
21769
|
+
schema:
|
|
21770
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
21771
|
+
"/api/v3/admin/orders/{order_id}/returns/{id}/receive":
|
|
21232
21772
|
patch:
|
|
21233
|
-
summary:
|
|
21773
|
+
summary: Receive a return
|
|
21234
21774
|
tags:
|
|
21235
21775
|
- Orders
|
|
21236
21776
|
security:
|
|
21237
21777
|
- api_key: []
|
|
21238
21778
|
bearer_auth: []
|
|
21239
21779
|
description: |-
|
|
21240
|
-
|
|
21780
|
+
Records what arrived on an approved return. Omit `items` to receive everything as requested and resellable; send rows for a partial or damaged receipt.
|
|
21241
21781
|
|
|
21242
|
-
**Required scope:** `write_orders`
|
|
21782
|
+
**Required scope:** `write_orders` (for API-key authentication).
|
|
21243
21783
|
x-codeSamples:
|
|
21244
21784
|
- lang: javascript
|
|
21245
21785
|
label: Spree Admin SDK
|
|
@@ -21251,13 +21791,103 @@ paths:
|
|
|
21251
21791
|
secretKey: 'sk_xxx',
|
|
21252
21792
|
})
|
|
21253
21793
|
|
|
21254
|
-
|
|
21255
|
-
|
|
21256
|
-
|
|
21794
|
+
// Omit `items` to receive everything as requested and resellable.
|
|
21795
|
+
const orderReturn = await client.orders.returns.receive('or_UkLWZg9DAJ', 'ret_UkLWZg9DAJ', {
|
|
21796
|
+
items: [{ return_line_item_id: 'rli_UkLWZg9DAJ', quantity: 1, resellable: false }],
|
|
21257
21797
|
})
|
|
21258
21798
|
- lang: bash
|
|
21259
21799
|
label: Spree CLI
|
|
21260
|
-
source: spree api patch /orders/{order_id}/returns/{id}/
|
|
21800
|
+
source: spree api patch /orders/{order_id}/returns/{id}/receive -d '{"items":[{"return_line_item_id":"rli_UkLWZg9DAJ","quantity":1,"resellable":false}]}'
|
|
21801
|
+
parameters:
|
|
21802
|
+
- name: x-spree-api-key
|
|
21803
|
+
in: header
|
|
21804
|
+
required: true
|
|
21805
|
+
schema:
|
|
21806
|
+
type: string
|
|
21807
|
+
- name: Authorization
|
|
21808
|
+
in: header
|
|
21809
|
+
required: true
|
|
21810
|
+
schema:
|
|
21811
|
+
type: string
|
|
21812
|
+
- name: order_id
|
|
21813
|
+
in: path
|
|
21814
|
+
required: true
|
|
21815
|
+
description: Order prefixed ID
|
|
21816
|
+
schema:
|
|
21817
|
+
type: string
|
|
21818
|
+
- name: id
|
|
21819
|
+
in: path
|
|
21820
|
+
required: true
|
|
21821
|
+
description: Return prefixed ID
|
|
21822
|
+
schema:
|
|
21823
|
+
type: string
|
|
21824
|
+
responses:
|
|
21825
|
+
'200':
|
|
21826
|
+
description: return received
|
|
21827
|
+
content:
|
|
21828
|
+
application/json:
|
|
21829
|
+
example:
|
|
21830
|
+
id: ret_UkLWZg9DAJ
|
|
21831
|
+
number: RET1001
|
|
21832
|
+
status: received
|
|
21833
|
+
order_id: or_UkLWZg9DAJ
|
|
21834
|
+
reason_id:
|
|
21835
|
+
refund_total: '10.00'
|
|
21836
|
+
refund_tax_total: '0.00'
|
|
21837
|
+
approved_at: '2026-01-15T12:00:00Z'
|
|
21838
|
+
received_at: '2026-01-15T12:00:00Z'
|
|
21839
|
+
refunded_at:
|
|
21840
|
+
canceled_at:
|
|
21841
|
+
external_references: {}
|
|
21842
|
+
memo: Item did not fit
|
|
21843
|
+
metadata: {}
|
|
21844
|
+
created_at: '2026-01-15T12:00:00.000Z'
|
|
21845
|
+
updated_at: '2026-01-15T12:00:00.000Z'
|
|
21846
|
+
stock_location_id: sloc_UkLWZg9DAJ
|
|
21847
|
+
created_by_id:
|
|
21848
|
+
created_by_type:
|
|
21849
|
+
refunded_total: '0.00'
|
|
21850
|
+
refundable_total: '10.00'
|
|
21851
|
+
documents: []
|
|
21852
|
+
labels: []
|
|
21853
|
+
deliveries: []
|
|
21854
|
+
schema:
|
|
21855
|
+
"$ref": "#/components/schemas/Return"
|
|
21856
|
+
requestBody:
|
|
21857
|
+
content:
|
|
21858
|
+
application/json:
|
|
21859
|
+
schema:
|
|
21860
|
+
"$ref": "#/components/schemas/ReturnReceiveParams"
|
|
21861
|
+
"/api/v3/admin/orders/{order_id}/returns/{id}/refund":
|
|
21862
|
+
patch:
|
|
21863
|
+
summary: Refund a return
|
|
21864
|
+
tags:
|
|
21865
|
+
- Orders
|
|
21866
|
+
security:
|
|
21867
|
+
- api_key: []
|
|
21868
|
+
bearer_auth: []
|
|
21869
|
+
description: |-
|
|
21870
|
+
Pays the customer back for a received return, to store credit or through the original payment.
|
|
21871
|
+
|
|
21872
|
+
**Required scope:** `write_orders` and `write_refunds` (for API-key authentication).
|
|
21873
|
+
x-codeSamples:
|
|
21874
|
+
- lang: javascript
|
|
21875
|
+
label: Spree Admin SDK
|
|
21876
|
+
source: |-
|
|
21877
|
+
import { createAdminClient } from '@spree/admin-sdk'
|
|
21878
|
+
|
|
21879
|
+
const client = createAdminClient({
|
|
21880
|
+
baseUrl: 'https://your-store.com',
|
|
21881
|
+
secretKey: 'sk_xxx',
|
|
21882
|
+
})
|
|
21883
|
+
|
|
21884
|
+
const orderReturn = await client.orders.returns.refund('or_UkLWZg9DAJ', 'ret_UkLWZg9DAJ', {
|
|
21885
|
+
amount: '29.99',
|
|
21886
|
+
refund_method: 'original_payment',
|
|
21887
|
+
})
|
|
21888
|
+
- lang: bash
|
|
21889
|
+
label: Spree CLI
|
|
21890
|
+
source: spree api patch /orders/{order_id}/returns/{id}/refund -d '{"amount":"29.99","refund_method":"original_payment"}'
|
|
21261
21891
|
parameters:
|
|
21262
21892
|
- name: x-spree-api-key
|
|
21263
21893
|
in: header
|
|
@@ -21558,6 +22188,107 @@ paths:
|
|
|
21558
22188
|
required:
|
|
21559
22189
|
- data
|
|
21560
22190
|
- meta
|
|
22191
|
+
"/api/v3/admin/orders/{order_id}/returns/{return_id}/labels/{id}/refund":
|
|
22192
|
+
patch:
|
|
22193
|
+
summary: Refund a return label
|
|
22194
|
+
tags:
|
|
22195
|
+
- Orders
|
|
22196
|
+
x-codeSamples:
|
|
22197
|
+
- lang: javascript
|
|
22198
|
+
label: Spree Admin SDK
|
|
22199
|
+
source: |-
|
|
22200
|
+
import { createAdminClient } from '@spree/admin-sdk'
|
|
22201
|
+
|
|
22202
|
+
const client = createAdminClient({
|
|
22203
|
+
baseUrl: 'https://your-store.com',
|
|
22204
|
+
secretKey: 'sk_xxx',
|
|
22205
|
+
})
|
|
22206
|
+
|
|
22207
|
+
const label = await client.orders.returns.labels.refund(
|
|
22208
|
+
'or_UkLWZg9DAJ',
|
|
22209
|
+
'ret_UkLWZg9DAJ',
|
|
22210
|
+
'lbl_UkLWZg9DAJ',
|
|
22211
|
+
)
|
|
22212
|
+
- lang: bash
|
|
22213
|
+
label: Spree CLI
|
|
22214
|
+
source: spree api patch /orders/{order_id}/returns/{return_id}/labels/{id}/refund
|
|
22215
|
+
-d '{ ... }'
|
|
22216
|
+
operationId: return_labels_refund
|
|
22217
|
+
security:
|
|
22218
|
+
- api_key: []
|
|
22219
|
+
bearer_auth: []
|
|
22220
|
+
description: |-
|
|
22221
|
+
Asks the carrier to refund a purchased return label the customer never used, such as when the return is canceled. An uploaded label has nothing to refund.
|
|
22222
|
+
|
|
22223
|
+
**Required scope:** `write_orders` (for API-key authentication).
|
|
22224
|
+
parameters:
|
|
22225
|
+
- name: x-spree-api-key
|
|
22226
|
+
in: header
|
|
22227
|
+
required: true
|
|
22228
|
+
schema:
|
|
22229
|
+
type: string
|
|
22230
|
+
- name: Authorization
|
|
22231
|
+
in: header
|
|
22232
|
+
required: true
|
|
22233
|
+
schema:
|
|
22234
|
+
type: string
|
|
22235
|
+
- name: order_id
|
|
22236
|
+
in: path
|
|
22237
|
+
required: true
|
|
22238
|
+
description: Order prefixed ID
|
|
22239
|
+
schema:
|
|
22240
|
+
type: string
|
|
22241
|
+
- name: return_id
|
|
22242
|
+
in: path
|
|
22243
|
+
required: true
|
|
22244
|
+
description: Return prefixed ID
|
|
22245
|
+
schema:
|
|
22246
|
+
type: string
|
|
22247
|
+
- name: id
|
|
22248
|
+
in: path
|
|
22249
|
+
required: true
|
|
22250
|
+
description: Shipping label prefixed ID
|
|
22251
|
+
schema:
|
|
22252
|
+
type: string
|
|
22253
|
+
responses:
|
|
22254
|
+
'200':
|
|
22255
|
+
description: refund filed
|
|
22256
|
+
content:
|
|
22257
|
+
application/json:
|
|
22258
|
+
example:
|
|
22259
|
+
id: lbl_UkLWZg9DAJ
|
|
22260
|
+
source: purchased
|
|
22261
|
+
status: refunded
|
|
22262
|
+
carrier: ups
|
|
22263
|
+
carrier_name: UPS
|
|
22264
|
+
service: Ground
|
|
22265
|
+
tracking_number: 1Z879E930346830007
|
|
22266
|
+
currency: USD
|
|
22267
|
+
format: pdf
|
|
22268
|
+
external_id: shp_4
|
|
22269
|
+
metadata: {}
|
|
22270
|
+
refunded_at: '2026-01-15T12:00:00.000Z'
|
|
22271
|
+
created_at: '2026-01-15T12:00:00.000Z'
|
|
22272
|
+
updated_at: '2026-01-15T12:00:00.000Z'
|
|
22273
|
+
owner_id: ret_UkLWZg9DAJ
|
|
22274
|
+
owner_type: return
|
|
22275
|
+
cost: '7.25'
|
|
22276
|
+
integration_id:
|
|
22277
|
+
file_pending: false
|
|
22278
|
+
download_url:
|
|
22279
|
+
schema:
|
|
22280
|
+
"$ref": "#/components/schemas/ShippingLabel"
|
|
22281
|
+
'422':
|
|
22282
|
+
description: uploaded labels cannot be refunded
|
|
22283
|
+
content:
|
|
22284
|
+
application/json:
|
|
22285
|
+
example:
|
|
22286
|
+
error:
|
|
22287
|
+
code: processing_error
|
|
22288
|
+
message: An uploaded label was not bought through Spree and cannot
|
|
22289
|
+
be refunded — delete it instead
|
|
22290
|
+
schema:
|
|
22291
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
21561
22292
|
"/api/v3/admin/payment_methods/{payment_method_id}/custom_fields":
|
|
21562
22293
|
get:
|
|
21563
22294
|
summary: List payment method custom fields
|
|
@@ -22319,6 +23050,8 @@ paths:
|
|
|
22319
23050
|
updated_at: '2026-01-15T12:00:00.000Z'
|
|
22320
23051
|
avs_risky: false
|
|
22321
23052
|
cvv_risky: false
|
|
23053
|
+
can_void: true
|
|
23054
|
+
can_capture: false
|
|
22322
23055
|
captured_amount: '0.00'
|
|
22323
23056
|
order_id: or_UkLWZg9DAJ
|
|
22324
23057
|
meta:
|
|
@@ -22403,6 +23136,8 @@ paths:
|
|
|
22403
23136
|
updated_at: '2026-01-15T12:00:00.000Z'
|
|
22404
23137
|
avs_risky: false
|
|
22405
23138
|
cvv_risky: false
|
|
23139
|
+
can_void: true
|
|
23140
|
+
can_capture: true
|
|
22406
23141
|
captured_amount: '0.00'
|
|
22407
23142
|
order_id: or_gbHJdmfrXB
|
|
22408
23143
|
requestBody:
|
|
@@ -22513,6 +23248,8 @@ paths:
|
|
|
22513
23248
|
updated_at: '2026-01-15T12:00:00.000Z'
|
|
22514
23249
|
avs_risky: false
|
|
22515
23250
|
cvv_risky: false
|
|
23251
|
+
can_void: true
|
|
23252
|
+
can_capture: false
|
|
22516
23253
|
captured_amount: '0.00'
|
|
22517
23254
|
order_id: or_UkLWZg9DAJ
|
|
22518
23255
|
"/api/v3/admin/orders/{order_id}/payments/{id}/capture":
|
|
@@ -22604,6 +23341,8 @@ paths:
|
|
|
22604
23341
|
updated_at: '2026-01-15T12:00:00.000Z'
|
|
22605
23342
|
avs_risky: false
|
|
22606
23343
|
cvv_risky: false
|
|
23344
|
+
can_void: true
|
|
23345
|
+
can_capture: false
|
|
22607
23346
|
captured_amount: '110.00'
|
|
22608
23347
|
order_id: or_UkLWZg9DAJ
|
|
22609
23348
|
'422':
|
|
@@ -22709,6 +23448,8 @@ paths:
|
|
|
22709
23448
|
updated_at: '2026-01-15T12:00:00.000Z'
|
|
22710
23449
|
avs_risky: false
|
|
22711
23450
|
cvv_risky: false
|
|
23451
|
+
can_void: false
|
|
23452
|
+
can_capture: false
|
|
22712
23453
|
captured_amount: '0.00'
|
|
22713
23454
|
order_id: or_UkLWZg9DAJ
|
|
22714
23455
|
"/api/v3/admin/price_lists":
|
|
@@ -23855,6 +24596,9 @@ paths:
|
|
|
23855
24596
|
required: true
|
|
23856
24597
|
"/api/v3/admin/prices/bulk_destroy":
|
|
23857
24598
|
delete:
|
|
24599
|
+
x-spree-agent: false
|
|
24600
|
+
x-spree-agent-reason: Deletes many prices in one call behind a single confirmation;
|
|
24601
|
+
delete_resource removes them one at a time.
|
|
23858
24602
|
summary: Bulk-delete prices
|
|
23859
24603
|
tags:
|
|
23860
24604
|
- Pricing
|
|
@@ -24993,6 +25737,7 @@ paths:
|
|
|
24993
25737
|
seller_name:
|
|
24994
25738
|
product_type_id:
|
|
24995
25739
|
tax_category_id: taxcat_UkLWZg9DAJ
|
|
25740
|
+
total_on_hand: 0
|
|
24996
25741
|
meta:
|
|
24997
25742
|
page: 1
|
|
24998
25743
|
limit: 25
|
|
@@ -25136,6 +25881,7 @@ paths:
|
|
|
25136
25881
|
seller_name:
|
|
25137
25882
|
product_type_id:
|
|
25138
25883
|
tax_category_id:
|
|
25884
|
+
total_on_hand: 0
|
|
25139
25885
|
schema:
|
|
25140
25886
|
"$ref": "#/components/schemas/Product"
|
|
25141
25887
|
'422':
|
|
@@ -25270,6 +26016,7 @@ paths:
|
|
|
25270
26016
|
seller_name:
|
|
25271
26017
|
product_type_id:
|
|
25272
26018
|
tax_category_id: taxcat_UkLWZg9DAJ
|
|
26019
|
+
total_on_hand: 0
|
|
25273
26020
|
schema:
|
|
25274
26021
|
"$ref": "#/components/schemas/Product"
|
|
25275
26022
|
'404':
|
|
@@ -25390,6 +26137,7 @@ paths:
|
|
|
25390
26137
|
seller_name:
|
|
25391
26138
|
product_type_id:
|
|
25392
26139
|
tax_category_id: taxcat_UkLWZg9DAJ
|
|
26140
|
+
total_on_hand: 0
|
|
25393
26141
|
schema:
|
|
25394
26142
|
"$ref": "#/components/schemas/Product"
|
|
25395
26143
|
'422':
|
|
@@ -25475,8 +26223,126 @@ paths:
|
|
|
25475
26223
|
specific: false
|
|
25476
26224
|
schema:
|
|
25477
26225
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
26226
|
+
"/api/v3/admin/products/{id}/clone":
|
|
26227
|
+
parameters:
|
|
26228
|
+
- name: id
|
|
26229
|
+
in: path
|
|
26230
|
+
required: true
|
|
26231
|
+
description: Product ID
|
|
26232
|
+
schema:
|
|
26233
|
+
type: string
|
|
26234
|
+
post:
|
|
26235
|
+
summary: Clone a product
|
|
26236
|
+
tags:
|
|
26237
|
+
- Products
|
|
26238
|
+
x-codeSamples:
|
|
26239
|
+
- lang: javascript
|
|
26240
|
+
label: Spree Admin SDK
|
|
26241
|
+
source: |-
|
|
26242
|
+
import { createAdminClient } from '@spree/admin-sdk'
|
|
26243
|
+
|
|
26244
|
+
const client = createAdminClient({
|
|
26245
|
+
baseUrl: 'https://your-store.com',
|
|
26246
|
+
secretKey: 'sk_xxx',
|
|
26247
|
+
})
|
|
26248
|
+
|
|
26249
|
+
const copy = await client.products.clone('prod_UkLWZg9DAJ')
|
|
26250
|
+
- lang: bash
|
|
26251
|
+
label: Spree CLI
|
|
26252
|
+
source: spree api post /products/{id}/clone -d '{ ... }'
|
|
26253
|
+
security:
|
|
26254
|
+
- api_key: []
|
|
26255
|
+
bearer_auth: []
|
|
26256
|
+
description: |-
|
|
26257
|
+
Creates a draft copy of a product, named "COPY OF …", with its variants,
|
|
26258
|
+
prices, stock locations, images, categories, channels and tags; stock on
|
|
26259
|
+
hand starts at zero. Use it to start a similar product from an existing
|
|
26260
|
+
one instead of building it from scratch.
|
|
26261
|
+
|
|
26262
|
+
|
|
26263
|
+
**Required scope:** `write_products` (for API-key authentication).
|
|
26264
|
+
parameters:
|
|
26265
|
+
- name: x-spree-api-key
|
|
26266
|
+
in: header
|
|
26267
|
+
required: true
|
|
26268
|
+
schema:
|
|
26269
|
+
type: string
|
|
26270
|
+
- name: Authorization
|
|
26271
|
+
in: header
|
|
26272
|
+
required: true
|
|
26273
|
+
schema:
|
|
26274
|
+
type: string
|
|
26275
|
+
responses:
|
|
26276
|
+
'201':
|
|
26277
|
+
description: product cloned
|
|
26278
|
+
content:
|
|
26279
|
+
application/json:
|
|
26280
|
+
example:
|
|
26281
|
+
id: prod_gbHJdmfrXB
|
|
26282
|
+
name: COPY OF Product 1462357
|
|
26283
|
+
slug: copy-of-product-1462357
|
|
26284
|
+
meta_title:
|
|
26285
|
+
meta_description:
|
|
26286
|
+
meta_keywords:
|
|
26287
|
+
variant_count: 1
|
|
26288
|
+
available_on:
|
|
26289
|
+
preorder_ships_at:
|
|
26290
|
+
purchasable: true
|
|
26291
|
+
preorder: false
|
|
26292
|
+
in_stock: false
|
|
26293
|
+
backorderable: true
|
|
26294
|
+
available: false
|
|
26295
|
+
description: Dolore facere hic laboriosam sapiente nobis. Doloribus
|
|
26296
|
+
deleniti quasi esse aliquid voluptatem. Rem voluptate omnis suscipit
|
|
26297
|
+
adipisci laudantium. Deleniti error dolorum ratione dolor assumenda
|
|
26298
|
+
iusto. Laborum non rem sapiente temporibus quam inventore. Voluptatum
|
|
26299
|
+
magnam hic molestias laudantium necessitatibus. Totam ducimus provident
|
|
26300
|
+
aliquam repellendus nam maxime error natus. Ex aspernatur nostrum
|
|
26301
|
+
deserunt maxime quis occaecati expedita dolore. Debitis est laboriosam
|
|
26302
|
+
modi aspernatur cumque. Sapiente ab corrupti quos doloremque eius.
|
|
26303
|
+
Laborum officiis culpa voluptate fuga sed. Nemo possimus vel architecto
|
|
26304
|
+
quo modi. Velit aut non iusto exercitationem nostrum nemo. Velit
|
|
26305
|
+
illo nisi quaerat perspiciatis facilis temporibus quae esse.
|
|
26306
|
+
description_html: |-
|
|
26307
|
+
Dolore facere hic laboriosam sapiente nobis. Doloribus deleniti quasi esse aliquid voluptatem. Rem voluptate omnis suscipit adipisci laudantium.
|
|
26308
|
+
Deleniti error dolorum ratione dolor assumenda iusto. Laborum non rem sapiente temporibus quam inventore. Voluptatum magnam hic molestias laudantium necessitatibus. Totam ducimus provident aliquam repellendus nam maxime error natus.
|
|
26309
|
+
Ex aspernatur nostrum deserunt maxime quis occaecati expedita dolore. Debitis est laboriosam modi aspernatur cumque. Sapiente ab corrupti quos doloremque eius.
|
|
26310
|
+
Laborum officiis culpa voluptate fuga sed. Nemo possimus vel architecto quo modi. Velit aut non iusto exercitationem nostrum nemo. Velit illo nisi quaerat perspiciatis facilis temporibus quae esse.
|
|
26311
|
+
default_variant_id: variant_gbHJdmfrXB
|
|
26312
|
+
buy_box_variant_id: variant_gbHJdmfrXB
|
|
26313
|
+
thumbnail_url:
|
|
26314
|
+
tags: []
|
|
26315
|
+
price:
|
|
26316
|
+
id: price_gbHJdmfrXB
|
|
26317
|
+
currency: USD
|
|
26318
|
+
amount: '19.99'
|
|
26319
|
+
compare_at_amount:
|
|
26320
|
+
price_list_id:
|
|
26321
|
+
min_quantity: 1
|
|
26322
|
+
variant_id: variant_gbHJdmfrXB
|
|
26323
|
+
created_at: '2026-01-15T12:00:00.000Z'
|
|
26324
|
+
updated_at: '2026-01-15T12:00:00.000Z'
|
|
26325
|
+
original_price:
|
|
26326
|
+
seller_id:
|
|
26327
|
+
external_references: {}
|
|
26328
|
+
status: draft
|
|
26329
|
+
metadata: {}
|
|
26330
|
+
deleted_at:
|
|
26331
|
+
created_at: '2026-01-15T12:00:00.000Z'
|
|
26332
|
+
updated_at: '2026-01-15T12:00:00.000Z'
|
|
26333
|
+
delivery_profile_id: fp_UkLWZg9DAJ
|
|
26334
|
+
seller_name:
|
|
26335
|
+
product_type_id:
|
|
26336
|
+
tax_category_id: taxcat_UkLWZg9DAJ
|
|
26337
|
+
total_on_hand: 0
|
|
26338
|
+
schema:
|
|
26339
|
+
"$ref": "#/components/schemas/Product"
|
|
25478
26340
|
"/api/v3/admin/products/bulk_status_update":
|
|
25479
26341
|
post:
|
|
26342
|
+
x-spree-agent: false
|
|
26343
|
+
x-spree-agent-reason: Writes the status column for many products at once, skipping
|
|
26344
|
+
the status workflows and their events; products_activate, products_archive and
|
|
26345
|
+
products_draft run them.
|
|
25480
26346
|
summary: Bulk-update product status
|
|
25481
26347
|
tags:
|
|
25482
26348
|
- Products
|
|
@@ -26036,6 +26902,9 @@ paths:
|
|
|
26036
26902
|
required: true
|
|
26037
26903
|
"/api/v3/admin/products/bulk_destroy":
|
|
26038
26904
|
delete:
|
|
26905
|
+
x-spree-agent: false
|
|
26906
|
+
x-spree-agent-reason: Deletes many products in one call behind a single confirmation;
|
|
26907
|
+
delete_resource removes them one at a time.
|
|
26039
26908
|
summary: Bulk-delete products
|
|
26040
26909
|
tags:
|
|
26041
26910
|
- Products
|
|
@@ -26126,7 +26995,6 @@ paths:
|
|
|
26126
26995
|
Puts a product a seller submitted for review on sale, and closes the
|
|
26127
26996
|
submission. Only a product awaiting review can be approved.
|
|
26128
26997
|
|
|
26129
|
-
|
|
26130
26998
|
**Required scope:** `write_products` (for API-key authentication).
|
|
26131
26999
|
parameters:
|
|
26132
27000
|
- name: x-spree-api-key
|
|
@@ -26198,6 +27066,7 @@ paths:
|
|
|
26198
27066
|
seller_name:
|
|
26199
27067
|
product_type_id:
|
|
26200
27068
|
tax_category_id: taxcat_UkLWZg9DAJ
|
|
27069
|
+
total_on_hand: 0
|
|
26201
27070
|
schema:
|
|
26202
27071
|
"$ref": "#/components/schemas/Product"
|
|
26203
27072
|
'422':
|
|
@@ -26325,6 +27194,7 @@ paths:
|
|
|
26325
27194
|
seller_name:
|
|
26326
27195
|
product_type_id:
|
|
26327
27196
|
tax_category_id: taxcat_UkLWZg9DAJ
|
|
27197
|
+
total_on_hand: 0
|
|
26328
27198
|
schema:
|
|
26329
27199
|
"$ref": "#/components/schemas/Product"
|
|
26330
27200
|
requestBody:
|
|
@@ -26333,6 +27203,383 @@ paths:
|
|
|
26333
27203
|
schema:
|
|
26334
27204
|
"$ref": "#/components/schemas/ProductRejectParams"
|
|
26335
27205
|
required: true
|
|
27206
|
+
"/api/v3/admin/products/{id}/activate":
|
|
27207
|
+
parameters:
|
|
27208
|
+
- name: id
|
|
27209
|
+
in: path
|
|
27210
|
+
required: true
|
|
27211
|
+
description: Product ID
|
|
27212
|
+
schema:
|
|
27213
|
+
type: string
|
|
27214
|
+
patch:
|
|
27215
|
+
summary: Activate a product
|
|
27216
|
+
tags:
|
|
27217
|
+
- Products
|
|
27218
|
+
x-codeSamples:
|
|
27219
|
+
- lang: javascript
|
|
27220
|
+
label: Spree Admin SDK
|
|
27221
|
+
source: |-
|
|
27222
|
+
import { createAdminClient } from '@spree/admin-sdk'
|
|
27223
|
+
|
|
27224
|
+
const client = createAdminClient({
|
|
27225
|
+
baseUrl: 'https://your-store.com',
|
|
27226
|
+
secretKey: 'sk_xxx',
|
|
27227
|
+
})
|
|
27228
|
+
|
|
27229
|
+
const product = await client.products.activate('prod_UkLWZg9DAJ')
|
|
27230
|
+
- lang: bash
|
|
27231
|
+
label: Spree CLI
|
|
27232
|
+
source: spree api patch /products/{id}/activate -d '{ ... }'
|
|
27233
|
+
security:
|
|
27234
|
+
- api_key: []
|
|
27235
|
+
bearer_auth: []
|
|
27236
|
+
description: |-
|
|
27237
|
+
Puts one product on sale. Runs the activation workflow, so its hooks and the `product.activated` event fire, which `bulk_status_update` does not. A product awaiting review is refused: approve or reject it instead.
|
|
27238
|
+
|
|
27239
|
+
|
|
27240
|
+
**Required scope:** `write_products` (for API-key authentication).
|
|
27241
|
+
parameters:
|
|
27242
|
+
- name: x-spree-api-key
|
|
27243
|
+
in: header
|
|
27244
|
+
required: true
|
|
27245
|
+
schema:
|
|
27246
|
+
type: string
|
|
27247
|
+
- name: Authorization
|
|
27248
|
+
in: header
|
|
27249
|
+
required: true
|
|
27250
|
+
schema:
|
|
27251
|
+
type: string
|
|
27252
|
+
responses:
|
|
27253
|
+
'200':
|
|
27254
|
+
description: product active
|
|
27255
|
+
content:
|
|
27256
|
+
application/json:
|
|
27257
|
+
example:
|
|
27258
|
+
id: prod_gbHJdmfrXB
|
|
27259
|
+
name: Product 1604119
|
|
27260
|
+
slug: product-1604119
|
|
27261
|
+
meta_title:
|
|
27262
|
+
meta_description:
|
|
27263
|
+
meta_keywords:
|
|
27264
|
+
variant_count: 1
|
|
27265
|
+
available_on:
|
|
27266
|
+
preorder_ships_at:
|
|
27267
|
+
purchasable: true
|
|
27268
|
+
preorder: false
|
|
27269
|
+
in_stock: false
|
|
27270
|
+
backorderable: true
|
|
27271
|
+
available: true
|
|
27272
|
+
description: Tempora doloribus sit consectetur cumque omnis. Quod
|
|
27273
|
+
fugit dicta ullam omnis. Hic dolorem asperiores nemo est sed nihil
|
|
27274
|
+
quia deleniti. Saepe aperiam eos nulla quia porro minima officiis
|
|
27275
|
+
cum. Eius dignissimos laudantium sequi incidunt. Sed nihil voluptate
|
|
27276
|
+
aliquid nisi. Veritatis tenetur quos aspernatur modi perspiciatis
|
|
27277
|
+
quaerat. Voluptas harum neque labore fuga reprehenderit unde quasi.
|
|
27278
|
+
Omnis quam autem in ipsam aspernatur architecto alias recusandae.
|
|
27279
|
+
Repudiandae ratione vel expedita corporis et pariatur rem sapiente.
|
|
27280
|
+
Velit laboriosam nulla quibusdam fugit minus itaque ut repellat.
|
|
27281
|
+
Incidunt est fugiat totam ipsa quod deserunt. Natus sequi numquam
|
|
27282
|
+
laudantium non similique saepe ipsam quos. Ad impedit necessitatibus
|
|
27283
|
+
quo nesciunt blanditiis id similique recusandae. Ut occaecati debitis
|
|
27284
|
+
aliquam accusantium sed distinctio neque. Labore quos quam optio
|
|
27285
|
+
aperiam dolores aspernatur vitae odio. Eius nam adipisci corrupti
|
|
27286
|
+
incidunt quod sapiente tempora dicta.
|
|
27287
|
+
description_html: |-
|
|
27288
|
+
Tempora doloribus sit consectetur cumque omnis. Quod fugit dicta ullam omnis. Hic dolorem asperiores nemo est sed nihil quia deleniti.
|
|
27289
|
+
Saepe aperiam eos nulla quia porro minima officiis cum. Eius dignissimos laudantium sequi incidunt. Sed nihil voluptate aliquid nisi.
|
|
27290
|
+
Veritatis tenetur quos aspernatur modi perspiciatis quaerat. Voluptas harum neque labore fuga reprehenderit unde quasi. Omnis quam autem in ipsam aspernatur architecto alias recusandae. Repudiandae ratione vel expedita corporis et pariatur rem sapiente.
|
|
27291
|
+
Velit laboriosam nulla quibusdam fugit minus itaque ut repellat. Incidunt est fugiat totam ipsa quod deserunt. Natus sequi numquam laudantium non similique saepe ipsam quos. Ad impedit necessitatibus quo nesciunt blanditiis id similique recusandae.
|
|
27292
|
+
Ut occaecati debitis aliquam accusantium sed distinctio neque. Labore quos quam optio aperiam dolores aspernatur vitae odio. Eius nam adipisci corrupti incidunt quod sapiente tempora dicta.
|
|
27293
|
+
default_variant_id: variant_gbHJdmfrXB
|
|
27294
|
+
buy_box_variant_id: variant_gbHJdmfrXB
|
|
27295
|
+
thumbnail_url:
|
|
27296
|
+
tags: []
|
|
27297
|
+
price:
|
|
27298
|
+
id: price_gbHJdmfrXB
|
|
27299
|
+
currency: USD
|
|
27300
|
+
amount: '19.99'
|
|
27301
|
+
compare_at_amount:
|
|
27302
|
+
price_list_id:
|
|
27303
|
+
min_quantity: 1
|
|
27304
|
+
variant_id: variant_gbHJdmfrXB
|
|
27305
|
+
created_at: '2026-01-15T12:00:00.000Z'
|
|
27306
|
+
updated_at: '2026-01-15T12:00:00.000Z'
|
|
27307
|
+
original_price:
|
|
27308
|
+
seller_id:
|
|
27309
|
+
external_references: {}
|
|
27310
|
+
status: active
|
|
27311
|
+
metadata: {}
|
|
27312
|
+
deleted_at:
|
|
27313
|
+
created_at: '2026-01-15T12:00:00.000Z'
|
|
27314
|
+
updated_at: '2026-01-15T12:00:00.000Z'
|
|
27315
|
+
delivery_profile_id: fp_UkLWZg9DAJ
|
|
27316
|
+
seller_name:
|
|
27317
|
+
product_type_id:
|
|
27318
|
+
tax_category_id: taxcat_UkLWZg9DAJ
|
|
27319
|
+
total_on_hand: 0
|
|
27320
|
+
schema:
|
|
27321
|
+
"$ref": "#/components/schemas/Product"
|
|
27322
|
+
'422':
|
|
27323
|
+
description: the product is awaiting review
|
|
27324
|
+
content:
|
|
27325
|
+
application/json:
|
|
27326
|
+
example:
|
|
27327
|
+
error:
|
|
27328
|
+
code: product_in_review
|
|
27329
|
+
message: A product awaiting review is approved or rejected, not
|
|
27330
|
+
moved to another status
|
|
27331
|
+
schema:
|
|
27332
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
27333
|
+
"/api/v3/admin/products/{id}/archive":
|
|
27334
|
+
parameters:
|
|
27335
|
+
- name: id
|
|
27336
|
+
in: path
|
|
27337
|
+
required: true
|
|
27338
|
+
description: Product ID
|
|
27339
|
+
schema:
|
|
27340
|
+
type: string
|
|
27341
|
+
patch:
|
|
27342
|
+
summary: Archive a product
|
|
27343
|
+
tags:
|
|
27344
|
+
- Products
|
|
27345
|
+
x-codeSamples:
|
|
27346
|
+
- lang: javascript
|
|
27347
|
+
label: Spree Admin SDK
|
|
27348
|
+
source: |-
|
|
27349
|
+
import { createAdminClient } from '@spree/admin-sdk'
|
|
27350
|
+
|
|
27351
|
+
const client = createAdminClient({
|
|
27352
|
+
baseUrl: 'https://your-store.com',
|
|
27353
|
+
secretKey: 'sk_xxx',
|
|
27354
|
+
})
|
|
27355
|
+
|
|
27356
|
+
const product = await client.products.archive('prod_UkLWZg9DAJ')
|
|
27357
|
+
- lang: bash
|
|
27358
|
+
label: Spree CLI
|
|
27359
|
+
source: spree api patch /products/{id}/archive -d '{ ... }'
|
|
27360
|
+
security:
|
|
27361
|
+
- api_key: []
|
|
27362
|
+
bearer_auth: []
|
|
27363
|
+
description: |-
|
|
27364
|
+
Takes one product off sale and archives it; activating it puts it back on sale. Runs the archive workflow, so its hooks and its event fire. A product awaiting review is refused: approve or reject it instead.
|
|
27365
|
+
|
|
27366
|
+
|
|
27367
|
+
**Required scope:** `write_products` (for API-key authentication).
|
|
27368
|
+
parameters:
|
|
27369
|
+
- name: x-spree-api-key
|
|
27370
|
+
in: header
|
|
27371
|
+
required: true
|
|
27372
|
+
schema:
|
|
27373
|
+
type: string
|
|
27374
|
+
- name: Authorization
|
|
27375
|
+
in: header
|
|
27376
|
+
required: true
|
|
27377
|
+
schema:
|
|
27378
|
+
type: string
|
|
27379
|
+
responses:
|
|
27380
|
+
'200':
|
|
27381
|
+
description: product archived
|
|
27382
|
+
content:
|
|
27383
|
+
application/json:
|
|
27384
|
+
example:
|
|
27385
|
+
id: prod_gbHJdmfrXB
|
|
27386
|
+
name: Product 1644768
|
|
27387
|
+
slug: product-1644768
|
|
27388
|
+
meta_title:
|
|
27389
|
+
meta_description:
|
|
27390
|
+
meta_keywords:
|
|
27391
|
+
variant_count: 1
|
|
27392
|
+
available_on:
|
|
27393
|
+
preorder_ships_at:
|
|
27394
|
+
purchasable: true
|
|
27395
|
+
preorder: false
|
|
27396
|
+
in_stock: false
|
|
27397
|
+
backorderable: true
|
|
27398
|
+
available: false
|
|
27399
|
+
description: In exercitationem nobis illo accusamus non quibusdam.
|
|
27400
|
+
Minus corporis commodi magni maxime cumque beatae. Exercitationem
|
|
27401
|
+
provident tempore est corrupti eius at dolor. Rerum delectus id
|
|
27402
|
+
aspernatur consequuntur quod enim. Quis omnis amet inventore alias
|
|
27403
|
+
minima praesentium. Quaerat reprehenderit deleniti atque inventore.
|
|
27404
|
+
Nemo quas nam qui architecto eligendi vel pariatur. Veritatis accusantium
|
|
27405
|
+
molestias deleniti omnis autem modi. Officiis optio quidem iste
|
|
27406
|
+
nihil delectus commodi. Aperiam amet omnis eum praesentium natus
|
|
27407
|
+
recusandae suscipit.
|
|
27408
|
+
description_html: |-
|
|
27409
|
+
In exercitationem nobis illo accusamus non quibusdam. Minus corporis commodi magni maxime cumque beatae. Exercitationem provident tempore est corrupti eius at dolor. Rerum delectus id aspernatur consequuntur quod enim.
|
|
27410
|
+
Quis omnis amet inventore alias minima praesentium. Quaerat reprehenderit deleniti atque inventore. Nemo quas nam qui architecto eligendi vel pariatur.
|
|
27411
|
+
Veritatis accusantium molestias deleniti omnis autem modi. Officiis optio quidem iste nihil delectus commodi. Aperiam amet omnis eum praesentium natus recusandae suscipit.
|
|
27412
|
+
default_variant_id: variant_gbHJdmfrXB
|
|
27413
|
+
buy_box_variant_id: variant_gbHJdmfrXB
|
|
27414
|
+
thumbnail_url:
|
|
27415
|
+
tags: []
|
|
27416
|
+
price:
|
|
27417
|
+
id: price_gbHJdmfrXB
|
|
27418
|
+
currency: USD
|
|
27419
|
+
amount: '19.99'
|
|
27420
|
+
compare_at_amount:
|
|
27421
|
+
price_list_id:
|
|
27422
|
+
min_quantity: 1
|
|
27423
|
+
variant_id: variant_gbHJdmfrXB
|
|
27424
|
+
created_at: '2026-01-15T12:00:00.000Z'
|
|
27425
|
+
updated_at: '2026-01-15T12:00:00.000Z'
|
|
27426
|
+
original_price:
|
|
27427
|
+
seller_id:
|
|
27428
|
+
external_references: {}
|
|
27429
|
+
status: archived
|
|
27430
|
+
metadata: {}
|
|
27431
|
+
deleted_at:
|
|
27432
|
+
created_at: '2026-01-15T12:00:00.000Z'
|
|
27433
|
+
updated_at: '2026-01-15T12:00:00.000Z'
|
|
27434
|
+
delivery_profile_id: fp_UkLWZg9DAJ
|
|
27435
|
+
seller_name:
|
|
27436
|
+
product_type_id:
|
|
27437
|
+
tax_category_id: taxcat_UkLWZg9DAJ
|
|
27438
|
+
total_on_hand: 0
|
|
27439
|
+
schema:
|
|
27440
|
+
"$ref": "#/components/schemas/Product"
|
|
27441
|
+
'422':
|
|
27442
|
+
description: the product is awaiting review
|
|
27443
|
+
content:
|
|
27444
|
+
application/json:
|
|
27445
|
+
example:
|
|
27446
|
+
error:
|
|
27447
|
+
code: product_in_review
|
|
27448
|
+
message: A product awaiting review is approved or rejected, not
|
|
27449
|
+
moved to another status
|
|
27450
|
+
schema:
|
|
27451
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
27452
|
+
"/api/v3/admin/products/{id}/draft":
|
|
27453
|
+
parameters:
|
|
27454
|
+
- name: id
|
|
27455
|
+
in: path
|
|
27456
|
+
required: true
|
|
27457
|
+
description: Product ID
|
|
27458
|
+
schema:
|
|
27459
|
+
type: string
|
|
27460
|
+
patch:
|
|
27461
|
+
summary: Move a product back to draft
|
|
27462
|
+
tags:
|
|
27463
|
+
- Products
|
|
27464
|
+
x-codeSamples:
|
|
27465
|
+
- lang: javascript
|
|
27466
|
+
label: Spree Admin SDK
|
|
27467
|
+
source: |-
|
|
27468
|
+
import { createAdminClient } from '@spree/admin-sdk'
|
|
27469
|
+
|
|
27470
|
+
const client = createAdminClient({
|
|
27471
|
+
baseUrl: 'https://your-store.com',
|
|
27472
|
+
secretKey: 'sk_xxx',
|
|
27473
|
+
})
|
|
27474
|
+
|
|
27475
|
+
const product = await client.products.draft('prod_UkLWZg9DAJ')
|
|
27476
|
+
- lang: bash
|
|
27477
|
+
label: Spree CLI
|
|
27478
|
+
source: spree api patch /products/{id}/draft -d '{ ... }'
|
|
27479
|
+
security:
|
|
27480
|
+
- api_key: []
|
|
27481
|
+
bearer_auth: []
|
|
27482
|
+
description: |-
|
|
27483
|
+
Takes one product off sale, back to a draft. Runs the draft workflow, so its hooks and its event fire. A product awaiting review is refused: approve or reject it instead.
|
|
27484
|
+
|
|
27485
|
+
|
|
27486
|
+
**Required scope:** `write_products` (for API-key authentication).
|
|
27487
|
+
parameters:
|
|
27488
|
+
- name: x-spree-api-key
|
|
27489
|
+
in: header
|
|
27490
|
+
required: true
|
|
27491
|
+
schema:
|
|
27492
|
+
type: string
|
|
27493
|
+
- name: Authorization
|
|
27494
|
+
in: header
|
|
27495
|
+
required: true
|
|
27496
|
+
schema:
|
|
27497
|
+
type: string
|
|
27498
|
+
responses:
|
|
27499
|
+
'200':
|
|
27500
|
+
description: product draft
|
|
27501
|
+
content:
|
|
27502
|
+
application/json:
|
|
27503
|
+
example:
|
|
27504
|
+
id: prod_gbHJdmfrXB
|
|
27505
|
+
name: Product 1682527
|
|
27506
|
+
slug: product-1682527
|
|
27507
|
+
meta_title:
|
|
27508
|
+
meta_description:
|
|
27509
|
+
meta_keywords:
|
|
27510
|
+
variant_count: 1
|
|
27511
|
+
available_on:
|
|
27512
|
+
preorder_ships_at:
|
|
27513
|
+
purchasable: true
|
|
27514
|
+
preorder: false
|
|
27515
|
+
in_stock: false
|
|
27516
|
+
backorderable: true
|
|
27517
|
+
available: false
|
|
27518
|
+
description: Temporibus fugiat ducimus quae voluptas error. Iure repellat
|
|
27519
|
+
labore aperiam harum magni. Fuga ullam possimus ad repudiandae atque.
|
|
27520
|
+
Excepturi quidem est expedita molestiae delectus. Optio tempora
|
|
27521
|
+
sed minus voluptatum doloremque. Laborum esse voluptate nostrum
|
|
27522
|
+
nesciunt. Ipsum ducimus a dolor nostrum quis corrupti quae illum.
|
|
27523
|
+
Fuga provident deleniti minima ea vel. Cupiditate architecto omnis
|
|
27524
|
+
reprehenderit iusto suscipit corrupti quia cumque. Voluptatem nisi
|
|
27525
|
+
dignissimos aut nostrum distinctio quo explicabo fugiat. Unde minima
|
|
27526
|
+
ratione enim minus officia rerum odio reiciendis. Fugiat perferendis
|
|
27527
|
+
nulla voluptates voluptatum alias. Voluptatem cumque voluptatibus
|
|
27528
|
+
in sint assumenda ad neque. Inventore error consequuntur exercitationem
|
|
27529
|
+
officia consequatur earum iure autem. Odit iure porro reiciendis
|
|
27530
|
+
placeat. Animi minus vel asperiores maiores error tempora. Dolorum
|
|
27531
|
+
esse sapiente voluptatem iste culpa suscipit. Nulla sapiente sit
|
|
27532
|
+
deserunt iste totam dolores. Tempora magni eveniet natus nemo optio.
|
|
27533
|
+
Aliquid quis ullam illo minus. Atque distinctio sapiente voluptatibus
|
|
27534
|
+
adipisci consectetur repellendus culpa dolor. Dolor pariatur tempora
|
|
27535
|
+
ab repellat unde aliquam sequi. Necessitatibus aliquid fugit molestias
|
|
27536
|
+
facilis ratione.
|
|
27537
|
+
description_html: |-
|
|
27538
|
+
Temporibus fugiat ducimus quae voluptas error. Iure repellat labore aperiam harum magni. Fuga ullam possimus ad repudiandae atque. Excepturi quidem est expedita molestiae delectus. Optio tempora sed minus voluptatum doloremque.
|
|
27539
|
+
Laborum esse voluptate nostrum nesciunt. Ipsum ducimus a dolor nostrum quis corrupti quae illum. Fuga provident deleniti minima ea vel. Cupiditate architecto omnis reprehenderit iusto suscipit corrupti quia cumque. Voluptatem nisi dignissimos aut nostrum distinctio quo explicabo fugiat.
|
|
27540
|
+
Unde minima ratione enim minus officia rerum odio reiciendis. Fugiat perferendis nulla voluptates voluptatum alias. Voluptatem cumque voluptatibus in sint assumenda ad neque. Inventore error consequuntur exercitationem officia consequatur earum iure autem.
|
|
27541
|
+
Odit iure porro reiciendis placeat. Animi minus vel asperiores maiores error tempora. Dolorum esse sapiente voluptatem iste culpa suscipit. Nulla sapiente sit deserunt iste totam dolores.
|
|
27542
|
+
Tempora magni eveniet natus nemo optio. Aliquid quis ullam illo minus. Atque distinctio sapiente voluptatibus adipisci consectetur repellendus culpa dolor. Dolor pariatur tempora ab repellat unde aliquam sequi. Necessitatibus aliquid fugit molestias facilis ratione.
|
|
27543
|
+
default_variant_id: variant_gbHJdmfrXB
|
|
27544
|
+
buy_box_variant_id: variant_gbHJdmfrXB
|
|
27545
|
+
thumbnail_url:
|
|
27546
|
+
tags: []
|
|
27547
|
+
price:
|
|
27548
|
+
id: price_gbHJdmfrXB
|
|
27549
|
+
currency: USD
|
|
27550
|
+
amount: '19.99'
|
|
27551
|
+
compare_at_amount:
|
|
27552
|
+
price_list_id:
|
|
27553
|
+
min_quantity: 1
|
|
27554
|
+
variant_id: variant_gbHJdmfrXB
|
|
27555
|
+
created_at: '2026-01-15T12:00:00.000Z'
|
|
27556
|
+
updated_at: '2026-01-15T12:00:00.000Z'
|
|
27557
|
+
original_price:
|
|
27558
|
+
seller_id:
|
|
27559
|
+
external_references: {}
|
|
27560
|
+
status: draft
|
|
27561
|
+
metadata: {}
|
|
27562
|
+
deleted_at:
|
|
27563
|
+
created_at: '2026-01-15T12:00:00.000Z'
|
|
27564
|
+
updated_at: '2026-01-15T12:00:00.000Z'
|
|
27565
|
+
delivery_profile_id: fp_UkLWZg9DAJ
|
|
27566
|
+
seller_name:
|
|
27567
|
+
product_type_id:
|
|
27568
|
+
tax_category_id: taxcat_UkLWZg9DAJ
|
|
27569
|
+
total_on_hand: 0
|
|
27570
|
+
schema:
|
|
27571
|
+
"$ref": "#/components/schemas/Product"
|
|
27572
|
+
'422':
|
|
27573
|
+
description: the product is awaiting review
|
|
27574
|
+
content:
|
|
27575
|
+
application/json:
|
|
27576
|
+
example:
|
|
27577
|
+
error:
|
|
27578
|
+
code: product_in_review
|
|
27579
|
+
message: A product awaiting review is approved or rejected, not
|
|
27580
|
+
moved to another status
|
|
27581
|
+
schema:
|
|
27582
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
26336
27583
|
"/api/v3/admin/translations":
|
|
26337
27584
|
get:
|
|
26338
27585
|
summary: Translation coverage for a resource type
|
|
@@ -29886,6 +31133,13 @@ paths:
|
|
|
29886
31133
|
required: true
|
|
29887
31134
|
schema:
|
|
29888
31135
|
type: string
|
|
31136
|
+
- name: expand
|
|
31137
|
+
in: query
|
|
31138
|
+
required: false
|
|
31139
|
+
description: 'Comma-separated associations to expand: `rules`, `actions` (each
|
|
31140
|
+
under the same shape the write accepts), `custom_fields`.'
|
|
31141
|
+
schema:
|
|
31142
|
+
type: string
|
|
29889
31143
|
responses:
|
|
29890
31144
|
'200':
|
|
29891
31145
|
description: promotion found
|
|
@@ -39578,6 +40832,77 @@ paths:
|
|
|
39578
40832
|
schema:
|
|
39579
40833
|
"$ref": "#/components/schemas/CatalogAssignParams"
|
|
39580
40834
|
required: true
|
|
40835
|
+
"/api/v3/admin/catalogs/{id}/import_products":
|
|
40836
|
+
parameters:
|
|
40837
|
+
- name: id
|
|
40838
|
+
in: path
|
|
40839
|
+
required: true
|
|
40840
|
+
schema:
|
|
40841
|
+
type: string
|
|
40842
|
+
post:
|
|
40843
|
+
summary: Import price list products into a catalog
|
|
40844
|
+
tags:
|
|
40845
|
+
- Catalogs
|
|
40846
|
+
x-codeSamples:
|
|
40847
|
+
- lang: javascript
|
|
40848
|
+
label: Spree Admin SDK
|
|
40849
|
+
source: |-
|
|
40850
|
+
import { createAdminClient } from '@spree/admin-sdk'
|
|
40851
|
+
|
|
40852
|
+
const client = createAdminClient({
|
|
40853
|
+
baseUrl: 'https://your-store.com',
|
|
40854
|
+
secretKey: 'sk_xxx',
|
|
40855
|
+
})
|
|
40856
|
+
|
|
40857
|
+
const { added_count } = await client.catalogs.importProducts('cat_86Rf07xd4z')
|
|
40858
|
+
- lang: bash
|
|
40859
|
+
label: Spree CLI
|
|
40860
|
+
source: spree api post /catalogs/{id}/import_products -d '{ ... }'
|
|
40861
|
+
security:
|
|
40862
|
+
- api_key: []
|
|
40863
|
+
bearer_auth: []
|
|
40864
|
+
description: |-
|
|
40865
|
+
Adds every product on the catalog's price list to its assortment. Products
|
|
40866
|
+
already in it stay, even ones the list does not price. Refused for a
|
|
40867
|
+
catalog without a price list; the count reports what was added.
|
|
40868
|
+
|
|
40869
|
+
|
|
40870
|
+
**Required scope:** `write_products` (for API-key authentication).
|
|
40871
|
+
parameters:
|
|
40872
|
+
- name: x-spree-api-key
|
|
40873
|
+
in: header
|
|
40874
|
+
required: true
|
|
40875
|
+
schema:
|
|
40876
|
+
type: string
|
|
40877
|
+
- name: Authorization
|
|
40878
|
+
in: header
|
|
40879
|
+
required: true
|
|
40880
|
+
schema:
|
|
40881
|
+
type: string
|
|
40882
|
+
responses:
|
|
40883
|
+
'200':
|
|
40884
|
+
description: products imported
|
|
40885
|
+
content:
|
|
40886
|
+
application/json:
|
|
40887
|
+
example:
|
|
40888
|
+
added_count: 1
|
|
40889
|
+
schema:
|
|
40890
|
+
type: object
|
|
40891
|
+
properties:
|
|
40892
|
+
added_count:
|
|
40893
|
+
type: integer
|
|
40894
|
+
required:
|
|
40895
|
+
- added_count
|
|
40896
|
+
'422':
|
|
40897
|
+
description: the catalog has no price list
|
|
40898
|
+
content:
|
|
40899
|
+
application/json:
|
|
40900
|
+
example:
|
|
40901
|
+
error:
|
|
40902
|
+
code: validation_error
|
|
40903
|
+
message: This catalog has no price list to import products from.
|
|
40904
|
+
schema:
|
|
40905
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
39581
40906
|
"/api/v3/admin/catalogs/{catalog_id}/products":
|
|
39582
40907
|
get:
|
|
39583
40908
|
summary: List catalog products
|
|
@@ -41294,6 +42619,7 @@ paths:
|
|
|
41294
42619
|
summary: Reposition a collection product
|
|
41295
42620
|
tags:
|
|
41296
42621
|
- Collections
|
|
42622
|
+
operationId: collections_reposition_product
|
|
41297
42623
|
security:
|
|
41298
42624
|
- api_key: []
|
|
41299
42625
|
bearer_auth: []
|
|
@@ -43678,6 +45004,7 @@ paths:
|
|
|
43678
45004
|
summary: Re-check a company tax registration
|
|
43679
45005
|
tags:
|
|
43680
45006
|
- Companies
|
|
45007
|
+
operationId: company_tax_identifiers_validate
|
|
43681
45008
|
security:
|
|
43682
45009
|
- api_key: []
|
|
43683
45010
|
bearer_auth: []
|
|
@@ -49258,6 +50585,7 @@ paths:
|
|
|
49258
50585
|
summary: Buy or record a shipping label
|
|
49259
50586
|
tags:
|
|
49260
50587
|
- Shipping Labels
|
|
50588
|
+
operationId: shipping_labels_purchase
|
|
49261
50589
|
security:
|
|
49262
50590
|
- api_key: []
|
|
49263
50591
|
bearer_auth: []
|
|
@@ -51701,6 +53029,7 @@ paths:
|
|
|
51701
53029
|
summary: Book in a delivery
|
|
51702
53030
|
tags:
|
|
51703
53031
|
- Purchase Orders
|
|
53032
|
+
operationId: purchase_orders_receive
|
|
51704
53033
|
security:
|
|
51705
53034
|
- api_key: []
|
|
51706
53035
|
bearer_auth: []
|
|
@@ -52332,6 +53661,9 @@ paths:
|
|
|
52332
53661
|
required: true
|
|
52333
53662
|
"/api/v3/admin/reporting/query":
|
|
52334
53663
|
post:
|
|
53664
|
+
x-spree-agent: false
|
|
53665
|
+
x-spree-agent-reason: query_report runs this query, with describe_reporting
|
|
53666
|
+
to learn the vocabulary first.
|
|
52335
53667
|
summary: Run a reporting query
|
|
52336
53668
|
tags:
|
|
52337
53669
|
- Reports
|
|
@@ -54247,6 +55579,93 @@ paths:
|
|
|
54247
55579
|
schema:
|
|
54248
55580
|
"$ref": "#/components/schemas/SellerInviteParams"
|
|
54249
55581
|
required: true
|
|
55582
|
+
"/api/v3/admin/sellers/{seller_id}/invitations/{id}/resend":
|
|
55583
|
+
parameters:
|
|
55584
|
+
- name: seller_id
|
|
55585
|
+
in: path
|
|
55586
|
+
required: true
|
|
55587
|
+
description: Seller prefixed ID
|
|
55588
|
+
schema:
|
|
55589
|
+
type: string
|
|
55590
|
+
- name: id
|
|
55591
|
+
in: path
|
|
55592
|
+
required: true
|
|
55593
|
+
description: Invitation prefixed ID
|
|
55594
|
+
schema:
|
|
55595
|
+
type: string
|
|
55596
|
+
patch:
|
|
55597
|
+
summary: Resend a seller invitation
|
|
55598
|
+
tags:
|
|
55599
|
+
- Sellers
|
|
55600
|
+
x-codeSamples:
|
|
55601
|
+
- lang: javascript
|
|
55602
|
+
label: Spree Admin SDK
|
|
55603
|
+
source: |-
|
|
55604
|
+
import { createAdminClient } from '@spree/admin-sdk'
|
|
55605
|
+
|
|
55606
|
+
const client = createAdminClient({
|
|
55607
|
+
baseUrl: 'https://your-store.com',
|
|
55608
|
+
secretKey: 'sk_xxx',
|
|
55609
|
+
})
|
|
55610
|
+
|
|
55611
|
+
const invitation = await client.sellers.invitations.resend('seller_UkLWZg9DAJ', 'inv_UkLWZg9DAJ')
|
|
55612
|
+
- lang: bash
|
|
55613
|
+
label: Spree CLI
|
|
55614
|
+
source: spree api patch /sellers/{seller_id}/invitations/{id}/resend -d '{
|
|
55615
|
+
... }'
|
|
55616
|
+
security:
|
|
55617
|
+
- api_key: []
|
|
55618
|
+
bearer_auth: []
|
|
55619
|
+
description: |-
|
|
55620
|
+
Sends a pending invitation to the seller's team again, with a fresh
|
|
55621
|
+
acceptance link. Use it when the email never arrived; an invitation that
|
|
55622
|
+
has expired is refused, so invite the person again instead.
|
|
55623
|
+
|
|
55624
|
+
|
|
55625
|
+
**Required scope:** `write_sellers` (for API-key authentication).
|
|
55626
|
+
parameters:
|
|
55627
|
+
- name: x-spree-api-key
|
|
55628
|
+
in: header
|
|
55629
|
+
required: true
|
|
55630
|
+
schema:
|
|
55631
|
+
type: string
|
|
55632
|
+
- name: Authorization
|
|
55633
|
+
in: header
|
|
55634
|
+
required: true
|
|
55635
|
+
schema:
|
|
55636
|
+
type: string
|
|
55637
|
+
responses:
|
|
55638
|
+
'200':
|
|
55639
|
+
description: invitation resent
|
|
55640
|
+
content:
|
|
55641
|
+
application/json:
|
|
55642
|
+
example:
|
|
55643
|
+
id: inv_UkLWZg9DAJ
|
|
55644
|
+
email: gaye@rutherfordmosciski.co.uk
|
|
55645
|
+
status: pending
|
|
55646
|
+
created_at: '2026-01-15T12:00:00.000Z'
|
|
55647
|
+
updated_at: '2026-01-15T12:00:00.000Z'
|
|
55648
|
+
expires_at: '2026-01-29T12:00:00.000Z'
|
|
55649
|
+
role_id: role_UkLWZg9DAJ
|
|
55650
|
+
role_name: admin
|
|
55651
|
+
inviter_email: carman@schambergernicolas.ca
|
|
55652
|
+
invitee_exists: false
|
|
55653
|
+
store:
|
|
55654
|
+
id: store_UkLWZg9DAJ
|
|
55655
|
+
name: Spree Test Store
|
|
55656
|
+
schema:
|
|
55657
|
+
"$ref": "#/components/schemas/Invitation"
|
|
55658
|
+
'422':
|
|
55659
|
+
description: the invitation has expired
|
|
55660
|
+
content:
|
|
55661
|
+
application/json:
|
|
55662
|
+
example:
|
|
55663
|
+
error:
|
|
55664
|
+
code: processing_error
|
|
55665
|
+
message: This invitation has expired. Invite them again to send
|
|
55666
|
+
a new one.
|
|
55667
|
+
schema:
|
|
55668
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
54250
55669
|
"/api/v3/admin/sellers/{id}/approve":
|
|
54251
55670
|
parameters:
|
|
54252
55671
|
- name: id
|
|
@@ -55189,6 +56608,9 @@ paths:
|
|
|
55189
56608
|
schema:
|
|
55190
56609
|
type: string
|
|
55191
56610
|
patch:
|
|
56611
|
+
x-spree-agent: false
|
|
56612
|
+
x-spree-agent-reason: Settles a payout against the payment provider, reconciling
|
|
56613
|
+
against provider state an agent cannot see.
|
|
55192
56614
|
summary: Mark a payout paid
|
|
55193
56615
|
tags:
|
|
55194
56616
|
- Sellers
|
|
@@ -55507,6 +56929,9 @@ paths:
|
|
|
55507
56929
|
- meta
|
|
55508
56930
|
"/api/v3/admin/stock_levels/bulk_upsert":
|
|
55509
56931
|
post:
|
|
56932
|
+
x-spree-agent: false
|
|
56933
|
+
x-spree-agent-reason: set_stock calls this endpoint already, taking stock by
|
|
56934
|
+
SKU and location the way a merchant names them.
|
|
55510
56935
|
summary: Bulk-upsert stock levels
|
|
55511
56936
|
tags:
|
|
55512
56937
|
- Stock
|
|
@@ -57041,6 +58466,7 @@ paths:
|
|
|
57041
58466
|
summary: Count a delivery in
|
|
57042
58467
|
tags:
|
|
57043
58468
|
- Stock Transfers
|
|
58469
|
+
operationId: stock_transfers_receive
|
|
57044
58470
|
security:
|
|
57045
58471
|
- api_key: []
|
|
57046
58472
|
bearer_auth: []
|
|
@@ -62312,6 +63738,24 @@ components:
|
|
|
62312
63738
|
type: array
|
|
62313
63739
|
items:
|
|
62314
63740
|
type: object
|
|
63741
|
+
properties:
|
|
63742
|
+
id:
|
|
63743
|
+
type: string
|
|
63744
|
+
name:
|
|
63745
|
+
type: string
|
|
63746
|
+
nullable: true
|
|
63747
|
+
position:
|
|
63748
|
+
type: number
|
|
63749
|
+
nullable: true
|
|
63750
|
+
stock_location_ids:
|
|
63751
|
+
type: array
|
|
63752
|
+
items:
|
|
63753
|
+
type: string
|
|
63754
|
+
required:
|
|
63755
|
+
- id
|
|
63756
|
+
- name
|
|
63757
|
+
- position
|
|
63758
|
+
- stock_location_ids
|
|
62315
63759
|
products_count:
|
|
62316
63760
|
type: number
|
|
62317
63761
|
delivery_methods_count:
|
|
@@ -63650,6 +65094,14 @@ components:
|
|
|
63650
65094
|
type: array
|
|
63651
65095
|
items:
|
|
63652
65096
|
type: object
|
|
65097
|
+
properties:
|
|
65098
|
+
kind:
|
|
65099
|
+
type: string
|
|
65100
|
+
url:
|
|
65101
|
+
type: string
|
|
65102
|
+
required:
|
|
65103
|
+
- kind
|
|
65104
|
+
- url
|
|
63653
65105
|
labels:
|
|
63654
65106
|
type: array
|
|
63655
65107
|
items:
|
|
@@ -64414,6 +65866,14 @@ components:
|
|
|
64414
65866
|
type: boolean
|
|
64415
65867
|
store:
|
|
64416
65868
|
type: object
|
|
65869
|
+
properties:
|
|
65870
|
+
id:
|
|
65871
|
+
type: string
|
|
65872
|
+
name:
|
|
65873
|
+
type: string
|
|
65874
|
+
required:
|
|
65875
|
+
- id
|
|
65876
|
+
- name
|
|
64417
65877
|
required:
|
|
64418
65878
|
- id
|
|
64419
65879
|
- email
|
|
@@ -67750,6 +69210,14 @@ components:
|
|
|
67750
69210
|
type: boolean
|
|
67751
69211
|
description: Whether the card issuer reported that the security code did
|
|
67752
69212
|
not match.
|
|
69213
|
+
can_void:
|
|
69214
|
+
type: boolean
|
|
69215
|
+
description: Whether the payment can be voided now, as decided by its payment
|
|
69216
|
+
method.
|
|
69217
|
+
can_capture:
|
|
69218
|
+
type: boolean
|
|
69219
|
+
description: Whether the payment can be captured now, as decided by its
|
|
69220
|
+
payment method.
|
|
67753
69221
|
captured_amount:
|
|
67754
69222
|
type: string
|
|
67755
69223
|
order_id:
|
|
@@ -67788,6 +69256,8 @@ components:
|
|
|
67788
69256
|
- updated_at
|
|
67789
69257
|
- avs_risky
|
|
67790
69258
|
- cvv_risky
|
|
69259
|
+
- can_void
|
|
69260
|
+
- can_capture
|
|
67791
69261
|
- captured_amount
|
|
67792
69262
|
- order_id
|
|
67793
69263
|
x-typelizer: true
|
|
@@ -68853,6 +70323,9 @@ components:
|
|
|
68853
70323
|
tax_category_id:
|
|
68854
70324
|
type: string
|
|
68855
70325
|
nullable: true
|
|
70326
|
+
total_on_hand:
|
|
70327
|
+
type: number
|
|
70328
|
+
nullable: true
|
|
68856
70329
|
digital_assets:
|
|
68857
70330
|
type: array
|
|
68858
70331
|
items:
|
|
@@ -68905,6 +70378,7 @@ components:
|
|
|
68905
70378
|
- seller_name
|
|
68906
70379
|
- product_type_id
|
|
68907
70380
|
- tax_category_id
|
|
70381
|
+
- total_on_hand
|
|
68908
70382
|
x-typelizer: true
|
|
68909
70383
|
ProductSubmission:
|
|
68910
70384
|
type: object
|
|
@@ -69214,6 +70688,14 @@ components:
|
|
|
69214
70688
|
type: array
|
|
69215
70689
|
items:
|
|
69216
70690
|
type: string
|
|
70691
|
+
rules:
|
|
70692
|
+
type: array
|
|
70693
|
+
items:
|
|
70694
|
+
"$ref": "#/components/schemas/PromotionRule"
|
|
70695
|
+
actions:
|
|
70696
|
+
type: array
|
|
70697
|
+
items:
|
|
70698
|
+
"$ref": "#/components/schemas/PromotionAction"
|
|
69217
70699
|
required:
|
|
69218
70700
|
- id
|
|
69219
70701
|
- name
|
|
@@ -70033,6 +71515,14 @@ components:
|
|
|
70033
71515
|
type: array
|
|
70034
71516
|
items:
|
|
70035
71517
|
type: object
|
|
71518
|
+
properties:
|
|
71519
|
+
kind:
|
|
71520
|
+
type: string
|
|
71521
|
+
url:
|
|
71522
|
+
type: string
|
|
71523
|
+
required:
|
|
71524
|
+
- kind
|
|
71525
|
+
- url
|
|
70036
71526
|
labels:
|
|
70037
71527
|
type: array
|
|
70038
71528
|
items:
|
|
@@ -70856,6 +72346,15 @@ components:
|
|
|
70856
72346
|
nullable: true
|
|
70857
72347
|
blocker:
|
|
70858
72348
|
type: object
|
|
72349
|
+
properties:
|
|
72350
|
+
state:
|
|
72351
|
+
type: string
|
|
72352
|
+
message:
|
|
72353
|
+
type: string
|
|
72354
|
+
nullable: true
|
|
72355
|
+
required:
|
|
72356
|
+
- state
|
|
72357
|
+
- message
|
|
70859
72358
|
nullable: true
|
|
70860
72359
|
blocking:
|
|
70861
72360
|
type: boolean
|
|
@@ -71034,6 +72533,14 @@ components:
|
|
|
71034
72533
|
type: number
|
|
71035
72534
|
onboarding_progress:
|
|
71036
72535
|
type: object
|
|
72536
|
+
properties:
|
|
72537
|
+
done:
|
|
72538
|
+
type: number
|
|
72539
|
+
total:
|
|
72540
|
+
type: number
|
|
72541
|
+
required:
|
|
72542
|
+
- done
|
|
72543
|
+
- total
|
|
71037
72544
|
onboarding_complete:
|
|
71038
72545
|
type: boolean
|
|
71039
72546
|
legal_name:
|