Sherpo customer API
Every operation acts for one signed-in customer of one store, under /v1/stores/{store}, where {store} is one of the store's hostnames; those that also take a publishable key read the store as a visitor does, before anyone signs in. Start with authentication; failures follow the errors guide.
checkout
POST/v1/stores/{store}/checkouts
Opens a cart in one currency. Scope checkout:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
Body
Schema
{
"type": "object",
"properties": {
"currency": {
"type": "string",
"minLength": 3,
"maxLength": 3,
"pattern": "^[A-Za-z]{3}$"
}
},
"required": [
"currency"
],
"additionalProperties": false
}201
Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"x-extensible-enum": [
"paid",
"expired",
"open",
"frozen",
"abandoned"
]
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"category": {
"type": "string"
},
"deleted": {
"type": "boolean"
}
},
"required": [
"id",
"slug",
"title",
"category",
"deleted"
]
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"price_id": {
"type": "string"
},
"quantity": {
"type": "number"
},
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"discount_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"total": {
"type": "number"
},
"mode": {
"type": "string",
"x-extensible-enum": [
"purchase",
"upgrade",
"renewal"
]
}
},
"required": [
"product",
"id",
"product_id",
"price_id",
"quantity",
"amount",
"discount",
"discount_id",
"total",
"mode"
]
}
},
"totals": {
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"total": {
"type": "number"
}
},
"required": [
"amount",
"discount",
"total"
]
},
"id": {
"type": "string"
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"coupon": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"refund_waiver": {
"anyOf": [
{
"type": "object",
"properties": {
"policy": {
"description": "The strictest policy among the lines, the one consented to.",
"type": "string"
},
"accepted_at": {
"type": "string"
}
},
"required": [
"policy",
"accepted_at"
]
},
{
"type": "null"
}
]
},
"expires_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"items",
"totals",
"id",
"currency",
"exponent",
"coupon",
"refund_waiver",
"expires_at",
"created_at",
"updated_at"
]
}PUT/v1/stores/{store}/checkouts/{checkout}/items
Puts a price in a cart at the offer the customer gets now; zero removes the line. Scope checkout:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
checkout | path | required |
Body
Schema
{
"type": "object",
"properties": {
"price": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 512
}
},
"required": [
"id"
],
"additionalProperties": false
},
"quantity": {
"description": "Zero removes the line.",
"type": "integer",
"minimum": 0,
"maximum": 99
}
},
"required": [
"price"
],
"additionalProperties": false
}200
Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"x-extensible-enum": [
"paid",
"expired",
"open",
"frozen",
"abandoned"
]
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"category": {
"type": "string"
},
"deleted": {
"type": "boolean"
}
},
"required": [
"id",
"slug",
"title",
"category",
"deleted"
]
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"price_id": {
"type": "string"
},
"quantity": {
"type": "number"
},
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"discount_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"total": {
"type": "number"
},
"mode": {
"type": "string",
"x-extensible-enum": [
"purchase",
"upgrade",
"renewal"
]
}
},
"required": [
"product",
"id",
"product_id",
"price_id",
"quantity",
"amount",
"discount",
"discount_id",
"total",
"mode"
]
}
},
"totals": {
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"total": {
"type": "number"
}
},
"required": [
"amount",
"discount",
"total"
]
},
"id": {
"type": "string"
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"coupon": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"refund_waiver": {
"anyOf": [
{
"type": "object",
"properties": {
"policy": {
"description": "The strictest policy among the lines, the one consented to.",
"type": "string"
},
"accepted_at": {
"type": "string"
}
},
"required": [
"policy",
"accepted_at"
]
},
{
"type": "null"
}
]
},
"expires_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"items",
"totals",
"id",
"currency",
"exponent",
"coupon",
"refund_waiver",
"expires_at",
"created_at",
"updated_at"
]
}PUT/v1/stores/{store}/checkouts/{checkout}/coupon
Names a coupon on a cart, or takes it off with null. Scope checkout:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
checkout | path | required |
Body
Schema
{
"type": "object",
"properties": {
"code": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 64
},
{
"type": "null"
}
]
}
},
"required": [
"code"
],
"additionalProperties": false
}200
Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"x-extensible-enum": [
"paid",
"expired",
"open",
"frozen",
"abandoned"
]
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"category": {
"type": "string"
},
"deleted": {
"type": "boolean"
}
},
"required": [
"id",
"slug",
"title",
"category",
"deleted"
]
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"price_id": {
"type": "string"
},
"quantity": {
"type": "number"
},
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"discount_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"total": {
"type": "number"
},
"mode": {
"type": "string",
"x-extensible-enum": [
"purchase",
"upgrade",
"renewal"
]
}
},
"required": [
"product",
"id",
"product_id",
"price_id",
"quantity",
"amount",
"discount",
"discount_id",
"total",
"mode"
]
}
},
"totals": {
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"total": {
"type": "number"
}
},
"required": [
"amount",
"discount",
"total"
]
},
"id": {
"type": "string"
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"coupon": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"refund_waiver": {
"anyOf": [
{
"type": "object",
"properties": {
"policy": {
"description": "The strictest policy among the lines, the one consented to.",
"type": "string"
},
"accepted_at": {
"type": "string"
}
},
"required": [
"policy",
"accepted_at"
]
},
{
"type": "null"
}
]
},
"expires_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"items",
"totals",
"id",
"currency",
"exponent",
"coupon",
"refund_waiver",
"expires_at",
"created_at",
"updated_at"
]
}POST/v1/stores/{store}/checkouts/{checkout}/freeze
Presents a cart for payment: its lines must still price as frozen, then it stops changing. Scope checkout:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
checkout | path | required |
Body
Schema
{
"type": "object",
"properties": {
"refund_waiver": {
"description": "The buyer's consent to a refund policy shorter than the statutory window.",
"type": "boolean"
}
},
"additionalProperties": false
}200
Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"x-extensible-enum": [
"paid",
"expired",
"open",
"frozen",
"abandoned"
]
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"category": {
"type": "string"
},
"deleted": {
"type": "boolean"
}
},
"required": [
"id",
"slug",
"title",
"category",
"deleted"
]
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"price_id": {
"type": "string"
},
"quantity": {
"type": "number"
},
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"discount_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"total": {
"type": "number"
},
"mode": {
"type": "string",
"x-extensible-enum": [
"purchase",
"upgrade",
"renewal"
]
}
},
"required": [
"product",
"id",
"product_id",
"price_id",
"quantity",
"amount",
"discount",
"discount_id",
"total",
"mode"
]
}
},
"totals": {
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"total": {
"type": "number"
}
},
"required": [
"amount",
"discount",
"total"
]
},
"id": {
"type": "string"
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"coupon": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"refund_waiver": {
"anyOf": [
{
"type": "object",
"properties": {
"policy": {
"description": "The strictest policy among the lines, the one consented to.",
"type": "string"
},
"accepted_at": {
"type": "string"
}
},
"required": [
"policy",
"accepted_at"
]
},
{
"type": "null"
}
]
},
"expires_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"items",
"totals",
"id",
"currency",
"exponent",
"coupon",
"refund_waiver",
"expires_at",
"created_at",
"updated_at"
]
}POST/v1/stores/{store}/checkouts/{checkout}/abandon
Gives a cart up; a frozen one hands its coupons back. Scope checkout:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
checkout | path | required |
Body
Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}200
Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"x-extensible-enum": [
"paid",
"expired",
"open",
"frozen",
"abandoned"
]
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"category": {
"type": "string"
},
"deleted": {
"type": "boolean"
}
},
"required": [
"id",
"slug",
"title",
"category",
"deleted"
]
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"price_id": {
"type": "string"
},
"quantity": {
"type": "number"
},
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"discount_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"total": {
"type": "number"
},
"mode": {
"type": "string",
"x-extensible-enum": [
"purchase",
"upgrade",
"renewal"
]
}
},
"required": [
"product",
"id",
"product_id",
"price_id",
"quantity",
"amount",
"discount",
"discount_id",
"total",
"mode"
]
}
},
"totals": {
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"total": {
"type": "number"
}
},
"required": [
"amount",
"discount",
"total"
]
},
"id": {
"type": "string"
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"coupon": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"refund_waiver": {
"anyOf": [
{
"type": "object",
"properties": {
"policy": {
"description": "The strictest policy among the lines, the one consented to.",
"type": "string"
},
"accepted_at": {
"type": "string"
}
},
"required": [
"policy",
"accepted_at"
]
},
{
"type": "null"
}
]
},
"expires_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"items",
"totals",
"id",
"currency",
"exponent",
"coupon",
"refund_waiver",
"expires_at",
"created_at",
"updated_at"
]
}POST/v1/stores/{store}/checkouts/{checkout}/pay
Starts paying a frozen cart, answering what the buyer's page confirms with the processor, or the order when nothing is due. Scope checkout:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
checkout | path | required |
Body
Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}200
Schema
{
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "paid"
},
"order": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"number": {
"type": "number"
}
},
"required": [
"id",
"number"
]
}
},
"required": [
"status",
"order"
]
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"x-extensible-enum": [
"requires_payment",
"processing"
]
},
"payment": {
"type": "object",
"properties": {
"processor": {
"type": "string",
"x-extensible-enum": [
"stripe"
]
},
"client_secret": {
"type": "string"
},
"publishable_key": {
"type": "string"
},
"account": {
"type": "string"
},
"amount": {
"type": "number"
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"processor",
"client_secret",
"publishable_key",
"account",
"amount",
"currency",
"exponent"
]
}
},
"required": [
"status",
"payment"
]
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"x-extensible-enum": [
"cancelled",
"refunded",
"refund_pending",
"refund_failed"
]
}
},
"required": [
"status"
]
}
]
}POST/v1/stores/{store}/checkouts/{checkout}/confirm
Reads a cart's payment back after the buyer's page confirmed it, answering the order once it is paid. Scope checkout:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
checkout | path | required |
Body
Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}200
Schema
{
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "paid"
},
"order": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"number": {
"type": "number"
}
},
"required": [
"id",
"number"
]
}
},
"required": [
"status",
"order"
]
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"x-extensible-enum": [
"requires_payment",
"processing"
]
},
"payment": {
"type": "object",
"properties": {
"processor": {
"type": "string",
"x-extensible-enum": [
"stripe"
]
},
"client_secret": {
"type": "string"
},
"publishable_key": {
"type": "string"
},
"account": {
"type": "string"
},
"amount": {
"type": "number"
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"processor",
"client_secret",
"publishable_key",
"account",
"amount",
"currency",
"exponent"
]
}
},
"required": [
"status",
"payment"
]
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"x-extensible-enum": [
"cancelled",
"refunded",
"refund_pending",
"refund_failed"
]
}
},
"required": [
"status"
]
}
]
}contact
POST/v1/stores/{store}/contacts/add
Adds an email address to the customer and mails it a code to prove it. Scope contact:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
Body
Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "email"
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 254,
"pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$"
}
},
"required": [
"kind",
"value"
],
"additionalProperties": false
}200
Schema
{
"type": "object",
"properties": {
"expires_at": {
"type": "string"
}
},
"required": [
"expires_at"
]
}POST/v1/stores/{store}/contacts/verify
Proves an email address with the code mailed to it. Scope contact:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
Body
Schema
{
"type": "object",
"properties": {
"value": {
"type": "string",
"minLength": 1,
"maxLength": 254,
"pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$"
},
"code": {
"type": "string",
"minLength": 1,
"maxLength": 64
}
},
"required": [
"value",
"code"
],
"additionalProperties": false
}200
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"x-extensible-enum": [
"email",
"phone"
]
},
"value": {
"type": "string"
},
"verified_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"kind",
"value",
"verified_at"
]
}
}POST/v1/stores/{store}/contacts/remove
Removes one of the customer's email addresses, never the last proven one. Scope contact:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
Body
Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "email"
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 254,
"pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$"
}
},
"required": [
"kind",
"value"
],
"additionalProperties": false
}200
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"x-extensible-enum": [
"email",
"phone"
]
},
"value": {
"type": "string"
},
"verified_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"kind",
"value",
"verified_at"
]
}
}profile
PATCH/v1/stores/{store}/profile
Updates the customer's name and preferences. Scope profile:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
Body
Schema
{
"type": "object",
"properties": {
"display_name": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 120
},
{
"type": "null"
}
]
},
"locale": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 35
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
}200
Schema
{
"type": "object",
"properties": {
"contacts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"x-extensible-enum": [
"email",
"phone"
]
},
"value": {
"type": "string"
},
"verified_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"kind",
"value",
"verified_at"
]
}
},
"id": {
"type": "string"
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"locale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"contacts",
"id",
"display_name",
"locale",
"country",
"created_at"
]
}progress
POST/v1/stores/{store}/entries/{entry}/complete
Marks an entry complete for the customer. Scope progress:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
entry | path | required |
Body
Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}200
Schema
{
"type": "object",
"properties": {
"entry_id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"completed_at": {
"type": "string"
},
"certificates": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"certificate_id": {
"type": "string"
},
"score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"attempt": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"issued_at": {
"type": "string"
}
},
"required": [
"id",
"certificate_id",
"score",
"attempt",
"issued_at"
]
}
}
},
"required": [
"entry_id",
"product_id",
"completed_at",
"certificates"
]
}quiz
POST/v1/stores/{store}/quizzes/{quiz}/attempts
Starts an attempt at a quiz. Scope quiz:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
quiz | path | required |
Body
Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}200
Schema
{
"type": "object",
"properties": {
"attempt": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"quiz_id": {
"type": "string"
},
"entry_id": {
"type": "string"
},
"attempt": {
"type": "number"
},
"status": {
"type": "string",
"x-extensible-enum": [
"failed",
"started",
"submitted",
"passed",
"forfeited"
]
},
"score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"correct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"started_at": {
"type": "string"
},
"finished_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"quiz_id",
"entry_id",
"attempt",
"status",
"score",
"correct",
"started_at",
"finished_at"
]
},
"questions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"id": {
"type": "string"
},
"question": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"content": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"options": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
}
},
"required": [
"id",
"text"
]
}
},
{
"type": "null"
}
]
},
"min": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"weight": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"hint": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"type",
"id",
"question",
"content",
"options",
"min",
"max",
"weight",
"hint"
]
}
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"id": {
"type": "string"
},
"role": {
"type": "string",
"x-extensible-enum": [
"body",
"staged",
"staged_file",
"prose",
"teaser",
"embed",
"deliverable",
"poster",
"logo",
"prompt",
"stylesheet"
]
},
"delivery": {
"type": "string",
"x-extensible-enum": [
"inline",
"download",
"stream"
]
},
"preview_only": {
"type": "boolean"
},
"position": {
"type": "number"
},
"asset": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ext": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"storage": {
"type": "string",
"x-extensible-enum": [
"r2",
"s3",
"inline"
]
},
"enforcement": {
"type": "string",
"x-extensible-enum": [
"public",
"external",
"signed"
]
},
"locator": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadata": {
"type": "object",
"properties": {
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"width",
"height",
"duration",
"pages"
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
}
},
"required": [
"id",
"name",
"title",
"ext",
"description",
"mime",
"bytes",
"storage",
"enforcement",
"locator",
"metadata",
"status"
]
}
},
"required": [
"access",
"id",
"role",
"delivery",
"preview_only",
"position",
"asset"
]
}
},
"files": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"kind": {
"type": "string",
"x-extensible-enum": [
"video",
"audio",
"image",
"pdf",
"file"
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"description": "Seconds.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
},
"url": {
"description": "A public file's lasting URL; null for a private one, or one whose bytes haven't landed.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"attachment_id": {
"description": "The binding a private file opens through; null when the reader can't open it.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"kind",
"mime",
"name",
"bytes",
"width",
"height",
"duration",
"pages",
"status",
"url",
"attachment_id"
]
}
}
},
"required": [
"attempt",
"questions",
"attachments",
"files"
]
}POST/v1/stores/{store}/attempts/{attempt}/submit
Submits answers to an attempt and grades it. Scope quiz:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
attempt | path | required |
Body
Schema
{
"type": "object",
"properties": {
"answers": {
"description": "Each text answer at most 4000 characters.",
"type": "object",
"properties": {},
"additionalProperties": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string",
"maxLength": 4000
},
{
"type": "number"
},
{
"type": "null"
}
]
},
"maxProperties": 500
}
},
"required": [
"answers"
],
"additionalProperties": false
}200
Schema
{
"type": "object",
"properties": {
"attempt": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"quiz_id": {
"type": "string"
},
"entry_id": {
"type": "string"
},
"attempt": {
"type": "number"
},
"status": {
"type": "string",
"x-extensible-enum": [
"failed",
"started",
"submitted",
"passed",
"forfeited"
]
},
"score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"correct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"started_at": {
"type": "string"
},
"finished_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"quiz_id",
"entry_id",
"attempt",
"status",
"score",
"correct",
"started_at",
"finished_at"
]
},
"score": {
"type": "number"
},
"correct": {
"type": "number"
},
"total": {
"type": "number"
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"question_id": {
"type": "string"
},
"answer": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "number"
},
{
"type": "null"
}
]
},
"correct": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"key": {
"anyOf": [
{
"type": "object",
"properties": {
"correct_option_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"correct_answer": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"correct_value": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"accepted_answers": {
"type": "array",
"items": {
"type": "string"
}
},
"explanation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"correct_option_id",
"correct_answer",
"correct_value",
"accepted_answers",
"explanation"
]
},
{
"type": "null"
}
]
}
},
"required": [
"question_id",
"answer",
"correct",
"key"
]
}
},
"certificate": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"certificate_id": {
"type": "string"
},
"score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"attempt": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"issued_at": {
"type": "string"
}
},
"required": [
"id",
"certificate_id",
"score",
"attempt",
"issued_at"
]
},
{
"type": "null"
}
]
}
},
"required": [
"attempt",
"score",
"correct",
"total",
"results",
"certificate"
]
}POST/v1/stores/{store}/quizzes/{quiz}/forfeit
Gives up the open attempt at a quiz. Scope quiz:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
quiz | path | required |
Body
Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}200
Schema
{
"type": "object",
"properties": {
"attempt": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"quiz_id": {
"type": "string"
},
"entry_id": {
"type": "string"
},
"attempt": {
"type": "number"
},
"status": {
"type": "string",
"x-extensible-enum": [
"failed",
"started",
"submitted",
"passed",
"forfeited"
]
},
"score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"correct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"started_at": {
"type": "string"
},
"finished_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"quiz_id",
"entry_id",
"attempt",
"status",
"score",
"correct",
"started_at",
"finished_at"
]
},
"certificate": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"certificate_id": {
"type": "string"
},
"score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"attempt": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"issued_at": {
"type": "string"
}
},
"required": [
"id",
"certificate_id",
"score",
"attempt",
"issued_at"
]
},
{
"type": "null"
}
]
}
},
"required": [
"attempt",
"certificate"
]
}read
GET/v1/stores/{store}/profile
Reads the customer's profile. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
200
Schema
{
"type": "object",
"properties": {
"contacts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"x-extensible-enum": [
"email",
"phone"
]
},
"value": {
"type": "string"
},
"verified_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"kind",
"value",
"verified_at"
]
}
},
"id": {
"type": "string"
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"locale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"contacts",
"id",
"display_name",
"locale",
"country",
"created_at"
]
}GET/v1/stores/{store}/contacts
Lists the customer's email addresses and phones. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
200
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"x-extensible-enum": [
"email",
"phone"
]
},
"value": {
"type": "string"
},
"verified_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"kind",
"value",
"verified_at"
]
}
}GET/v1/stores/{store}/billing_profile
Reads the customer's saved payment methods with each processor on the store's account. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
200
Schema
{
"type": "object",
"properties": {
"processors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"processor": {
"type": "string",
"x-extensible-enum": [
"stripe"
]
},
"customer_ref": {
"type": "string"
},
"instruments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string"
},
"display": {
"type": "object",
"properties": {
"brand": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"last4": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"expiration": {
"anyOf": [
{
"type": "object",
"properties": {
"month": {
"type": "number"
},
"year": {
"type": "number"
}
},
"required": [
"month",
"year"
]
},
{
"type": "null"
}
]
}
},
"required": [
"brand",
"last4",
"expiration"
]
},
"is_default": {
"type": "boolean"
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"type",
"display",
"is_default",
"created_at"
]
}
}
},
"required": [
"processor",
"customer_ref",
"instruments"
]
}
}
},
"required": [
"processors"
]
}GET/v1/stores/{store}/products
Pages the store's products with what the customer holds of each. Scope read. Also takes a publishable key.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
filter | query | filter[<field>]=<value> is an equality, filter[<field>][<op>]=<value> names the operator; in repeats the parameter. | |
sort | query | ||
direction | query | ||
limit | query | ||
cursor | query | ||
count | query | ||
search | query | ||
coupon | query |
200
Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"category": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"discountable": {
"type": "boolean"
},
"subscribable": {
"type": "boolean"
},
"reviewable": {
"type": "boolean"
},
"repeatable": {
"description": "Bought again and again: a coffee, a donation, an invoice, a seat, a slot.",
"type": "boolean"
},
"aside_size": {
"type": "string",
"x-extensible-enum": [
"small",
"none",
"large"
]
}
},
"required": [
"id",
"label",
"discountable",
"subscribable",
"reviewable",
"repeatable",
"aside_size"
]
},
{
"type": "null"
}
]
},
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"offers": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"tier": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"rank": {
"type": "number"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"rank",
"name"
]
},
"currency": {
"type": "string"
},
"exponent": {
"description": "Null when central does not know the currency.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"amount": {
"description": "The list amount, or the frozen plan amount on a renewal.",
"type": "number"
},
"discounted": {
"description": "After the discount that applies.",
"type": "number"
},
"charge": {
"description": "What the caller pays now; nothing on an upgrade granted free.",
"type": "number"
},
"highlighted": {
"type": "boolean"
},
"title": {
"description": "Shown in place of the tier's name when set.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"refund_policy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"autorenew": {
"type": "boolean"
},
"renewal_discount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"refund_policy",
"autorenew",
"renewal_discount"
]
},
"discount": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"code"
]
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"const": "one_time"
},
"period": {
"type": "null"
},
"mode": {
"type": "string",
"x-extensible-enum": [
"purchase",
"renewal"
]
},
"upgrade": {
"type": "null"
}
},
"required": [
"id",
"tier",
"currency",
"exponent",
"amount",
"discounted",
"charge",
"highlighted",
"title",
"description",
"settings",
"discount",
"kind",
"period",
"mode",
"upgrade"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"tier": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"rank": {
"type": "number"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"rank",
"name"
]
},
"currency": {
"type": "string"
},
"exponent": {
"description": "Null when central does not know the currency.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"amount": {
"description": "The list amount, or the frozen plan amount on a renewal.",
"type": "number"
},
"discounted": {
"description": "After the discount that applies.",
"type": "number"
},
"charge": {
"description": "What the caller pays now; nothing on an upgrade granted free.",
"type": "number"
},
"highlighted": {
"type": "boolean"
},
"title": {
"description": "Shown in place of the tier's name when set.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"refund_policy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"autorenew": {
"type": "boolean"
},
"renewal_discount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"refund_policy",
"autorenew",
"renewal_discount"
]
},
"discount": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"code"
]
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"const": "one_time"
},
"period": {
"type": "null"
},
"mode": {
"type": "string",
"const": "upgrade"
},
"upgrade": {
"type": "object",
"properties": {
"from_rank": {
"type": "number"
},
"credit": {
"type": "number"
},
"effective_credit": {
"type": "number"
},
"free": {
"type": "boolean"
}
},
"required": [
"from_rank",
"credit",
"effective_credit",
"free"
]
}
},
"required": [
"id",
"tier",
"currency",
"exponent",
"amount",
"discounted",
"charge",
"highlighted",
"title",
"description",
"settings",
"discount",
"kind",
"period",
"mode",
"upgrade"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"tier": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"rank": {
"type": "number"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"rank",
"name"
]
},
"currency": {
"type": "string"
},
"exponent": {
"description": "Null when central does not know the currency.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"amount": {
"description": "The list amount, or the frozen plan amount on a renewal.",
"type": "number"
},
"discounted": {
"description": "After the discount that applies.",
"type": "number"
},
"charge": {
"description": "What the caller pays now; nothing on an upgrade granted free.",
"type": "number"
},
"highlighted": {
"type": "boolean"
},
"title": {
"description": "Shown in place of the tier's name when set.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"refund_policy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"autorenew": {
"type": "boolean"
},
"renewal_discount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"refund_policy",
"autorenew",
"renewal_discount"
]
},
"discount": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"code"
]
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"const": "recurring"
},
"period": {
"type": "object",
"properties": {
"unit": {
"type": "string",
"x-extensible-enum": [
"day",
"week",
"month",
"year"
]
},
"multiplier": {
"type": "number"
}
},
"required": [
"unit",
"multiplier"
]
},
"mode": {
"type": "string",
"x-extensible-enum": [
"purchase",
"renewal"
]
},
"upgrade": {
"type": "null"
}
},
"required": [
"id",
"tier",
"currency",
"exponent",
"amount",
"discounted",
"charge",
"highlighted",
"title",
"description",
"settings",
"discount",
"kind",
"period",
"mode",
"upgrade"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"tier": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"rank": {
"type": "number"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"rank",
"name"
]
},
"currency": {
"type": "string"
},
"exponent": {
"description": "Null when central does not know the currency.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"amount": {
"description": "The list amount, or the frozen plan amount on a renewal.",
"type": "number"
},
"discounted": {
"description": "After the discount that applies.",
"type": "number"
},
"charge": {
"description": "What the caller pays now; nothing on an upgrade granted free.",
"type": "number"
},
"highlighted": {
"type": "boolean"
},
"title": {
"description": "Shown in place of the tier's name when set.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"refund_policy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"autorenew": {
"type": "boolean"
},
"renewal_discount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"refund_policy",
"autorenew",
"renewal_discount"
]
},
"discount": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"code"
]
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"const": "recurring"
},
"period": {
"type": "object",
"properties": {
"unit": {
"type": "string",
"x-extensible-enum": [
"day",
"week",
"month",
"year"
]
},
"multiplier": {
"type": "number"
}
},
"required": [
"unit",
"multiplier"
]
},
"mode": {
"type": "string",
"const": "upgrade"
},
"upgrade": {
"type": "object",
"properties": {
"from_rank": {
"type": "number"
},
"credit": {
"type": "number"
},
"effective_credit": {
"type": "number"
},
"free": {
"type": "boolean"
}
},
"required": [
"from_rank",
"credit",
"effective_credit",
"free"
]
}
},
"required": [
"id",
"tier",
"currency",
"exponent",
"amount",
"discounted",
"charge",
"highlighted",
"title",
"description",
"settings",
"discount",
"kind",
"period",
"mode",
"upgrade"
]
}
]
}
},
"owned": {
"anyOf": [
{
"type": "object",
"properties": {
"tier_rank": {
"type": "number"
},
"source": {
"type": "string",
"x-extensible-enum": [
"subscription",
"grant"
]
},
"tier_expires_at": {
"description": "When the held rank ends.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"expires_at": {
"description": "When every grant has ended.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"tier_rank",
"source",
"tier_expires_at",
"expires_at"
]
},
{
"type": "null"
}
]
},
"poster": {
"anyOf": [
{
"type": "object",
"properties": {
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"id": {
"type": "string"
},
"role": {
"type": "string",
"x-extensible-enum": [
"body",
"staged",
"staged_file",
"prose",
"teaser",
"embed",
"deliverable",
"poster",
"logo",
"prompt",
"stylesheet"
]
},
"delivery": {
"type": "string",
"x-extensible-enum": [
"inline",
"download",
"stream"
]
},
"preview_only": {
"type": "boolean"
},
"position": {
"type": "number"
},
"asset": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ext": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"storage": {
"type": "string",
"x-extensible-enum": [
"r2",
"s3",
"inline"
]
},
"enforcement": {
"type": "string",
"x-extensible-enum": [
"public",
"external",
"signed"
]
},
"locator": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadata": {
"type": "object",
"properties": {
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"width",
"height",
"duration",
"pages"
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
}
},
"required": [
"id",
"name",
"title",
"ext",
"description",
"mime",
"bytes",
"storage",
"enforcement",
"locator",
"metadata",
"status"
]
}
},
"required": [
"access",
"id",
"role",
"delivery",
"preview_only",
"position",
"asset"
]
},
{
"type": "null"
}
]
},
"stats": {
"type": "object",
"properties": {
"sales": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"raised": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"amount": {
"type": "number"
}
},
"required": [
"currency",
"exponent",
"amount"
]
}
},
{
"type": "null"
}
]
}
},
"required": [
"sales",
"raised"
]
},
"rating": {
"type": "object",
"properties": {
"count": {
"type": "number"
},
"average": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"histogram": {
"type": "object",
"properties": {
"1": {
"type": "number"
},
"2": {
"type": "number"
},
"3": {
"type": "number"
},
"4": {
"type": "number"
},
"5": {
"type": "number"
}
},
"required": [
"1",
"2",
"3",
"4",
"5"
]
},
"summary": {
"description": "The generated summary of what reviews say; null while the seller hides it or none is written.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"count",
"average",
"histogram",
"summary"
]
},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"listing": {
"type": "string",
"x-extensible-enum": [
"primary",
"secondary"
]
},
"priority": {
"type": "number"
},
"published_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"discontinued_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"unlisted_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"refund_policy": {
"anyOf": [
{
"type": "string",
"x-extensible-enum": [
"none",
"24h",
"72h",
"7d",
"14d",
"30d"
]
},
{
"type": "null"
}
]
},
"progress_tracking": {
"type": "string",
"x-extensible-enum": [
"manual",
"on_open",
"on_complete",
"disabled"
]
},
"reviews_enabled": {
"type": "boolean"
},
"purchase_note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"calendar": {
"anyOf": [
{
"type": "object",
"properties": {
"calcom": {
"type": "object",
"properties": {
"username": {
"type": "string"
},
"event_slug": {
"type": "string"
}
}
},
"host": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"subtitle": {
"type": "string"
},
"description": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"icon": {
"type": "string"
}
}
}
}
},
{
"type": "null"
}
]
},
"coffee": {
"anyOf": [
{
"type": "object",
"properties": {
"emoji": {
"type": "string"
},
"descriptor": {
"type": "string",
"minLength": 3,
"maxLength": 15,
"pattern": "^\\S(.*\\S)?$"
}
}
},
{
"type": "null"
}
]
},
"fundraising": {
"anyOf": [
{
"type": "object",
"properties": {
"goal": {
"type": "integer",
"minimum": 1
},
"currency": {
"type": "string",
"minLength": 3,
"maxLength": 3
}
},
"required": [
"goal",
"currency"
]
},
{
"type": "null"
}
]
},
"storefront": {
"type": "object",
"properties": {
"sales_counter": {
"type": "boolean"
},
"background_poster": {
"type": "boolean"
},
"require_dark": {
"type": "boolean"
}
},
"required": [
"sales_counter",
"background_poster",
"require_dark"
]
}
},
"required": [
"refund_policy",
"progress_tracking",
"reviews_enabled",
"purchase_note",
"calendar",
"coffee",
"fundraising",
"storefront"
]
}
},
"required": [
"category",
"access",
"offers",
"owned",
"poster",
"stats",
"rating",
"id",
"slug",
"title",
"description",
"listing",
"priority",
"published_at",
"discontinued_at",
"unlisted_at",
"created_at",
"updated_at",
"settings"
]
}
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"items",
"cursor"
]
}GET/v1/stores/{store}/products/{product}
Reads one product with its offers and access. Scope read. Also takes a publishable key.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
product | path | required | An id, or slug:<slug>. |
coupon | query | ||
preview | query |
200
Schema
{
"type": "object",
"properties": {
"files": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"kind": {
"type": "string",
"x-extensible-enum": [
"video",
"audio",
"image",
"pdf",
"file"
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"description": "Seconds.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
},
"url": {
"description": "A public file's lasting URL; null for a private one, or one whose bytes haven't landed.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"attachment_id": {
"description": "The binding a private file opens through; null when the reader can't open it.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"kind",
"mime",
"name",
"bytes",
"width",
"height",
"duration",
"pages",
"status",
"url",
"attachment_id"
]
}
},
"entries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"files": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"kind": {
"type": "string",
"x-extensible-enum": [
"video",
"audio",
"image",
"pdf",
"file"
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"description": "Seconds.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
},
"url": {
"description": "A public file's lasting URL; null for a private one, or one whose bytes haven't landed.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"attachment_id": {
"description": "The binding a private file opens through; null when the reader can't open it.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"kind",
"mime",
"name",
"bytes",
"width",
"height",
"duration",
"pages",
"status",
"url",
"attachment_id"
]
}
},
"completed_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"subtitle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"section": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"preview": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"published_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"ai_generated": {
"type": "boolean"
}
},
"required": [
"ai_generated"
]
}
},
"required": [
"access",
"files",
"completed_at",
"id",
"product_id",
"slug",
"title",
"subtitle",
"section",
"preview",
"position",
"published_at",
"created_at",
"updated_at",
"settings"
]
}
},
"body": {
"anyOf": [
{
"type": "object",
"properties": {
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"id": {
"type": "string"
},
"role": {
"type": "string",
"x-extensible-enum": [
"body",
"staged",
"staged_file",
"prose",
"teaser",
"embed",
"deliverable",
"poster",
"logo",
"prompt",
"stylesheet"
]
},
"delivery": {
"type": "string",
"x-extensible-enum": [
"inline",
"download",
"stream"
]
},
"preview_only": {
"type": "boolean"
},
"position": {
"type": "number"
},
"asset": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ext": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"storage": {
"type": "string",
"x-extensible-enum": [
"r2",
"s3",
"inline"
]
},
"enforcement": {
"type": "string",
"x-extensible-enum": [
"public",
"external",
"signed"
]
},
"locator": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadata": {
"type": "object",
"properties": {
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"width",
"height",
"duration",
"pages"
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
}
},
"required": [
"id",
"name",
"title",
"ext",
"description",
"mime",
"bytes",
"storage",
"enforcement",
"locator",
"metadata",
"status"
]
}
},
"required": [
"access",
"id",
"role",
"delivery",
"preview_only",
"position",
"asset"
]
},
{
"type": "null"
}
]
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"id": {
"type": "string"
},
"role": {
"type": "string",
"x-extensible-enum": [
"body",
"staged",
"staged_file",
"prose",
"teaser",
"embed",
"deliverable",
"poster",
"logo",
"prompt",
"stylesheet"
]
},
"delivery": {
"type": "string",
"x-extensible-enum": [
"inline",
"download",
"stream"
]
},
"preview_only": {
"type": "boolean"
},
"position": {
"type": "number"
},
"asset": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ext": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"storage": {
"type": "string",
"x-extensible-enum": [
"r2",
"s3",
"inline"
]
},
"enforcement": {
"type": "string",
"x-extensible-enum": [
"public",
"external",
"signed"
]
},
"locator": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadata": {
"type": "object",
"properties": {
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"width",
"height",
"duration",
"pages"
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
}
},
"required": [
"id",
"name",
"title",
"ext",
"description",
"mime",
"bytes",
"storage",
"enforcement",
"locator",
"metadata",
"status"
]
}
},
"required": [
"access",
"id",
"role",
"delivery",
"preview_only",
"position",
"asset"
]
}
},
"tiers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"rank": {
"type": "number"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"rank",
"name"
]
}
},
"text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"what_you_get": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"category": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"discountable": {
"type": "boolean"
},
"subscribable": {
"type": "boolean"
},
"reviewable": {
"type": "boolean"
},
"repeatable": {
"description": "Bought again and again: a coffee, a donation, an invoice, a seat, a slot.",
"type": "boolean"
},
"aside_size": {
"type": "string",
"x-extensible-enum": [
"small",
"none",
"large"
]
}
},
"required": [
"id",
"label",
"discountable",
"subscribable",
"reviewable",
"repeatable",
"aside_size"
]
},
{
"type": "null"
}
]
},
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"offers": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"tier": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"rank": {
"type": "number"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"rank",
"name"
]
},
"currency": {
"type": "string"
},
"exponent": {
"description": "Null when central does not know the currency.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"amount": {
"description": "The list amount, or the frozen plan amount on a renewal.",
"type": "number"
},
"discounted": {
"description": "After the discount that applies.",
"type": "number"
},
"charge": {
"description": "What the caller pays now; nothing on an upgrade granted free.",
"type": "number"
},
"highlighted": {
"type": "boolean"
},
"title": {
"description": "Shown in place of the tier's name when set.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"refund_policy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"autorenew": {
"type": "boolean"
},
"renewal_discount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"refund_policy",
"autorenew",
"renewal_discount"
]
},
"discount": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"code"
]
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"const": "one_time"
},
"period": {
"type": "null"
},
"mode": {
"type": "string",
"x-extensible-enum": [
"purchase",
"renewal"
]
},
"upgrade": {
"type": "null"
}
},
"required": [
"id",
"tier",
"currency",
"exponent",
"amount",
"discounted",
"charge",
"highlighted",
"title",
"description",
"settings",
"discount",
"kind",
"period",
"mode",
"upgrade"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"tier": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"rank": {
"type": "number"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"rank",
"name"
]
},
"currency": {
"type": "string"
},
"exponent": {
"description": "Null when central does not know the currency.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"amount": {
"description": "The list amount, or the frozen plan amount on a renewal.",
"type": "number"
},
"discounted": {
"description": "After the discount that applies.",
"type": "number"
},
"charge": {
"description": "What the caller pays now; nothing on an upgrade granted free.",
"type": "number"
},
"highlighted": {
"type": "boolean"
},
"title": {
"description": "Shown in place of the tier's name when set.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"refund_policy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"autorenew": {
"type": "boolean"
},
"renewal_discount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"refund_policy",
"autorenew",
"renewal_discount"
]
},
"discount": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"code"
]
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"const": "one_time"
},
"period": {
"type": "null"
},
"mode": {
"type": "string",
"const": "upgrade"
},
"upgrade": {
"type": "object",
"properties": {
"from_rank": {
"type": "number"
},
"credit": {
"type": "number"
},
"effective_credit": {
"type": "number"
},
"free": {
"type": "boolean"
}
},
"required": [
"from_rank",
"credit",
"effective_credit",
"free"
]
}
},
"required": [
"id",
"tier",
"currency",
"exponent",
"amount",
"discounted",
"charge",
"highlighted",
"title",
"description",
"settings",
"discount",
"kind",
"period",
"mode",
"upgrade"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"tier": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"rank": {
"type": "number"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"rank",
"name"
]
},
"currency": {
"type": "string"
},
"exponent": {
"description": "Null when central does not know the currency.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"amount": {
"description": "The list amount, or the frozen plan amount on a renewal.",
"type": "number"
},
"discounted": {
"description": "After the discount that applies.",
"type": "number"
},
"charge": {
"description": "What the caller pays now; nothing on an upgrade granted free.",
"type": "number"
},
"highlighted": {
"type": "boolean"
},
"title": {
"description": "Shown in place of the tier's name when set.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"refund_policy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"autorenew": {
"type": "boolean"
},
"renewal_discount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"refund_policy",
"autorenew",
"renewal_discount"
]
},
"discount": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"code"
]
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"const": "recurring"
},
"period": {
"type": "object",
"properties": {
"unit": {
"type": "string",
"x-extensible-enum": [
"day",
"week",
"month",
"year"
]
},
"multiplier": {
"type": "number"
}
},
"required": [
"unit",
"multiplier"
]
},
"mode": {
"type": "string",
"x-extensible-enum": [
"purchase",
"renewal"
]
},
"upgrade": {
"type": "null"
}
},
"required": [
"id",
"tier",
"currency",
"exponent",
"amount",
"discounted",
"charge",
"highlighted",
"title",
"description",
"settings",
"discount",
"kind",
"period",
"mode",
"upgrade"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"tier": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"rank": {
"type": "number"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"rank",
"name"
]
},
"currency": {
"type": "string"
},
"exponent": {
"description": "Null when central does not know the currency.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"amount": {
"description": "The list amount, or the frozen plan amount on a renewal.",
"type": "number"
},
"discounted": {
"description": "After the discount that applies.",
"type": "number"
},
"charge": {
"description": "What the caller pays now; nothing on an upgrade granted free.",
"type": "number"
},
"highlighted": {
"type": "boolean"
},
"title": {
"description": "Shown in place of the tier's name when set.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"refund_policy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"autorenew": {
"type": "boolean"
},
"renewal_discount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"refund_policy",
"autorenew",
"renewal_discount"
]
},
"discount": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"code"
]
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"const": "recurring"
},
"period": {
"type": "object",
"properties": {
"unit": {
"type": "string",
"x-extensible-enum": [
"day",
"week",
"month",
"year"
]
},
"multiplier": {
"type": "number"
}
},
"required": [
"unit",
"multiplier"
]
},
"mode": {
"type": "string",
"const": "upgrade"
},
"upgrade": {
"type": "object",
"properties": {
"from_rank": {
"type": "number"
},
"credit": {
"type": "number"
},
"effective_credit": {
"type": "number"
},
"free": {
"type": "boolean"
}
},
"required": [
"from_rank",
"credit",
"effective_credit",
"free"
]
}
},
"required": [
"id",
"tier",
"currency",
"exponent",
"amount",
"discounted",
"charge",
"highlighted",
"title",
"description",
"settings",
"discount",
"kind",
"period",
"mode",
"upgrade"
]
}
]
}
},
"owned": {
"anyOf": [
{
"type": "object",
"properties": {
"tier_rank": {
"type": "number"
},
"source": {
"type": "string",
"x-extensible-enum": [
"subscription",
"grant"
]
},
"tier_expires_at": {
"description": "When the held rank ends.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"expires_at": {
"description": "When every grant has ended.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"tier_rank",
"source",
"tier_expires_at",
"expires_at"
]
},
{
"type": "null"
}
]
},
"poster": {
"anyOf": [
{
"type": "object",
"properties": {
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"id": {
"type": "string"
},
"role": {
"type": "string",
"x-extensible-enum": [
"body",
"staged",
"staged_file",
"prose",
"teaser",
"embed",
"deliverable",
"poster",
"logo",
"prompt",
"stylesheet"
]
},
"delivery": {
"type": "string",
"x-extensible-enum": [
"inline",
"download",
"stream"
]
},
"preview_only": {
"type": "boolean"
},
"position": {
"type": "number"
},
"asset": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ext": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"storage": {
"type": "string",
"x-extensible-enum": [
"r2",
"s3",
"inline"
]
},
"enforcement": {
"type": "string",
"x-extensible-enum": [
"public",
"external",
"signed"
]
},
"locator": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadata": {
"type": "object",
"properties": {
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"width",
"height",
"duration",
"pages"
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
}
},
"required": [
"id",
"name",
"title",
"ext",
"description",
"mime",
"bytes",
"storage",
"enforcement",
"locator",
"metadata",
"status"
]
}
},
"required": [
"access",
"id",
"role",
"delivery",
"preview_only",
"position",
"asset"
]
},
{
"type": "null"
}
]
},
"stats": {
"type": "object",
"properties": {
"sales": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"raised": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"amount": {
"type": "number"
}
},
"required": [
"currency",
"exponent",
"amount"
]
}
},
{
"type": "null"
}
]
}
},
"required": [
"sales",
"raised"
]
},
"rating": {
"type": "object",
"properties": {
"count": {
"type": "number"
},
"average": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"histogram": {
"type": "object",
"properties": {
"1": {
"type": "number"
},
"2": {
"type": "number"
},
"3": {
"type": "number"
},
"4": {
"type": "number"
},
"5": {
"type": "number"
}
},
"required": [
"1",
"2",
"3",
"4",
"5"
]
},
"summary": {
"description": "The generated summary of what reviews say; null while the seller hides it or none is written.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"count",
"average",
"histogram",
"summary"
]
},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"listing": {
"type": "string",
"x-extensible-enum": [
"primary",
"secondary"
]
},
"priority": {
"type": "number"
},
"published_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"discontinued_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"unlisted_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"refund_policy": {
"anyOf": [
{
"type": "string",
"x-extensible-enum": [
"none",
"24h",
"72h",
"7d",
"14d",
"30d"
]
},
{
"type": "null"
}
]
},
"progress_tracking": {
"type": "string",
"x-extensible-enum": [
"manual",
"on_open",
"on_complete",
"disabled"
]
},
"reviews_enabled": {
"type": "boolean"
},
"purchase_note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"calendar": {
"anyOf": [
{
"type": "object",
"properties": {
"calcom": {
"type": "object",
"properties": {
"username": {
"type": "string"
},
"event_slug": {
"type": "string"
}
}
},
"host": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"subtitle": {
"type": "string"
},
"description": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"icon": {
"type": "string"
}
}
}
}
},
{
"type": "null"
}
]
},
"coffee": {
"anyOf": [
{
"type": "object",
"properties": {
"emoji": {
"type": "string"
},
"descriptor": {
"type": "string",
"minLength": 3,
"maxLength": 15,
"pattern": "^\\S(.*\\S)?$"
}
}
},
{
"type": "null"
}
]
},
"fundraising": {
"anyOf": [
{
"type": "object",
"properties": {
"goal": {
"type": "integer",
"minimum": 1
},
"currency": {
"type": "string",
"minLength": 3,
"maxLength": 3
}
},
"required": [
"goal",
"currency"
]
},
{
"type": "null"
}
]
},
"storefront": {
"type": "object",
"properties": {
"sales_counter": {
"type": "boolean"
},
"background_poster": {
"type": "boolean"
},
"require_dark": {
"type": "boolean"
}
},
"required": [
"sales_counter",
"background_poster",
"require_dark"
]
}
},
"required": [
"refund_policy",
"progress_tracking",
"reviews_enabled",
"purchase_note",
"calendar",
"coffee",
"fundraising",
"storefront"
]
}
},
"required": [
"files",
"entries",
"body",
"attachments",
"tiers",
"text",
"what_you_get",
"category",
"access",
"offers",
"owned",
"poster",
"stats",
"rating",
"id",
"slug",
"title",
"description",
"listing",
"priority",
"published_at",
"discontinued_at",
"unlisted_at",
"created_at",
"updated_at",
"settings"
]
}GET/v1/stores/{store}/products/{product}/entries
Pages a product's entries with their access. Scope read. Also takes a publishable key.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
product | path | required | An id, or slug:<slug>. |
filter | query | filter[<field>]=<value> is an equality, filter[<field>][<op>]=<value> names the operator; in repeats the parameter. | |
sort | query | ||
direction | query | ||
limit | query | ||
cursor | query | ||
count | query | ||
search | query |
200
Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"poster": {
"anyOf": [
{
"type": "object",
"properties": {
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"id": {
"type": "string"
},
"role": {
"type": "string",
"x-extensible-enum": [
"body",
"staged",
"staged_file",
"prose",
"teaser",
"embed",
"deliverable",
"poster",
"logo",
"prompt",
"stylesheet"
]
},
"delivery": {
"type": "string",
"x-extensible-enum": [
"inline",
"download",
"stream"
]
},
"preview_only": {
"type": "boolean"
},
"position": {
"type": "number"
},
"asset": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ext": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"storage": {
"type": "string",
"x-extensible-enum": [
"r2",
"s3",
"inline"
]
},
"enforcement": {
"type": "string",
"x-extensible-enum": [
"public",
"external",
"signed"
]
},
"locator": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadata": {
"type": "object",
"properties": {
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"width",
"height",
"duration",
"pages"
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
}
},
"required": [
"id",
"name",
"title",
"ext",
"description",
"mime",
"bytes",
"storage",
"enforcement",
"locator",
"metadata",
"status"
]
}
},
"required": [
"access",
"id",
"role",
"delivery",
"preview_only",
"position",
"asset"
]
},
{
"type": "null"
}
]
},
"files": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"kind": {
"type": "string",
"x-extensible-enum": [
"video",
"audio",
"image",
"pdf",
"file"
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"description": "Seconds.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
},
"url": {
"description": "A public file's lasting URL; null for a private one, or one whose bytes haven't landed.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"attachment_id": {
"description": "The binding a private file opens through; null when the reader can't open it.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"kind",
"mime",
"name",
"bytes",
"width",
"height",
"duration",
"pages",
"status",
"url",
"attachment_id"
]
}
},
"completed_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"subtitle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"section": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"preview": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"published_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"ai_generated": {
"type": "boolean"
}
},
"required": [
"ai_generated"
]
}
},
"required": [
"access",
"poster",
"files",
"completed_at",
"id",
"product_id",
"slug",
"title",
"subtitle",
"section",
"preview",
"position",
"published_at",
"created_at",
"updated_at",
"settings"
]
}
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"items",
"cursor"
]
}GET/v1/stores/{store}/entries/{entry}
Reads one entry with its access. Scope read. Also takes a publishable key.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
entry | path | required |
200
Schema
{
"type": "object",
"properties": {
"files": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"kind": {
"type": "string",
"x-extensible-enum": [
"video",
"audio",
"image",
"pdf",
"file"
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"description": "Seconds.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
},
"url": {
"description": "A public file's lasting URL; null for a private one, or one whose bytes haven't landed.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"attachment_id": {
"description": "The binding a private file opens through; null when the reader can't open it.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"kind",
"mime",
"name",
"bytes",
"width",
"height",
"duration",
"pages",
"status",
"url",
"attachment_id"
]
}
},
"quiz": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"version": {
"type": "number"
},
"settings": {
"type": "object",
"properties": {
"attempts_allowed": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pass_mark": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"show_answers": {
"type": "boolean"
}
},
"required": [
"attempts_allowed",
"pass_mark",
"show_answers"
]
},
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
}
},
"required": [
"id",
"version",
"settings",
"access"
]
},
{
"type": "null"
}
]
},
"body": {
"anyOf": [
{
"type": "object",
"properties": {
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"id": {
"type": "string"
},
"role": {
"type": "string",
"x-extensible-enum": [
"body",
"staged",
"staged_file",
"prose",
"teaser",
"embed",
"deliverable",
"poster",
"logo",
"prompt",
"stylesheet"
]
},
"delivery": {
"type": "string",
"x-extensible-enum": [
"inline",
"download",
"stream"
]
},
"preview_only": {
"type": "boolean"
},
"position": {
"type": "number"
},
"asset": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ext": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"storage": {
"type": "string",
"x-extensible-enum": [
"r2",
"s3",
"inline"
]
},
"enforcement": {
"type": "string",
"x-extensible-enum": [
"public",
"external",
"signed"
]
},
"locator": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadata": {
"type": "object",
"properties": {
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"width",
"height",
"duration",
"pages"
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
}
},
"required": [
"id",
"name",
"title",
"ext",
"description",
"mime",
"bytes",
"storage",
"enforcement",
"locator",
"metadata",
"status"
]
}
},
"required": [
"access",
"id",
"role",
"delivery",
"preview_only",
"position",
"asset"
]
},
{
"type": "null"
}
]
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"id": {
"type": "string"
},
"role": {
"type": "string",
"x-extensible-enum": [
"body",
"staged",
"staged_file",
"prose",
"teaser",
"embed",
"deliverable",
"poster",
"logo",
"prompt",
"stylesheet"
]
},
"delivery": {
"type": "string",
"x-extensible-enum": [
"inline",
"download",
"stream"
]
},
"preview_only": {
"type": "boolean"
},
"position": {
"type": "number"
},
"asset": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ext": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"storage": {
"type": "string",
"x-extensible-enum": [
"r2",
"s3",
"inline"
]
},
"enforcement": {
"type": "string",
"x-extensible-enum": [
"public",
"external",
"signed"
]
},
"locator": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadata": {
"type": "object",
"properties": {
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"width",
"height",
"duration",
"pages"
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
}
},
"required": [
"id",
"name",
"title",
"ext",
"description",
"mime",
"bytes",
"storage",
"enforcement",
"locator",
"metadata",
"status"
]
}
},
"required": [
"access",
"id",
"role",
"delivery",
"preview_only",
"position",
"asset"
]
}
},
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"completed_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"product": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"progress_tracking": {
"type": "string",
"x-extensible-enum": [
"manual",
"on_open",
"on_complete",
"disabled"
]
}
},
"required": [
"id",
"slug",
"title",
"progress_tracking"
]
},
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"subtitle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"section": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"preview": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"published_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"ai_generated": {
"type": "boolean"
}
},
"required": [
"ai_generated"
]
}
},
"required": [
"files",
"quiz",
"body",
"attachments",
"access",
"completed_at",
"product",
"id",
"product_id",
"slug",
"title",
"subtitle",
"section",
"preview",
"position",
"published_at",
"created_at",
"updated_at",
"settings"
]
}GET/v1/stores/{store}/pages
Pages the store's custom pages. Scope read. Also takes a publishable key.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
filter | query | filter[<field>]=<value> is an equality, filter[<field>][<op>]=<value> names the operator; in repeats the parameter. | |
sort | query | ||
direction | query | ||
limit | query | ||
cursor | query | ||
count | query | ||
search | query |
200
Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"menu_position": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"published_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"storefront": {
"type": "object",
"properties": {
"no_index": {
"type": "boolean"
}
},
"required": [
"no_index"
]
}
},
"required": [
"storefront"
]
}
},
"required": [
"access",
"id",
"slug",
"title",
"description",
"menu_position",
"published_at",
"created_at",
"updated_at",
"settings"
]
}
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"items",
"cursor"
]
}GET/v1/stores/{store}/pages/{page}
Reads one custom page. Scope read. Also takes a publishable key.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
page | path | required | An id, or slug:<slug>. |
preview | query |
200
Schema
{
"type": "object",
"properties": {
"files": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"kind": {
"type": "string",
"x-extensible-enum": [
"video",
"audio",
"image",
"pdf",
"file"
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"description": "Seconds.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
},
"url": {
"description": "A public file's lasting URL; null for a private one, or one whose bytes haven't landed.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"attachment_id": {
"description": "The binding a private file opens through; null when the reader can't open it.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"kind",
"mime",
"name",
"bytes",
"width",
"height",
"duration",
"pages",
"status",
"url",
"attachment_id"
]
}
},
"body": {
"anyOf": [
{
"type": "object",
"properties": {
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"id": {
"type": "string"
},
"role": {
"type": "string",
"x-extensible-enum": [
"body",
"staged",
"staged_file",
"prose",
"teaser",
"embed",
"deliverable",
"poster",
"logo",
"prompt",
"stylesheet"
]
},
"delivery": {
"type": "string",
"x-extensible-enum": [
"inline",
"download",
"stream"
]
},
"preview_only": {
"type": "boolean"
},
"position": {
"type": "number"
},
"asset": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ext": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"storage": {
"type": "string",
"x-extensible-enum": [
"r2",
"s3",
"inline"
]
},
"enforcement": {
"type": "string",
"x-extensible-enum": [
"public",
"external",
"signed"
]
},
"locator": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadata": {
"type": "object",
"properties": {
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"width",
"height",
"duration",
"pages"
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
}
},
"required": [
"id",
"name",
"title",
"ext",
"description",
"mime",
"bytes",
"storage",
"enforcement",
"locator",
"metadata",
"status"
]
}
},
"required": [
"access",
"id",
"role",
"delivery",
"preview_only",
"position",
"asset"
]
},
{
"type": "null"
}
]
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"id": {
"type": "string"
},
"role": {
"type": "string",
"x-extensible-enum": [
"body",
"staged",
"staged_file",
"prose",
"teaser",
"embed",
"deliverable",
"poster",
"logo",
"prompt",
"stylesheet"
]
},
"delivery": {
"type": "string",
"x-extensible-enum": [
"inline",
"download",
"stream"
]
},
"preview_only": {
"type": "boolean"
},
"position": {
"type": "number"
},
"asset": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ext": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"storage": {
"type": "string",
"x-extensible-enum": [
"r2",
"s3",
"inline"
]
},
"enforcement": {
"type": "string",
"x-extensible-enum": [
"public",
"external",
"signed"
]
},
"locator": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadata": {
"type": "object",
"properties": {
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"width",
"height",
"duration",
"pages"
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
}
},
"required": [
"id",
"name",
"title",
"ext",
"description",
"mime",
"bytes",
"storage",
"enforcement",
"locator",
"metadata",
"status"
]
}
},
"required": [
"access",
"id",
"role",
"delivery",
"preview_only",
"position",
"asset"
]
}
},
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"menu_position": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"published_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"storefront": {
"type": "object",
"properties": {
"no_index": {
"type": "boolean"
}
},
"required": [
"no_index"
]
}
},
"required": [
"storefront"
]
}
},
"required": [
"files",
"body",
"attachments",
"access",
"id",
"slug",
"title",
"description",
"menu_position",
"published_at",
"created_at",
"updated_at",
"settings"
]
}GET/v1/stores/{store}/body
Reads a product's, entry's or page's body, where the customer may. Scope read. Also takes a publishable key.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
target | query | required | |
preview | query |
200
Schema
{
"anyOf": [
{
"type": "object",
"properties": {
"content": {
"type": "null"
},
"files": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"kind": {
"type": "string",
"x-extensible-enum": [
"video",
"audio",
"image",
"pdf",
"file"
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"description": "Seconds.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
},
"url": {
"description": "A public file's lasting URL; null for a private one, or one whose bytes haven't landed.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"attachment_id": {
"description": "The binding a private file opens through; null when the reader can't open it.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"kind",
"mime",
"name",
"bytes",
"width",
"height",
"duration",
"pages",
"status",
"url",
"attachment_id"
]
}
},
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"id": {
"type": "string"
},
"role": {
"type": "string",
"x-extensible-enum": [
"body",
"staged",
"staged_file",
"prose",
"teaser",
"embed",
"deliverable",
"poster",
"logo",
"prompt",
"stylesheet"
]
},
"delivery": {
"type": "string",
"x-extensible-enum": [
"inline",
"download",
"stream"
]
},
"preview_only": {
"type": "boolean"
},
"position": {
"type": "number"
},
"asset": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ext": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"storage": {
"type": "string",
"x-extensible-enum": [
"r2",
"s3",
"inline"
]
},
"enforcement": {
"type": "string",
"x-extensible-enum": [
"public",
"external",
"signed"
]
},
"locator": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadata": {
"type": "object",
"properties": {
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"width",
"height",
"duration",
"pages"
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
}
},
"required": [
"id",
"name",
"title",
"ext",
"description",
"mime",
"bytes",
"storage",
"enforcement",
"locator",
"metadata",
"status"
]
}
},
"required": [
"content",
"files",
"access",
"id",
"role",
"delivery",
"preview_only",
"position",
"asset"
]
},
{
"type": "object",
"properties": {
"content": {
"type": "string"
},
"files": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"kind": {
"type": "string",
"x-extensible-enum": [
"video",
"audio",
"image",
"pdf",
"file"
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"description": "Seconds.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
},
"url": {
"description": "A public file's lasting URL; null for a private one, or one whose bytes haven't landed.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"attachment_id": {
"description": "The binding a private file opens through; null when the reader can't open it.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"kind",
"mime",
"name",
"bytes",
"width",
"height",
"duration",
"pages",
"status",
"url",
"attachment_id"
]
}
},
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"id": {
"type": "string"
},
"role": {
"type": "string",
"x-extensible-enum": [
"body",
"staged",
"staged_file",
"prose",
"teaser",
"embed",
"deliverable",
"poster",
"logo",
"prompt",
"stylesheet"
]
},
"delivery": {
"type": "string",
"x-extensible-enum": [
"inline",
"download",
"stream"
]
},
"preview_only": {
"type": "boolean"
},
"position": {
"type": "number"
},
"asset": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ext": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"storage": {
"type": "string",
"x-extensible-enum": [
"r2",
"s3",
"inline"
]
},
"enforcement": {
"type": "string",
"x-extensible-enum": [
"public",
"external",
"signed"
]
},
"locator": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadata": {
"type": "object",
"properties": {
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"width",
"height",
"duration",
"pages"
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
}
},
"required": [
"id",
"name",
"title",
"ext",
"description",
"mime",
"bytes",
"storage",
"enforcement",
"locator",
"metadata",
"status"
]
}
},
"required": [
"content",
"files",
"access",
"id",
"role",
"delivery",
"preview_only",
"position",
"asset"
]
},
{
"type": "null"
}
]
}GET/v1/stores/{store}/prompts
Lists the MCP prompts of one product, or of every product the customer holds, with what each asks and whether the customer may run it. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
product | query | An id, or slug:<slug>. | |
runnable | query |
200
Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"arguments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
}
},
"required": [
"name",
"description",
"required"
]
}
},
"product": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"id",
"slug",
"title"
]
},
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
}
},
"required": [
"id",
"name",
"title",
"description",
"arguments",
"product",
"access"
]
}
},
"truncated": {
"type": "boolean"
}
},
"required": [
"items",
"truncated"
]
}GET/v1/stores/{store}/prompts/{prompt}
Reads one prompt by its id or name, its text filled in with the arguments given where the customer may run it. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
prompt | path | required | |
arguments | query |
200
Schema
{
"anyOf": [
{
"type": "object",
"properties": {
"text": {
"type": "null"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"arguments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
}
},
"required": [
"name",
"description",
"required"
]
}
},
"product": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"id",
"slug",
"title"
]
},
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
}
},
"required": [
"text",
"id",
"name",
"title",
"description",
"arguments",
"product",
"access"
]
},
{
"type": "object",
"properties": {
"text": {
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"arguments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
}
},
"required": [
"name",
"description",
"required"
]
}
},
"product": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"id",
"slug",
"title"
]
},
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
}
},
"required": [
"text",
"id",
"name",
"title",
"description",
"arguments",
"product",
"access"
]
}
]
}POST/v1/stores/{store}/attachments/url
Mints a short-lived URL to an attachment's file, where the customer may reach it. Scope read. Also takes a publishable key.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
Body
Schema
{
"type": "object",
"properties": {
"attachment": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"renew": {
"type": "boolean"
},
"intent": {
"description": "For a lesson's slides: shown in the player, or downloaded where the caller may; none serves them as bound.",
"type": "string",
"enum": [
"download",
"view"
]
}
},
"required": [
"attachment"
],
"additionalProperties": false
}200
Schema
{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"expires_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"url",
"expires_at"
]
}GET/v1/stores/{store}/completions
Pages the customer's completed entries. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
filter | query | filter[<field>]=<value> is an equality, filter[<field>][<op>]=<value> names the operator; in repeats the parameter. | |
sort | query | ||
direction | query | ||
limit | query | ||
cursor | query | ||
count | query |
200
Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"entry_id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"completed_at": {
"type": "string"
}
},
"required": [
"entry_id",
"product_id",
"completed_at"
]
}
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"total": {
"type": "number"
},
"facets": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "number"
}
}
}
},
"required": [
"items",
"cursor"
]
}GET/v1/stores/{store}/checkouts
Pages the customer's checkouts. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
filter | query | filter[<field>]=<value> is an equality, filter[<field>][<op>]=<value> names the operator; in repeats the parameter. | |
sort | query | ||
direction | query | ||
limit | query | ||
cursor | query | ||
count | query |
200
Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"status": {
"type": "string",
"x-extensible-enum": [
"paid",
"expired",
"open",
"frozen",
"abandoned"
]
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"category": {
"type": "string"
},
"deleted": {
"type": "boolean"
}
},
"required": [
"id",
"slug",
"title",
"category",
"deleted"
]
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"price_id": {
"type": "string"
},
"quantity": {
"type": "number"
},
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"discount_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"total": {
"type": "number"
},
"mode": {
"type": "string",
"x-extensible-enum": [
"purchase",
"upgrade",
"renewal"
]
}
},
"required": [
"product",
"id",
"product_id",
"price_id",
"quantity",
"amount",
"discount",
"discount_id",
"total",
"mode"
]
}
},
"totals": {
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"total": {
"type": "number"
}
},
"required": [
"amount",
"discount",
"total"
]
},
"id": {
"type": "string"
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"coupon": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"refund_waiver": {
"anyOf": [
{
"type": "object",
"properties": {
"policy": {
"description": "The strictest policy among the lines, the one consented to.",
"type": "string"
},
"accepted_at": {
"type": "string"
}
},
"required": [
"policy",
"accepted_at"
]
},
{
"type": "null"
}
]
},
"expires_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"items",
"totals",
"id",
"currency",
"exponent",
"coupon",
"refund_waiver",
"expires_at",
"created_at",
"updated_at"
]
}
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"items",
"cursor"
]
}GET/v1/stores/{store}/checkouts/{checkout}
Reads one of the customer's checkouts. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
checkout | path | required |
200
Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"x-extensible-enum": [
"paid",
"expired",
"open",
"frozen",
"abandoned"
]
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"category": {
"type": "string"
},
"deleted": {
"type": "boolean"
}
},
"required": [
"id",
"slug",
"title",
"category",
"deleted"
]
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"price_id": {
"type": "string"
},
"quantity": {
"type": "number"
},
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"discount_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"total": {
"type": "number"
},
"mode": {
"type": "string",
"x-extensible-enum": [
"purchase",
"upgrade",
"renewal"
]
}
},
"required": [
"product",
"id",
"product_id",
"price_id",
"quantity",
"amount",
"discount",
"discount_id",
"total",
"mode"
]
}
},
"totals": {
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"total": {
"type": "number"
}
},
"required": [
"amount",
"discount",
"total"
]
},
"id": {
"type": "string"
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"coupon": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"refund_waiver": {
"anyOf": [
{
"type": "object",
"properties": {
"policy": {
"description": "The strictest policy among the lines, the one consented to.",
"type": "string"
},
"accepted_at": {
"type": "string"
}
},
"required": [
"policy",
"accepted_at"
]
},
{
"type": "null"
}
]
},
"expires_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"items",
"totals",
"id",
"currency",
"exponent",
"coupon",
"refund_waiver",
"expires_at",
"created_at",
"updated_at"
]
}GET/v1/stores/{store}/orders
Pages the customer's orders. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
filter | query | filter[<field>]=<value> is an equality, filter[<field>][<op>]=<value> names the operator; in repeats the parameter. | |
sort | query | ||
direction | query | ||
limit | query | ||
cursor | query | ||
count | query |
200
Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"item_count": {
"type": "number"
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"category": {
"type": "string"
},
"deleted": {
"type": "boolean"
}
},
"required": [
"id",
"slug",
"title",
"category",
"deleted"
]
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"order_id": {
"type": "string"
},
"product_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"tier_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"price_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"quantity": {
"type": "number"
},
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"total": {
"type": "number"
},
"descriptor": {
"type": "object",
"properties": {
"product": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"price": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"tier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"coupon": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"product",
"price",
"tier",
"coupon"
]
}
},
"required": [
"product",
"id",
"order_id",
"product_id",
"tier_id",
"price_id",
"position",
"quantity",
"amount",
"discount",
"total",
"descriptor"
]
}
},
"refund_count": {
"type": "number"
},
"refunds": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"order_id": {
"type": "string"
},
"amount": {
"type": "number"
},
"currency": {
"type": "string"
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"occurred_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"order_id",
"amount",
"currency",
"reason",
"occurred_at"
]
}
},
"id": {
"type": "string"
},
"number": {
"type": "number"
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"total": {
"type": "number"
},
"source": {
"type": "string",
"x-extensible-enum": [
"checkout",
"api",
"import",
"manual"
]
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"statements": {
"type": "object",
"properties": {
"coupon": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"method": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"refund_waiver": {
"anyOf": [
{
"type": "object",
"properties": {
"policy": {
"description": "The strictest policy among the lines, the one consented to.",
"type": "string"
},
"accepted_at": {
"type": "string"
}
},
"required": [
"policy",
"accepted_at"
]
},
{
"type": "null"
}
]
}
},
"required": [
"coupon",
"method",
"refund_waiver"
]
},
"occurred_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"item_count",
"items",
"refund_count",
"refunds",
"id",
"number",
"currency",
"exponent",
"amount",
"discount",
"total",
"source",
"note",
"statements",
"occurred_at"
]
}
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"items",
"cursor"
]
}GET/v1/stores/{store}/orders/{order}
Reads one of the customer's orders. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
order | path | required |
200
Schema
{
"type": "object",
"properties": {
"item_count": {
"type": "number"
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"category": {
"type": "string"
},
"deleted": {
"type": "boolean"
}
},
"required": [
"id",
"slug",
"title",
"category",
"deleted"
]
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"order_id": {
"type": "string"
},
"product_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"tier_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"price_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"quantity": {
"type": "number"
},
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"total": {
"type": "number"
},
"descriptor": {
"type": "object",
"properties": {
"product": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"price": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"tier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"coupon": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"product",
"price",
"tier",
"coupon"
]
}
},
"required": [
"product",
"id",
"order_id",
"product_id",
"tier_id",
"price_id",
"position",
"quantity",
"amount",
"discount",
"total",
"descriptor"
]
}
},
"refund_count": {
"type": "number"
},
"refunds": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"order_id": {
"type": "string"
},
"amount": {
"type": "number"
},
"currency": {
"type": "string"
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"occurred_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"order_id",
"amount",
"currency",
"reason",
"occurred_at"
]
}
},
"id": {
"type": "string"
},
"number": {
"type": "number"
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"total": {
"type": "number"
},
"source": {
"type": "string",
"x-extensible-enum": [
"checkout",
"api",
"import",
"manual"
]
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"statements": {
"type": "object",
"properties": {
"coupon": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"method": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"refund_waiver": {
"anyOf": [
{
"type": "object",
"properties": {
"policy": {
"description": "The strictest policy among the lines, the one consented to.",
"type": "string"
},
"accepted_at": {
"type": "string"
}
},
"required": [
"policy",
"accepted_at"
]
},
{
"type": "null"
}
]
}
},
"required": [
"coupon",
"method",
"refund_waiver"
]
},
"occurred_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"item_count",
"items",
"refund_count",
"refunds",
"id",
"number",
"currency",
"exponent",
"amount",
"discount",
"total",
"source",
"note",
"statements",
"occurred_at"
]
}GET/v1/stores/{store}/orders/{order}/items
Pages an order's lines. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
order | path | required | |
filter | query | filter[<field>]=<value> is an equality, filter[<field>][<op>]=<value> names the operator; in repeats the parameter. | |
sort | query | ||
direction | query | ||
limit | query | ||
cursor | query | ||
count | query |
200
Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"category": {
"type": "string"
},
"deleted": {
"type": "boolean"
}
},
"required": [
"id",
"slug",
"title",
"category",
"deleted"
]
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"order_id": {
"type": "string"
},
"product_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"tier_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"price_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"position": {
"type": "number"
},
"quantity": {
"type": "number"
},
"amount": {
"type": "number"
},
"discount": {
"type": "number"
},
"total": {
"type": "number"
},
"descriptor": {
"type": "object",
"properties": {
"product": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"price": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"tier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"coupon": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"product",
"price",
"tier",
"coupon"
]
}
},
"required": [
"product",
"id",
"order_id",
"product_id",
"tier_id",
"price_id",
"position",
"quantity",
"amount",
"discount",
"total",
"descriptor"
]
}
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"items",
"cursor",
"currency",
"exponent"
]
}GET/v1/stores/{store}/orders/{order}/refunds
Pages an order's refunds. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
order | path | required | |
filter | query | filter[<field>]=<value> is an equality, filter[<field>][<op>]=<value> names the operator; in repeats the parameter. | |
sort | query | ||
direction | query | ||
limit | query | ||
cursor | query | ||
count | query |
200
Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"order_id": {
"type": "string"
},
"amount": {
"type": "number"
},
"currency": {
"type": "string"
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"occurred_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"order_id",
"amount",
"currency",
"reason",
"occurred_at"
]
}
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"items",
"cursor",
"currency",
"exponent"
]
}GET/v1/stores/{store}/subscriptions
Pages the customer's subscriptions. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
filter | query | filter[<field>]=<value> is an equality, filter[<field>][<op>]=<value> names the operator; in repeats the parameter. | |
sort | query | ||
direction | query | ||
limit | query | ||
cursor | query | ||
count | query |
200
Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"category": {
"type": "string"
},
"deleted": {
"type": "boolean"
}
},
"required": [
"id",
"slug",
"title",
"category",
"deleted"
]
},
{
"type": "null"
}
]
},
"plan": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"price_id": {
"type": "string"
},
"amount": {
"type": "number"
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"period": {
"type": "object",
"properties": {
"unit": {
"type": "string",
"x-extensible-enum": [
"day",
"week",
"month",
"year"
]
},
"multiplier": {
"type": "number"
}
},
"required": [
"unit",
"multiplier"
]
},
"autorenew": {
"type": "boolean"
}
},
"required": [
"id",
"price_id",
"amount",
"currency",
"exponent",
"period",
"autorenew"
]
},
{
"type": "null"
}
]
},
"current_period": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"starts_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ends_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"failed",
"paid",
"refunded"
]
}
},
"required": [
"id",
"starts_at",
"ends_at",
"status"
]
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"status": {
"type": "string",
"x-extensible-enum": [
"unpaid",
"active",
"past_due",
"paused",
"cancelled",
"ended"
]
},
"cancel_at_period_end": {
"type": "boolean"
},
"cancel_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"billing_managed": {
"type": "boolean"
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ended_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"product",
"plan",
"current_period",
"id",
"product_id",
"status",
"cancel_at_period_end",
"cancel_reason",
"billing_managed",
"created_at",
"ended_at"
]
}
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"items",
"cursor"
]
}GET/v1/stores/{store}/subscriptions/{subscription}
Reads one of the customer's subscriptions. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
subscription | path | required |
200
Schema
{
"type": "object",
"properties": {
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"category": {
"type": "string"
},
"deleted": {
"type": "boolean"
}
},
"required": [
"id",
"slug",
"title",
"category",
"deleted"
]
},
{
"type": "null"
}
]
},
"plan": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"price_id": {
"type": "string"
},
"amount": {
"type": "number"
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"period": {
"type": "object",
"properties": {
"unit": {
"type": "string",
"x-extensible-enum": [
"day",
"week",
"month",
"year"
]
},
"multiplier": {
"type": "number"
}
},
"required": [
"unit",
"multiplier"
]
},
"autorenew": {
"type": "boolean"
}
},
"required": [
"id",
"price_id",
"amount",
"currency",
"exponent",
"period",
"autorenew"
]
},
{
"type": "null"
}
]
},
"current_period": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"starts_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ends_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"failed",
"paid",
"refunded"
]
}
},
"required": [
"id",
"starts_at",
"ends_at",
"status"
]
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"status": {
"type": "string",
"x-extensible-enum": [
"unpaid",
"active",
"past_due",
"paused",
"cancelled",
"ended"
]
},
"cancel_at_period_end": {
"type": "boolean"
},
"cancel_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"billing_managed": {
"type": "boolean"
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ended_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"product",
"plan",
"current_period",
"id",
"product_id",
"status",
"cancel_at_period_end",
"cancel_reason",
"billing_managed",
"created_at",
"ended_at"
]
}GET/v1/stores/{store}/grants
Pages the customer's grants of access. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
filter | query | filter[<field>]=<value> is an equality, filter[<field>][<op>]=<value> names the operator; in repeats the parameter. | |
sort | query | ||
direction | query | ||
limit | query | ||
cursor | query | ||
count | query |
200
Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"tier": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"rank": {
"type": "number"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"rank",
"name"
]
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"tier_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"source_kind": {
"type": "string",
"x-extensible-enum": [
"checkout",
"api",
"import",
"manual",
"subscription",
"payment",
"automation"
]
},
"valid_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ends_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"end_reason": {
"anyOf": [
{
"type": "string",
"x-extensible-enum": [
"import",
"manual",
"lapse",
"refund"
]
},
{
"type": "null"
}
]
}
},
"required": [
"tier",
"id",
"product_id",
"tier_id",
"source_kind",
"valid_from",
"ends_at",
"end_reason"
]
}
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"items",
"cursor"
]
}GET/v1/stores/{store}/entitlements
Pages what the customer may reach. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
filter | query | filter[<field>]=<value> is an equality, filter[<field>][<op>]=<value> names the operator; in repeats the parameter. | |
sort | query | ||
direction | query | ||
limit | query | ||
cursor | query | ||
count | query |
200
Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product_id": {
"type": "string"
},
"tier_rank": {
"type": "number"
},
"tier_expires_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"expires_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"held": {
"type": "boolean"
}
},
"required": [
"product_id",
"tier_rank",
"tier_expires_at",
"expires_at",
"held"
]
}
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"total": {
"type": "number"
},
"facets": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "number"
}
}
}
},
"required": [
"items",
"cursor"
]
}GET/v1/stores/{store}/products/{product}/reviews
Pages a product's reviews. Scope read. Also takes a publishable key.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
product | path | required | An id, or slug:<slug>. |
filter | query | filter[<field>]=<value> is an equality, filter[<field>][<op>]=<value> names the operator; in repeats the parameter. | |
sort | query | ||
direction | query | ||
limit | query | ||
cursor | query | ||
count | query |
200
Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"mine": {
"type": "boolean"
},
"hidden_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"rating": {
"type": "number"
},
"username": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"notes": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"reply": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"replied_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"mine",
"hidden_at",
"id",
"product_id",
"rating",
"username",
"notes",
"reply",
"replied_at",
"created_at",
"updated_at"
]
}
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"total": {
"type": "number"
},
"facets": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "number"
}
}
}
},
"required": [
"items",
"cursor"
]
}GET/v1/stores/{store}/attempts
Pages the customer's quiz attempts. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
filter | query | filter[<field>]=<value> is an equality, filter[<field>][<op>]=<value> names the operator; in repeats the parameter. | |
sort | query | ||
direction | query | ||
limit | query | ||
cursor | query | ||
count | query |
200
Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"quiz_id": {
"type": "string"
},
"entry_id": {
"type": "string"
},
"attempt": {
"type": "number"
},
"status": {
"type": "string",
"x-extensible-enum": [
"failed",
"started",
"submitted",
"passed",
"forfeited"
]
},
"score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"correct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"started_at": {
"type": "string"
},
"finished_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"quiz_id",
"entry_id",
"attempt",
"status",
"score",
"correct",
"started_at",
"finished_at"
]
}
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"total": {
"type": "number"
},
"facets": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "number"
}
}
}
},
"required": [
"items",
"cursor"
]
}GET/v1/stores/{store}/certificates
Pages the certificates issued to the customer. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
filter | query | filter[<field>]=<value> is an equality, filter[<field>][<op>]=<value> names the operator; in repeats the parameter. | |
sort | query | ||
direction | query | ||
limit | query | ||
cursor | query | ||
count | query |
200
Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"certificate": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"quiz_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"headline_copy": {
"type": "string"
},
"title_copy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"awarded_copy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"reason_copy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"score_copy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"out_of_score_copy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"requires_passing": {
"type": "boolean"
},
"shows": {
"type": "array",
"items": {
"type": "string",
"x-extensible-enum": [
"date",
"score",
"qr_code"
]
}
},
"template": {
"type": "string",
"x-extensible-enum": [
"classic",
"framed"
]
},
"accent": {
"anyOf": [
{
"type": "string",
"x-extensible-enum": [
"emerald",
"blue",
"teal",
"indigo",
"purple",
"pink",
"red",
"orange",
"yellow",
"gray"
]
},
{
"type": "null"
}
]
}
},
"required": [
"requires_passing",
"shows",
"template",
"accent"
]
}
},
"required": [
"id",
"product_id",
"quiz_id",
"headline_copy",
"title_copy",
"awarded_copy",
"reason_copy",
"score_copy",
"out_of_score_copy",
"settings"
]
},
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"category": {
"type": "string"
},
"deleted": {
"type": "boolean"
}
},
"required": [
"id",
"slug",
"title",
"category",
"deleted"
]
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"certificate_id": {
"type": "string"
},
"score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"attempt": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"issued_at": {
"type": "string"
}
},
"required": [
"certificate",
"product",
"id",
"certificate_id",
"score",
"attempt",
"issued_at"
]
}
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"items",
"cursor"
]
}GET/v1/stores/{store}/certificates/{certificate}
Reads one certificate issued to the customer. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
certificate | path | required |
200
Schema
{
"type": "object",
"properties": {
"certificate": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"quiz_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"headline_copy": {
"type": "string"
},
"title_copy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"awarded_copy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"reason_copy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"score_copy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"out_of_score_copy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"requires_passing": {
"type": "boolean"
},
"shows": {
"type": "array",
"items": {
"type": "string",
"x-extensible-enum": [
"date",
"score",
"qr_code"
]
}
},
"template": {
"type": "string",
"x-extensible-enum": [
"classic",
"framed"
]
},
"accent": {
"anyOf": [
{
"type": "string",
"x-extensible-enum": [
"emerald",
"blue",
"teal",
"indigo",
"purple",
"pink",
"red",
"orange",
"yellow",
"gray"
]
},
{
"type": "null"
}
]
}
},
"required": [
"requires_passing",
"shows",
"template",
"accent"
]
}
},
"required": [
"id",
"product_id",
"quiz_id",
"headline_copy",
"title_copy",
"awarded_copy",
"reason_copy",
"score_copy",
"out_of_score_copy",
"settings"
]
},
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"category": {
"type": "string"
},
"deleted": {
"type": "boolean"
}
},
"required": [
"id",
"slug",
"title",
"category",
"deleted"
]
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"certificate_id": {
"type": "string"
},
"score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"attempt": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"issued_at": {
"type": "string"
}
},
"required": [
"certificate",
"product",
"id",
"certificate_id",
"score",
"attempt",
"issued_at"
]
}GET/v1/stores/{store}/products/{product}/portfolio
Reads a portfolio product's book, as far as the customer may. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
product | path | required | An id, or slug:<slug>. |
200
Schema
{
"type": "object",
"properties": {
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"product": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"id",
"slug",
"title"
]
},
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"chart_cutoff": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"holdings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"symbol": {
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"symbol_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"shares": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"avg_cost": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"symbol",
"name",
"symbol_type",
"currency",
"shares",
"avg_cost",
"note",
"updated_at"
]
}
},
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"currency": {
"type": "string"
},
"settings": {
"type": "object",
"properties": {
"show_absolute_values": {
"type": "boolean"
},
"locked_chart_delay": {
"type": "string",
"x-extensible-enum": [
"week",
"month",
"none",
"current_quarter"
]
}
},
"required": [
"show_absolute_values",
"locked_chart_delay"
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"exponent",
"product",
"access",
"chart_cutoff",
"holdings",
"id",
"product_id",
"currency",
"settings",
"created_at"
]
}GET/v1/stores/{store}/products/{product}/portfolio_events
Pages a portfolio's events. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
product | path | required | An id, or slug:<slug>. |
filter | query | filter[<field>]=<value> is an equality, filter[<field>][<op>]=<value> names the operator; in repeats the parameter. | |
sort | query | ||
direction | query | ||
limit | query | ||
cursor | query | ||
count | query |
200
Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"symbol": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"type": {
"type": "string"
},
"shares": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"price": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"amount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"effective_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"symbol_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"price_currency": {
"type": "string"
},
"price_exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"allocation": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"allocation_change": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"ratio": {
"anyOf": [
{
"type": "object",
"properties": {
"num": {
"type": "number"
},
"den": {
"type": "number"
}
},
"required": [
"num",
"den"
]
},
{
"type": "null"
}
]
},
"files": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"attachment_id": {
"type": "string"
}
},
"required": [
"id",
"name",
"attachment_id"
]
}
},
{
"type": "null"
}
]
},
"occurred_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"symbol",
"type",
"shares",
"price",
"amount",
"note",
"effective_date",
"symbol_type",
"currency",
"exponent",
"price_currency",
"price_exponent",
"allocation",
"allocation_change",
"ratio",
"files",
"occurred_at"
]
}
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"items",
"cursor"
]
}GET/v1/stores/{store}/products/{product}/portfolio_snapshots
Pages a portfolio's daily snapshots. Scope read.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
product | path | required | An id, or slug:<slug>. |
filter | query | filter[<field>]=<value> is an equality, filter[<field>][<op>]=<value> names the operator; in repeats the parameter. | |
sort | query | ||
direction | query | ||
limit | query | ||
cursor | query | ||
count | query |
200
Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"value": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"cash": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"positions": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"twr": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"benchmark": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"state": {
"type": "string",
"x-extensible-enum": [
"provisional",
"settled"
]
}
},
"required": [
"date",
"currency",
"exponent",
"value",
"cash",
"positions",
"twr",
"benchmark",
"state"
]
}
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"total": {
"type": "number"
},
"facets": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "number"
}
}
}
},
"required": [
"items",
"cursor"
]
}GET/v1/stores/{store}/files/{capability}
Answers the bytes of a private file a capability names, to the bearer or the publishable key that asked for it. Any token the customer granted. Also takes a publishable key.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
capability | path | required | The rest of the URL POST /attachments/url answered, its file name included. |
publishable_key | query | The publishable key the URL was asked for with, already on the URL POST /attachments/url answered, so a bare src can name it: it stands in for the Publishable-Key header, and may be sent beside it only with the same key. A customer's token is never taken in the URL. | |
Range | header | One byte range of a file shown in place, bytes={first}-{last}, bytes={first}- or bytes=-{suffix}; a download is answered whole. | |
If-Range | header | The file's ETag from an earlier answer: the range is answered only while the file is unchanged, else the whole file. |
200
The file's bytes, with its type and disposition.
review
PUT/v1/stores/{store}/products/{product}/review
Writes or updates the customer's review of a product. Scope review:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
product | path | required | An id, or slug:<slug>. |
Body
Schema
{
"type": "object",
"properties": {
"rating": {
"type": "integer",
"minimum": 1,
"maximum": 5
},
"notes": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 4000
},
{
"type": "null"
}
]
},
"username": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 120
},
{
"type": "null"
}
]
}
},
"required": [
"rating"
],
"additionalProperties": false
}200
Schema
{
"type": "object",
"properties": {
"mine": {
"type": "boolean"
},
"hidden_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"rating": {
"type": "number"
},
"username": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"notes": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"reply": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"replied_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"mine",
"hidden_at",
"id",
"product_id",
"rating",
"username",
"notes",
"reply",
"replied_at",
"created_at",
"updated_at"
]
}DELETE/v1/stores/{store}/products/{product}/review
Deletes the customer's review. Scope review:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
product | path | required | An id, or slug:<slug>. |
200
Schema
{
"type": "object",
"properties": {
"deleted": {
"type": "boolean",
"const": true
}
},
"required": [
"deleted"
]
}store
GET/v1/stores/{store}
Reads the store: its name, branding and settings. Any token the customer granted. Also takes a publishable key.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
preview | query |
200
Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"locale": {
"type": "string"
},
"hostname": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"tint": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"tint_dark": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"storefront": {
"type": "object",
"properties": {
"external_site": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"socials": {
"type": "array",
"items": {
"type": "string"
}
},
"theme": {
"type": "string",
"x-extensible-enum": [
"both",
"light",
"dark"
]
},
"no_index": {
"type": "boolean"
},
"powered_by": {
"type": "boolean"
},
"animated_background": {
"type": "boolean"
},
"header_hidden": {
"type": "boolean"
},
"footer_hidden": {
"type": "boolean"
}
},
"required": [
"external_site",
"socials",
"theme",
"no_index",
"powered_by",
"animated_background",
"header_hidden",
"footer_hidden"
]
}
},
"required": [
"storefront"
]
},
"body": {
"anyOf": [
{
"type": "object",
"properties": {
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"id": {
"type": "string"
},
"role": {
"type": "string",
"x-extensible-enum": [
"body",
"staged",
"staged_file",
"prose",
"teaser",
"embed",
"deliverable",
"poster",
"logo",
"prompt",
"stylesheet"
]
},
"delivery": {
"type": "string",
"x-extensible-enum": [
"inline",
"download",
"stream"
]
},
"preview_only": {
"type": "boolean"
},
"position": {
"type": "number"
},
"asset": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ext": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"storage": {
"type": "string",
"x-extensible-enum": [
"r2",
"s3",
"inline"
]
},
"enforcement": {
"type": "string",
"x-extensible-enum": [
"public",
"external",
"signed"
]
},
"locator": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadata": {
"type": "object",
"properties": {
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"width",
"height",
"duration",
"pages"
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
}
},
"required": [
"id",
"name",
"title",
"ext",
"description",
"mime",
"bytes",
"storage",
"enforcement",
"locator",
"metadata",
"status"
]
}
},
"required": [
"access",
"id",
"role",
"delivery",
"preview_only",
"position",
"asset"
]
},
{
"type": "null"
}
]
},
"files": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"kind": {
"type": "string",
"x-extensible-enum": [
"video",
"audio",
"image",
"pdf",
"file"
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"description": "Seconds.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
},
"url": {
"description": "A public file's lasting URL; null for a private one, or one whose bytes haven't landed.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"attachment_id": {
"description": "The binding a private file opens through; null when the reader can't open it.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"kind",
"mime",
"name",
"bytes",
"width",
"height",
"duration",
"pages",
"status",
"url",
"attachment_id"
]
}
},
"stylesheet": {
"anyOf": [
{
"type": "object",
"properties": {
"access": {
"type": "string",
"x-extensible-enum": [
"locked",
"unlocked",
"bypassed"
]
},
"id": {
"type": "string"
},
"role": {
"type": "string",
"x-extensible-enum": [
"body",
"staged",
"staged_file",
"prose",
"teaser",
"embed",
"deliverable",
"poster",
"logo",
"prompt",
"stylesheet"
]
},
"delivery": {
"type": "string",
"x-extensible-enum": [
"inline",
"download",
"stream"
]
},
"preview_only": {
"type": "boolean"
},
"position": {
"type": "number"
},
"asset": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ext": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bytes": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"storage": {
"type": "string",
"x-extensible-enum": [
"r2",
"s3",
"inline"
]
},
"enforcement": {
"type": "string",
"x-extensible-enum": [
"public",
"external",
"signed"
]
},
"locator": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadata": {
"type": "object",
"properties": {
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"pages": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"width",
"height",
"duration",
"pages"
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"ready",
"failed",
"unavailable"
]
}
},
"required": [
"id",
"name",
"title",
"ext",
"description",
"mime",
"bytes",
"storage",
"enforcement",
"locator",
"metadata",
"status"
]
}
},
"required": [
"access",
"id",
"role",
"delivery",
"preview_only",
"position",
"asset"
]
},
{
"type": "null"
}
]
},
"integrations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"kind": {
"type": "string"
},
"script": {
"type": "array",
"items": {
"type": "object",
"properties": {
"src": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"defer": {
"type": "boolean"
},
"async": {
"type": "boolean"
},
"inner_html": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"attributes": {
"description": "Any other string attribute on the tag.",
"type": "object",
"properties": {},
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"src",
"id",
"defer",
"async",
"inner_html",
"attributes"
]
}
}
},
"required": [
"id",
"name",
"kind",
"script"
]
}
},
"categories": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"discountable": {
"type": "boolean"
},
"subscribable": {
"type": "boolean"
},
"reviewable": {
"type": "boolean"
},
"repeatable": {
"description": "Bought again and again: a coffee, a donation, an invoice, a seat, a slot.",
"type": "boolean"
},
"aside_size": {
"type": "string",
"x-extensible-enum": [
"small",
"none",
"large"
]
}
},
"required": [
"id",
"label",
"discountable",
"subscribable",
"reviewable",
"repeatable",
"aside_size"
]
}
},
"currencies": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "number"
}
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"locale",
"hostname",
"description",
"tint",
"tint_dark",
"settings",
"body",
"files",
"stylesheet",
"integrations",
"categories",
"currencies",
"updated_at"
]
}GET/v1/stores/{store}/certificates/{certificate}/verify
Checks that a certificate was issued and is not revoked. Any token the customer granted. Also takes a publishable key.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
certificate | path | required |
200
Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"issued_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"holder": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"headline_copy": {
"type": "string"
},
"title_copy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"category": {
"type": "string"
},
"deleted": {
"type": "boolean"
}
},
"required": [
"id",
"slug",
"title",
"category",
"deleted"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"issued_at",
"score",
"holder",
"headline_copy",
"title_copy",
"product"
]
}subscription
POST/v1/stores/{store}/subscriptions/{subscription}/cancel
Cancels a subscription at the end of its period. Scope subscription:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
subscription | path | required |
Body
Schema
{
"type": "object",
"properties": {
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"additionalProperties": false
}200
Schema
{
"type": "object",
"properties": {
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"category": {
"type": "string"
},
"deleted": {
"type": "boolean"
}
},
"required": [
"id",
"slug",
"title",
"category",
"deleted"
]
},
{
"type": "null"
}
]
},
"plan": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"price_id": {
"type": "string"
},
"amount": {
"type": "number"
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"period": {
"type": "object",
"properties": {
"unit": {
"type": "string",
"x-extensible-enum": [
"day",
"week",
"month",
"year"
]
},
"multiplier": {
"type": "number"
}
},
"required": [
"unit",
"multiplier"
]
},
"autorenew": {
"type": "boolean"
}
},
"required": [
"id",
"price_id",
"amount",
"currency",
"exponent",
"period",
"autorenew"
]
},
{
"type": "null"
}
]
},
"current_period": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"starts_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ends_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"failed",
"paid",
"refunded"
]
}
},
"required": [
"id",
"starts_at",
"ends_at",
"status"
]
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"status": {
"type": "string",
"x-extensible-enum": [
"unpaid",
"active",
"past_due",
"paused",
"cancelled",
"ended"
]
},
"cancel_at_period_end": {
"type": "boolean"
},
"cancel_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"billing_managed": {
"type": "boolean"
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ended_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"product",
"plan",
"current_period",
"id",
"product_id",
"status",
"cancel_at_period_end",
"cancel_reason",
"billing_managed",
"created_at",
"ended_at"
]
}POST/v1/stores/{store}/subscriptions/{subscription}/resume
Withdraws a subscription's scheduled cancellation. Scope subscription:write.
| Parameter | In | ||
|---|---|---|---|
store | path | required | A hostname of the store. |
subscription | path | required |
Body
Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}200
Schema
{
"type": "object",
"properties": {
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"category": {
"type": "string"
},
"deleted": {
"type": "boolean"
}
},
"required": [
"id",
"slug",
"title",
"category",
"deleted"
]
},
{
"type": "null"
}
]
},
"plan": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"price_id": {
"type": "string"
},
"amount": {
"type": "number"
},
"currency": {
"type": "string"
},
"exponent": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"period": {
"type": "object",
"properties": {
"unit": {
"type": "string",
"x-extensible-enum": [
"day",
"week",
"month",
"year"
]
},
"multiplier": {
"type": "number"
}
},
"required": [
"unit",
"multiplier"
]
},
"autorenew": {
"type": "boolean"
}
},
"required": [
"id",
"price_id",
"amount",
"currency",
"exponent",
"period",
"autorenew"
]
},
{
"type": "null"
}
]
},
"current_period": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"starts_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ends_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"x-extensible-enum": [
"pending",
"failed",
"paid",
"refunded"
]
}
},
"required": [
"id",
"starts_at",
"ends_at",
"status"
]
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"product_id": {
"type": "string"
},
"status": {
"type": "string",
"x-extensible-enum": [
"unpaid",
"active",
"past_due",
"paused",
"cancelled",
"ended"
]
},
"cancel_at_period_end": {
"type": "boolean"
},
"cancel_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"billing_managed": {
"type": "boolean"
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ended_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"product",
"plan",
"current_period",
"id",
"product_id",
"status",
"cancel_at_period_end",
"cancel_reason",
"billing_managed",
"created_at",
"ended_at"
]
}