OpenAPI 4.0.0-candidate96 operations⛁ $0.007744 priced subtotal · 96/96 priced🛡 Hardening A · 100% bounded2 auth schemes

Saasuluk API (Cloudflare)

One typed v4 contract — projected into CRUD · client · UI · cost · docs.

Rendered natively from the v4 document via a semantic IR — the requests-shape, ⛁ cost, signature collisions, effective (composed) shape, and the View-as access projection shown as-is, not flattened to a 3.1 view.

Category

List Category

copy pathcopy link
copy
curl -X GET "/category"
const res = await fetch("/category", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/category")
data = res.json()
Responses (by name)
200 200 (application/json) ok
array of
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 100pattern ^[^<>\u0000-\u001f\u007f]*$
slug*string max len 80pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
example copy
[
  {
    "id": 0,
    "name": "string",
    "slug": "string"
  }
]

Create Category

copy pathcopy link
copy
curl -X POST "/category" \
  -H "content-type: application/json" \
  -d '{"id":0,"name":"string","slug":"string"}'
const res = await fetch("/category", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "name": "string",
    "slug": "string"
  })
});
const data = await res.json();
import requests
res = requests.post("/category", headers={"content-type": "application/json"}, json={
  "id": 0,
  "name": "string",
  "slug": "string"
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 100pattern ^[^<>\u0000-\u001f\u007f]*$
slug*string max len 80pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
Responses (by name)
201 201 (application/json) created
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 100pattern ^[^<>\u0000-\u001f\u007f]*$
slug*string max len 80pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
example copy
{
  "id": 0,
  "name": "string",
  "slug": "string"
}

Get Category by id

copy pathcopy link
copy
curl -X GET "/category/:id"
const res = await fetch("/category/:id", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/category/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
200 200 (application/json) ok
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 100pattern ^[^<>\u0000-\u001f\u007f]*$
slug*string max len 80pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
example copy
{
  "id": 0,
  "name": "string",
  "slug": "string"
}
404 404 not found

Update Category

copy pathcopy link
copy
curl -X PATCH "/category/:id" \
  -H "content-type: application/json" \
  -d '{"id":0,"name":"string","slug":"string"}'
const res = await fetch("/category/:id", {
  method: "PATCH",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "name": "string",
    "slug": "string"
  })
});
const data = await res.json();
import requests
res = requests.patch("/category/:id", headers={"content-type": "application/json"}, json={
  "id": 0,
  "name": "string",
  "slug": "string"
})
data = res.json()
body
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 100pattern ^[^<>\u0000-\u001f\u007f]*$
slug*string max len 80pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
Responses (by name)
200 200 (application/json) updated
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 100pattern ^[^<>\u0000-\u001f\u007f]*$
slug*string max len 80pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
example copy
{
  "id": 0,
  "name": "string",
  "slug": "string"
}

Delete Category

copy pathcopy link
copy
curl -X DELETE "/category/:id"
const res = await fetch("/category/:id", {
  method: "DELETE"
});
const data = await res.json();
import requests
res = requests.delete("/category/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
204 204 deleted

Product

List Product

copy pathcopy link
copy
curl -X GET "/product"
const res = await fetch("/product", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/product")
data = res.json()
Responses (by name)
200 200 (application/json) ok
array of
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
slug*string max len 100pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
descriptionanyOf
priceCentsinteger ≥ 0≤ 1000000000
categoryIdanyOf
inventoryinteger ≥ 0≤ 1000000
imageUrlanyOf
statusstring "draft" "published"
stripePriceIdanyOf
example copy
[
  {
    "id": 0,
    "name": "string",
    "slug": "string",
    "description": "string",
    "priceCents": 0,
    "categoryId": 0,
    "inventory": 0,
    "imageUrl": "string",
    "status": "draft",
    "stripePriceId": "string"
  }
]

Create Product

copy pathcopy link
copy
curl -X POST "/product" \
  -H "content-type: application/json" \
  -d '{"id":0,"name":"string","slug":"string","description":"string","priceCents":0,"categoryId":0,"inventory":0,"imageUrl":"string","status":"draft","stripePriceId":"string"}'
const res = await fetch("/product", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "name": "string",
    "slug": "string",
    "description": "string",
    "priceCents": 0,
    "categoryId": 0,
    "inventory": 0,
    "imageUrl": "string",
    "status": "draft",
    "stripePriceId": "string"
  })
});
const data = await res.json();
import requests
res = requests.post("/product", headers={"content-type": "application/json"}, json={
  "id": 0,
  "name": "string",
  "slug": "string",
  "description": "string",
  "priceCents": 0,
  "categoryId": 0,
  "inventory": 0,
  "imageUrl": "string",
  "status": "draft",
  "stripePriceId": "string"
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
slug*string max len 100pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
descriptionanyOf
priceCentsinteger ≥ 0≤ 1000000000
categoryIdanyOf
inventoryinteger ≥ 0≤ 1000000
imageUrlanyOf
statusstring "draft" "published"
stripePriceIdanyOf
Responses (by name)
201 201 (application/json) created
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
slug*string max len 100pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
descriptionanyOf
priceCentsinteger ≥ 0≤ 1000000000
categoryIdanyOf
inventoryinteger ≥ 0≤ 1000000
imageUrlanyOf
statusstring "draft" "published"
stripePriceIdanyOf
example copy
{
  "id": 0,
  "name": "string",
  "slug": "string",
  "description": "string",
  "priceCents": 0,
  "categoryId": 0,
  "inventory": 0,
  "imageUrl": "string",
  "status": "draft",
  "stripePriceId": "string"
}

Get Product by id

copy pathcopy link
copy
curl -X GET "/product/:id"
const res = await fetch("/product/:id", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/product/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
200 200 (application/json) ok
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
slug*string max len 100pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
descriptionanyOf
priceCentsinteger ≥ 0≤ 1000000000
categoryIdanyOf
inventoryinteger ≥ 0≤ 1000000
imageUrlanyOf
statusstring "draft" "published"
stripePriceIdanyOf
example copy
{
  "id": 0,
  "name": "string",
  "slug": "string",
  "description": "string",
  "priceCents": 0,
  "categoryId": 0,
  "inventory": 0,
  "imageUrl": "string",
  "status": "draft",
  "stripePriceId": "string"
}
404 404 not found

Update Product

copy pathcopy link
copy
curl -X PATCH "/product/:id" \
  -H "content-type: application/json" \
  -d '{"id":0,"name":"string","slug":"string","description":"string","priceCents":0,"categoryId":0,"inventory":0,"imageUrl":"string","status":"draft","stripePriceId":"string"}'
const res = await fetch("/product/:id", {
  method: "PATCH",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "name": "string",
    "slug": "string",
    "description": "string",
    "priceCents": 0,
    "categoryId": 0,
    "inventory": 0,
    "imageUrl": "string",
    "status": "draft",
    "stripePriceId": "string"
  })
});
const data = await res.json();
import requests
res = requests.patch("/product/:id", headers={"content-type": "application/json"}, json={
  "id": 0,
  "name": "string",
  "slug": "string",
  "description": "string",
  "priceCents": 0,
  "categoryId": 0,
  "inventory": 0,
  "imageUrl": "string",
  "status": "draft",
  "stripePriceId": "string"
})
data = res.json()
body
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
slug*string max len 100pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
descriptionanyOf
priceCentsinteger ≥ 0≤ 1000000000
categoryIdanyOf
inventoryinteger ≥ 0≤ 1000000
imageUrlanyOf
statusstring "draft" "published"
stripePriceIdanyOf
Responses (by name)
200 200 (application/json) updated
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
slug*string max len 100pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
descriptionanyOf
priceCentsinteger ≥ 0≤ 1000000000
categoryIdanyOf
inventoryinteger ≥ 0≤ 1000000
imageUrlanyOf
statusstring "draft" "published"
stripePriceIdanyOf
example copy
{
  "id": 0,
  "name": "string",
  "slug": "string",
  "description": "string",
  "priceCents": 0,
  "categoryId": 0,
  "inventory": 0,
  "imageUrl": "string",
  "status": "draft",
  "stripePriceId": "string"
}

Delete Product

copy pathcopy link
copy
curl -X DELETE "/product/:id"
const res = await fetch("/product/:id", {
  method: "DELETE"
});
const data = await res.json();
import requests
res = requests.delete("/product/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
204 204 deleted

Variant

List Variant

copy pathcopy link
copy
curl -X GET "/variant"
const res = await fetch("/variant", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/variant")
data = res.json()
Responses (by name)
200 200 (application/json) ok
array of
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
productId*integer ≥ 1≤ 1000000000000
title*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
priceCentsinteger ≥ 0≤ 1000000000
inventoryinteger ≥ 0≤ 1000000
example copy
[
  {
    "id": 0,
    "productId": 0,
    "title": "string",
    "priceCents": 0,
    "inventory": 0
  }
]

Create Variant

copy pathcopy link
copy
curl -X POST "/variant" \
  -H "content-type: application/json" \
  -d '{"id":0,"productId":0,"title":"string","priceCents":0,"inventory":0}'
const res = await fetch("/variant", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "productId": 0,
    "title": "string",
    "priceCents": 0,
    "inventory": 0
  })
});
const data = await res.json();
import requests
res = requests.post("/variant", headers={"content-type": "application/json"}, json={
  "id": 0,
  "productId": 0,
  "title": "string",
  "priceCents": 0,
  "inventory": 0
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
productId*integer ≥ 1≤ 1000000000000
title*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
priceCentsinteger ≥ 0≤ 1000000000
inventoryinteger ≥ 0≤ 1000000
Responses (by name)
201 201 (application/json) created
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
productId*integer ≥ 1≤ 1000000000000
title*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
priceCentsinteger ≥ 0≤ 1000000000
inventoryinteger ≥ 0≤ 1000000
example copy
{
  "id": 0,
  "productId": 0,
  "title": "string",
  "priceCents": 0,
  "inventory": 0
}

Get Variant by id

copy pathcopy link
copy
curl -X GET "/variant/:id"
const res = await fetch("/variant/:id", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/variant/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
200 200 (application/json) ok
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
productId*integer ≥ 1≤ 1000000000000
title*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
priceCentsinteger ≥ 0≤ 1000000000
inventoryinteger ≥ 0≤ 1000000
example copy
{
  "id": 0,
  "productId": 0,
  "title": "string",
  "priceCents": 0,
  "inventory": 0
}
404 404 not found

Update Variant

copy pathcopy link
copy
curl -X PATCH "/variant/:id" \
  -H "content-type: application/json" \
  -d '{"id":0,"productId":0,"title":"string","priceCents":0,"inventory":0}'
const res = await fetch("/variant/:id", {
  method: "PATCH",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "productId": 0,
    "title": "string",
    "priceCents": 0,
    "inventory": 0
  })
});
const data = await res.json();
import requests
res = requests.patch("/variant/:id", headers={"content-type": "application/json"}, json={
  "id": 0,
  "productId": 0,
  "title": "string",
  "priceCents": 0,
  "inventory": 0
})
data = res.json()
body
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
productId*integer ≥ 1≤ 1000000000000
title*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
priceCentsinteger ≥ 0≤ 1000000000
inventoryinteger ≥ 0≤ 1000000
Responses (by name)
200 200 (application/json) updated
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
productId*integer ≥ 1≤ 1000000000000
title*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
priceCentsinteger ≥ 0≤ 1000000000
inventoryinteger ≥ 0≤ 1000000
example copy
{
  "id": 0,
  "productId": 0,
  "title": "string",
  "priceCents": 0,
  "inventory": 0
}

Delete Variant

copy pathcopy link
copy
curl -X DELETE "/variant/:id"
const res = await fetch("/variant/:id", {
  method: "DELETE"
});
const data = await res.json();
import requests
res = requests.delete("/variant/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
204 204 deleted

DiscountCode

List DiscountCode

copy pathcopy link
copy
curl -X GET "/discountCode"
const res = await fetch("/discountCode", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/discountCode")
data = res.json()
Responses (by name)
200 200 (application/json) ok
array of
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
code*string max len 40pattern ^[A-Z0-9][A-Z0-9_-]*$
discountTypestring "percent" "fixed"
discountValueinteger ≥ 0≤ 1000000000
isActiveboolean
currentUsesinteger ≥ 0≤ 1000000000
maxUsesanyOf
expiresAtanyOf
example copy
[
  {
    "id": 0,
    "code": "string",
    "discountType": "percent",
    "discountValue": 0,
    "isActive": false,
    "currentUses": 0,
    "maxUses": 0,
    "expiresAt": 0
  }
]

Create DiscountCode

copy pathcopy link
copy
curl -X POST "/discountCode" \
  -H "content-type: application/json" \
  -d '{"id":0,"code":"string","discountType":"percent","discountValue":0,"isActive":false,"currentUses":0,"maxUses":0,"expiresAt":0}'
const res = await fetch("/discountCode", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "code": "string",
    "discountType": "percent",
    "discountValue": 0,
    "isActive": false,
    "currentUses": 0,
    "maxUses": 0,
    "expiresAt": 0
  })
});
const data = await res.json();
import requests
res = requests.post("/discountCode", headers={"content-type": "application/json"}, json={
  "id": 0,
  "code": "string",
  "discountType": "percent",
  "discountValue": 0,
  "isActive": False,
  "currentUses": 0,
  "maxUses": 0,
  "expiresAt": 0
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
code*string max len 40pattern ^[A-Z0-9][A-Z0-9_-]*$
discountTypestring "percent" "fixed"
discountValueinteger ≥ 0≤ 1000000000
isActiveboolean
currentUsesinteger ≥ 0≤ 1000000000
maxUsesanyOf
expiresAtanyOf
Responses (by name)
201 201 (application/json) created
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
code*string max len 40pattern ^[A-Z0-9][A-Z0-9_-]*$
discountTypestring "percent" "fixed"
discountValueinteger ≥ 0≤ 1000000000
isActiveboolean
currentUsesinteger ≥ 0≤ 1000000000
maxUsesanyOf
expiresAtanyOf
example copy
{
  "id": 0,
  "code": "string",
  "discountType": "percent",
  "discountValue": 0,
  "isActive": false,
  "currentUses": 0,
  "maxUses": 0,
  "expiresAt": 0
}

Get DiscountCode by id

copy pathcopy link
copy
curl -X GET "/discountCode/:id"
const res = await fetch("/discountCode/:id", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/discountCode/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
200 200 (application/json) ok
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
code*string max len 40pattern ^[A-Z0-9][A-Z0-9_-]*$
discountTypestring "percent" "fixed"
discountValueinteger ≥ 0≤ 1000000000
isActiveboolean
currentUsesinteger ≥ 0≤ 1000000000
maxUsesanyOf
expiresAtanyOf
example copy
{
  "id": 0,
  "code": "string",
  "discountType": "percent",
  "discountValue": 0,
  "isActive": false,
  "currentUses": 0,
  "maxUses": 0,
  "expiresAt": 0
}
404 404 not found

Update DiscountCode

copy pathcopy link
copy
curl -X PATCH "/discountCode/:id" \
  -H "content-type: application/json" \
  -d '{"id":0,"code":"string","discountType":"percent","discountValue":0,"isActive":false,"currentUses":0,"maxUses":0,"expiresAt":0}'
const res = await fetch("/discountCode/:id", {
  method: "PATCH",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "code": "string",
    "discountType": "percent",
    "discountValue": 0,
    "isActive": false,
    "currentUses": 0,
    "maxUses": 0,
    "expiresAt": 0
  })
});
const data = await res.json();
import requests
res = requests.patch("/discountCode/:id", headers={"content-type": "application/json"}, json={
  "id": 0,
  "code": "string",
  "discountType": "percent",
  "discountValue": 0,
  "isActive": False,
  "currentUses": 0,
  "maxUses": 0,
  "expiresAt": 0
})
data = res.json()
body
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
code*string max len 40pattern ^[A-Z0-9][A-Z0-9_-]*$
discountTypestring "percent" "fixed"
discountValueinteger ≥ 0≤ 1000000000
isActiveboolean
currentUsesinteger ≥ 0≤ 1000000000
maxUsesanyOf
expiresAtanyOf
Responses (by name)
200 200 (application/json) updated
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
code*string max len 40pattern ^[A-Z0-9][A-Z0-9_-]*$
discountTypestring "percent" "fixed"
discountValueinteger ≥ 0≤ 1000000000
isActiveboolean
currentUsesinteger ≥ 0≤ 1000000000
maxUsesanyOf
expiresAtanyOf
example copy
{
  "id": 0,
  "code": "string",
  "discountType": "percent",
  "discountValue": 0,
  "isActive": false,
  "currentUses": 0,
  "maxUses": 0,
  "expiresAt": 0
}

Delete DiscountCode

copy pathcopy link
copy
curl -X DELETE "/discountCode/:id"
const res = await fetch("/discountCode/:id", {
  method: "DELETE"
});
const data = await res.json();
import requests
res = requests.delete("/discountCode/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
204 204 deleted

Cart

List Cart

copy pathcopy link
copy
curl -X GET "/cart"
const res = await fetch("/cart", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/cart")
data = res.json()
Responses (by name)
200 200 (application/json) ok
array of
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
customerIdanyOf
itemsstring max len 100000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
discountCodeanyOf
statusstring "active" "converted" "abandoned"
example copy
[
  {
    "id": 0,
    "customerId": "string",
    "items": "string",
    "discountCode": "string",
    "status": "active"
  }
]

Create Cart

copy pathcopy link
copy
curl -X POST "/cart" \
  -H "content-type: application/json" \
  -d '{"id":0,"customerId":"string","items":"string","discountCode":"string","status":"active"}'
const res = await fetch("/cart", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "customerId": "string",
    "items": "string",
    "discountCode": "string",
    "status": "active"
  })
});
const data = await res.json();
import requests
res = requests.post("/cart", headers={"content-type": "application/json"}, json={
  "id": 0,
  "customerId": "string",
  "items": "string",
  "discountCode": "string",
  "status": "active"
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
customerIdanyOf
itemsstring max len 100000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
discountCodeanyOf
statusstring "active" "converted" "abandoned"
Responses (by name)
201 201 (application/json) created
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
customerIdanyOf
itemsstring max len 100000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
discountCodeanyOf
statusstring "active" "converted" "abandoned"
example copy
{
  "id": 0,
  "customerId": "string",
  "items": "string",
  "discountCode": "string",
  "status": "active"
}

Get Cart by id

copy pathcopy link
copy
curl -X GET "/cart/:id"
const res = await fetch("/cart/:id", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/cart/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
200 200 (application/json) ok
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
customerIdanyOf
itemsstring max len 100000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
discountCodeanyOf
statusstring "active" "converted" "abandoned"
example copy
{
  "id": 0,
  "customerId": "string",
  "items": "string",
  "discountCode": "string",
  "status": "active"
}
404 404 not found

Update Cart

copy pathcopy link
copy
curl -X PATCH "/cart/:id" \
  -H "content-type: application/json" \
  -d '{"id":0,"customerId":"string","items":"string","discountCode":"string","status":"active"}'
const res = await fetch("/cart/:id", {
  method: "PATCH",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "customerId": "string",
    "items": "string",
    "discountCode": "string",
    "status": "active"
  })
});
const data = await res.json();
import requests
res = requests.patch("/cart/:id", headers={"content-type": "application/json"}, json={
  "id": 0,
  "customerId": "string",
  "items": "string",
  "discountCode": "string",
  "status": "active"
})
data = res.json()
body
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
customerIdanyOf
itemsstring max len 100000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
discountCodeanyOf
statusstring "active" "converted" "abandoned"
Responses (by name)
200 200 (application/json) updated
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
customerIdanyOf
itemsstring max len 100000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
discountCodeanyOf
statusstring "active" "converted" "abandoned"
example copy
{
  "id": 0,
  "customerId": "string",
  "items": "string",
  "discountCode": "string",
  "status": "active"
}

Delete Cart

copy pathcopy link
copy
curl -X DELETE "/cart/:id"
const res = await fetch("/cart/:id", {
  method: "DELETE"
});
const data = await res.json();
import requests
res = requests.delete("/cart/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
204 204 deleted

Order

List Order

copy pathcopy link
copy
curl -X GET "/order"
const res = await fetch("/order", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/order")
data = res.json()
Responses (by name)
200 200 (application/json) ok
array of
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
customerIdanyOf
itemsstring max len 100000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
totalCentsinteger ≥ 0≤ 100000000000
statusstring "pending" "paid" "shipped" "cancelled"
discountCodeanyOf
stripePaymentIntentIdanyOf
createdAtanyOf
example copy
[
  {
    "id": 0,
    "customerId": "string",
    "items": "string",
    "totalCents": 0,
    "status": "pending",
    "discountCode": "string",
    "stripePaymentIntentId": "string",
    "createdAt": 0
  }
]

Create Order

copy pathcopy link
copy
curl -X POST "/order" \
  -H "content-type: application/json" \
  -d '{"id":0,"customerId":"string","items":"string","totalCents":0,"status":"pending","discountCode":"string","stripePaymentIntentId":"string","createdAt":0}'
const res = await fetch("/order", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "customerId": "string",
    "items": "string",
    "totalCents": 0,
    "status": "pending",
    "discountCode": "string",
    "stripePaymentIntentId": "string",
    "createdAt": 0
  })
});
const data = await res.json();
import requests
res = requests.post("/order", headers={"content-type": "application/json"}, json={
  "id": 0,
  "customerId": "string",
  "items": "string",
  "totalCents": 0,
  "status": "pending",
  "discountCode": "string",
  "stripePaymentIntentId": "string",
  "createdAt": 0
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
customerIdanyOf
itemsstring max len 100000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
totalCentsinteger ≥ 0≤ 100000000000
statusstring "pending" "paid" "shipped" "cancelled"
discountCodeanyOf
stripePaymentIntentIdanyOf
createdAtanyOf
Responses (by name)
201 201 (application/json) created
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
customerIdanyOf
itemsstring max len 100000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
totalCentsinteger ≥ 0≤ 100000000000
statusstring "pending" "paid" "shipped" "cancelled"
discountCodeanyOf
stripePaymentIntentIdanyOf
createdAtanyOf
example copy
{
  "id": 0,
  "customerId": "string",
  "items": "string",
  "totalCents": 0,
  "status": "pending",
  "discountCode": "string",
  "stripePaymentIntentId": "string",
  "createdAt": 0
}

Get Order by id

copy pathcopy link
copy
curl -X GET "/order/:id"
const res = await fetch("/order/:id", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/order/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
200 200 (application/json) ok
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
customerIdanyOf
itemsstring max len 100000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
totalCentsinteger ≥ 0≤ 100000000000
statusstring "pending" "paid" "shipped" "cancelled"
discountCodeanyOf
stripePaymentIntentIdanyOf
createdAtanyOf
example copy
{
  "id": 0,
  "customerId": "string",
  "items": "string",
  "totalCents": 0,
  "status": "pending",
  "discountCode": "string",
  "stripePaymentIntentId": "string",
  "createdAt": 0
}
404 404 not found

Update Order

copy pathcopy link
copy
curl -X PATCH "/order/:id" \
  -H "content-type: application/json" \
  -d '{"id":0,"customerId":"string","items":"string","totalCents":0,"status":"pending","discountCode":"string","stripePaymentIntentId":"string","createdAt":0}'
const res = await fetch("/order/:id", {
  method: "PATCH",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "customerId": "string",
    "items": "string",
    "totalCents": 0,
    "status": "pending",
    "discountCode": "string",
    "stripePaymentIntentId": "string",
    "createdAt": 0
  })
});
const data = await res.json();
import requests
res = requests.patch("/order/:id", headers={"content-type": "application/json"}, json={
  "id": 0,
  "customerId": "string",
  "items": "string",
  "totalCents": 0,
  "status": "pending",
  "discountCode": "string",
  "stripePaymentIntentId": "string",
  "createdAt": 0
})
data = res.json()
body
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
customerIdanyOf
itemsstring max len 100000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
totalCentsinteger ≥ 0≤ 100000000000
statusstring "pending" "paid" "shipped" "cancelled"
discountCodeanyOf
stripePaymentIntentIdanyOf
createdAtanyOf
Responses (by name)
200 200 (application/json) updated
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
customerIdanyOf
itemsstring max len 100000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
totalCentsinteger ≥ 0≤ 100000000000
statusstring "pending" "paid" "shipped" "cancelled"
discountCodeanyOf
stripePaymentIntentIdanyOf
createdAtanyOf
example copy
{
  "id": 0,
  "customerId": "string",
  "items": "string",
  "totalCents": 0,
  "status": "pending",
  "discountCode": "string",
  "stripePaymentIntentId": "string",
  "createdAt": 0
}

Delete Order

copy pathcopy link
copy
curl -X DELETE "/order/:id"
const res = await fetch("/order/:id", {
  method: "DELETE"
});
const data = await res.json();
import requests
res = requests.delete("/order/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
204 204 deleted

Review

List Review

copy pathcopy link
copy
curl -X GET "/review"
const res = await fetch("/review", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/review")
data = res.json()
Responses (by name)
200 200 (application/json) ok
array of
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
productId*integer ≥ 1≤ 1000000000000
customerIdanyOf
ratinginteger ≥ 1≤ 5
title*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
bodyanyOf
statusstring "pending" "published"
helpfulCountinteger ≥ 0≤ 1000000000
createdAtanyOf
example copy
[
  {
    "id": 0,
    "productId": 0,
    "customerId": "string",
    "rating": 0,
    "title": "string",
    "body": "string",
    "status": "pending",
    "helpfulCount": 0,
    "createdAt": 0
  }
]

Create Review

copy pathcopy link
copy
curl -X POST "/review" \
  -H "content-type: application/json" \
  -d '{"id":0,"productId":0,"customerId":"string","rating":0,"title":"string","body":"string","status":"pending","helpfulCount":0,"createdAt":0}'
const res = await fetch("/review", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "productId": 0,
    "customerId": "string",
    "rating": 0,
    "title": "string",
    "body": "string",
    "status": "pending",
    "helpfulCount": 0,
    "createdAt": 0
  })
});
const data = await res.json();
import requests
res = requests.post("/review", headers={"content-type": "application/json"}, json={
  "id": 0,
  "productId": 0,
  "customerId": "string",
  "rating": 0,
  "title": "string",
  "body": "string",
  "status": "pending",
  "helpfulCount": 0,
  "createdAt": 0
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
productId*integer ≥ 1≤ 1000000000000
customerIdanyOf
ratinginteger ≥ 1≤ 5
title*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
bodyanyOf
statusstring "pending" "published"
helpfulCountinteger ≥ 0≤ 1000000000
createdAtanyOf
Responses (by name)
201 201 (application/json) created
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
productId*integer ≥ 1≤ 1000000000000
customerIdanyOf
ratinginteger ≥ 1≤ 5
title*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
bodyanyOf
statusstring "pending" "published"
helpfulCountinteger ≥ 0≤ 1000000000
createdAtanyOf
example copy
{
  "id": 0,
  "productId": 0,
  "customerId": "string",
  "rating": 0,
  "title": "string",
  "body": "string",
  "status": "pending",
  "helpfulCount": 0,
  "createdAt": 0
}

Get Review by id

copy pathcopy link
copy
curl -X GET "/review/:id"
const res = await fetch("/review/:id", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/review/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
200 200 (application/json) ok
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
productId*integer ≥ 1≤ 1000000000000
customerIdanyOf
ratinginteger ≥ 1≤ 5
title*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
bodyanyOf
statusstring "pending" "published"
helpfulCountinteger ≥ 0≤ 1000000000
createdAtanyOf
example copy
{
  "id": 0,
  "productId": 0,
  "customerId": "string",
  "rating": 0,
  "title": "string",
  "body": "string",
  "status": "pending",
  "helpfulCount": 0,
  "createdAt": 0
}
404 404 not found

Update Review

copy pathcopy link
copy
curl -X PATCH "/review/:id" \
  -H "content-type: application/json" \
  -d '{"id":0,"productId":0,"customerId":"string","rating":0,"title":"string","body":"string","status":"pending","helpfulCount":0,"createdAt":0}'
const res = await fetch("/review/:id", {
  method: "PATCH",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "productId": 0,
    "customerId": "string",
    "rating": 0,
    "title": "string",
    "body": "string",
    "status": "pending",
    "helpfulCount": 0,
    "createdAt": 0
  })
});
const data = await res.json();
import requests
res = requests.patch("/review/:id", headers={"content-type": "application/json"}, json={
  "id": 0,
  "productId": 0,
  "customerId": "string",
  "rating": 0,
  "title": "string",
  "body": "string",
  "status": "pending",
  "helpfulCount": 0,
  "createdAt": 0
})
data = res.json()
body
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
productId*integer ≥ 1≤ 1000000000000
customerIdanyOf
ratinginteger ≥ 1≤ 5
title*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
bodyanyOf
statusstring "pending" "published"
helpfulCountinteger ≥ 0≤ 1000000000
createdAtanyOf
Responses (by name)
200 200 (application/json) updated
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
productId*integer ≥ 1≤ 1000000000000
customerIdanyOf
ratinginteger ≥ 1≤ 5
title*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
bodyanyOf
statusstring "pending" "published"
helpfulCountinteger ≥ 0≤ 1000000000
createdAtanyOf
example copy
{
  "id": 0,
  "productId": 0,
  "customerId": "string",
  "rating": 0,
  "title": "string",
  "body": "string",
  "status": "pending",
  "helpfulCount": 0,
  "createdAt": 0
}

Delete Review

copy pathcopy link
copy
curl -X DELETE "/review/:id"
const res = await fetch("/review/:id", {
  method: "DELETE"
});
const data = await res.json();
import requests
res = requests.delete("/review/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
204 204 deleted

WishlistItem

List WishlistItem

copy pathcopy link
copy
curl -X GET "/wishlistItem"
const res = await fetch("/wishlistItem", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/wishlistItem")
data = res.json()
Responses (by name)
200 200 (application/json) ok
array of
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
customerIdanyOf
productId*integer ≥ 1≤ 1000000000000
variantIdanyOf
addedAtanyOf
example copy
[
  {
    "id": 0,
    "customerId": "string",
    "productId": 0,
    "variantId": 0,
    "addedAt": 0
  }
]

Create WishlistItem

copy pathcopy link
copy
curl -X POST "/wishlistItem" \
  -H "content-type: application/json" \
  -d '{"id":0,"customerId":"string","productId":0,"variantId":0,"addedAt":0}'
const res = await fetch("/wishlistItem", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "customerId": "string",
    "productId": 0,
    "variantId": 0,
    "addedAt": 0
  })
});
const data = await res.json();
import requests
res = requests.post("/wishlistItem", headers={"content-type": "application/json"}, json={
  "id": 0,
  "customerId": "string",
  "productId": 0,
  "variantId": 0,
  "addedAt": 0
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
customerIdanyOf
productId*integer ≥ 1≤ 1000000000000
variantIdanyOf
addedAtanyOf
Responses (by name)
201 201 (application/json) created
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
customerIdanyOf
productId*integer ≥ 1≤ 1000000000000
variantIdanyOf
addedAtanyOf
example copy
{
  "id": 0,
  "customerId": "string",
  "productId": 0,
  "variantId": 0,
  "addedAt": 0
}

Get WishlistItem by id

copy pathcopy link
copy
curl -X GET "/wishlistItem/:id"
const res = await fetch("/wishlistItem/:id", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/wishlistItem/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
200 200 (application/json) ok
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
customerIdanyOf
productId*integer ≥ 1≤ 1000000000000
variantIdanyOf
addedAtanyOf
example copy
{
  "id": 0,
  "customerId": "string",
  "productId": 0,
  "variantId": 0,
  "addedAt": 0
}
404 404 not found

Update WishlistItem

copy pathcopy link
copy
curl -X PATCH "/wishlistItem/:id" \
  -H "content-type: application/json" \
  -d '{"id":0,"customerId":"string","productId":0,"variantId":0,"addedAt":0}'
const res = await fetch("/wishlistItem/:id", {
  method: "PATCH",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "customerId": "string",
    "productId": 0,
    "variantId": 0,
    "addedAt": 0
  })
});
const data = await res.json();
import requests
res = requests.patch("/wishlistItem/:id", headers={"content-type": "application/json"}, json={
  "id": 0,
  "customerId": "string",
  "productId": 0,
  "variantId": 0,
  "addedAt": 0
})
data = res.json()
body
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
customerIdanyOf
productId*integer ≥ 1≤ 1000000000000
variantIdanyOf
addedAtanyOf
Responses (by name)
200 200 (application/json) updated
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
customerIdanyOf
productId*integer ≥ 1≤ 1000000000000
variantIdanyOf
addedAtanyOf
example copy
{
  "id": 0,
  "customerId": "string",
  "productId": 0,
  "variantId": 0,
  "addedAt": 0
}

Delete WishlistItem

copy pathcopy link
copy
curl -X DELETE "/wishlistItem/:id"
const res = await fetch("/wishlistItem/:id", {
  method: "DELETE"
});
const data = await res.json();
import requests
res = requests.delete("/wishlistItem/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
204 204 deleted

Post

List Post

copy pathcopy link
copy
curl -X GET "/post"
const res = await fetch("/post", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/post")
data = res.json()
Responses (by name)
200 200 (application/json) ok
array of
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
title*string max len 200pattern ^[^<>\u0000-\u001f\u007f]*$
slug*string max len 120pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
excerptanyOf
bodyanyOf
statusstring "draft" "published"
publishedAtanyOf
authorIdanyOf
coverImageUrlanyOf
example copy
[
  {
    "id": 0,
    "title": "string",
    "slug": "string",
    "excerpt": "string",
    "body": "string",
    "status": "draft",
    "publishedAt": 0,
    "authorId": "string",
    "coverImageUrl": "string"
  }
]

Create Post

copy pathcopy link
copy
curl -X POST "/post" \
  -H "content-type: application/json" \
  -d '{"id":0,"title":"string","slug":"string","excerpt":"string","body":"string","status":"draft","publishedAt":0,"authorId":"string","coverImageUrl":"string"}'
const res = await fetch("/post", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "title": "string",
    "slug": "string",
    "excerpt": "string",
    "body": "string",
    "status": "draft",
    "publishedAt": 0,
    "authorId": "string",
    "coverImageUrl": "string"
  })
});
const data = await res.json();
import requests
res = requests.post("/post", headers={"content-type": "application/json"}, json={
  "id": 0,
  "title": "string",
  "slug": "string",
  "excerpt": "string",
  "body": "string",
  "status": "draft",
  "publishedAt": 0,
  "authorId": "string",
  "coverImageUrl": "string"
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
title*string max len 200pattern ^[^<>\u0000-\u001f\u007f]*$
slug*string max len 120pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
excerptanyOf
bodyanyOf
statusstring "draft" "published"
publishedAtanyOf
authorIdanyOf
coverImageUrlanyOf
Responses (by name)
201 201 (application/json) created
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
title*string max len 200pattern ^[^<>\u0000-\u001f\u007f]*$
slug*string max len 120pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
excerptanyOf
bodyanyOf
statusstring "draft" "published"
publishedAtanyOf
authorIdanyOf
coverImageUrlanyOf
example copy
{
  "id": 0,
  "title": "string",
  "slug": "string",
  "excerpt": "string",
  "body": "string",
  "status": "draft",
  "publishedAt": 0,
  "authorId": "string",
  "coverImageUrl": "string"
}

Get Post by id

copy pathcopy link
copy
curl -X GET "/post/:id"
const res = await fetch("/post/:id", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/post/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
200 200 (application/json) ok
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
title*string max len 200pattern ^[^<>\u0000-\u001f\u007f]*$
slug*string max len 120pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
excerptanyOf
bodyanyOf
statusstring "draft" "published"
publishedAtanyOf
authorIdanyOf
coverImageUrlanyOf
example copy
{
  "id": 0,
  "title": "string",
  "slug": "string",
  "excerpt": "string",
  "body": "string",
  "status": "draft",
  "publishedAt": 0,
  "authorId": "string",
  "coverImageUrl": "string"
}
404 404 not found

Update Post

copy pathcopy link
copy
curl -X PATCH "/post/:id" \
  -H "content-type: application/json" \
  -d '{"id":0,"title":"string","slug":"string","excerpt":"string","body":"string","status":"draft","publishedAt":0,"authorId":"string","coverImageUrl":"string"}'
const res = await fetch("/post/:id", {
  method: "PATCH",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "title": "string",
    "slug": "string",
    "excerpt": "string",
    "body": "string",
    "status": "draft",
    "publishedAt": 0,
    "authorId": "string",
    "coverImageUrl": "string"
  })
});
const data = await res.json();
import requests
res = requests.patch("/post/:id", headers={"content-type": "application/json"}, json={
  "id": 0,
  "title": "string",
  "slug": "string",
  "excerpt": "string",
  "body": "string",
  "status": "draft",
  "publishedAt": 0,
  "authorId": "string",
  "coverImageUrl": "string"
})
data = res.json()
body
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
title*string max len 200pattern ^[^<>\u0000-\u001f\u007f]*$
slug*string max len 120pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
excerptanyOf
bodyanyOf
statusstring "draft" "published"
publishedAtanyOf
authorIdanyOf
coverImageUrlanyOf
Responses (by name)
200 200 (application/json) updated
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
title*string max len 200pattern ^[^<>\u0000-\u001f\u007f]*$
slug*string max len 120pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$
excerptanyOf
bodyanyOf
statusstring "draft" "published"
publishedAtanyOf
authorIdanyOf
coverImageUrlanyOf
example copy
{
  "id": 0,
  "title": "string",
  "slug": "string",
  "excerpt": "string",
  "body": "string",
  "status": "draft",
  "publishedAt": 0,
  "authorId": "string",
  "coverImageUrl": "string"
}

Delete Post

copy pathcopy link
copy
curl -X DELETE "/post/:id"
const res = await fetch("/post/:id", {
  method: "DELETE"
});
const data = await res.json();
import requests
res = requests.delete("/post/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
204 204 deleted

Faq

List Faq

copy pathcopy link
copy
curl -X GET "/faq"
const res = await fetch("/faq", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/faq")
data = res.json()
Responses (by name)
200 200 (application/json) ok
array of
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
question*string max len 300pattern ^[^<>\u0000-\u001f\u007f]*$
answer*string max len 2000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
sortOrderinteger ≥ 0≤ 100000
isActiveboolean
example copy
[
  {
    "id": 0,
    "question": "string",
    "answer": "string",
    "sortOrder": 0,
    "isActive": false
  }
]

Create Faq

copy pathcopy link
copy
curl -X POST "/faq" \
  -H "content-type: application/json" \
  -d '{"id":0,"question":"string","answer":"string","sortOrder":0,"isActive":false}'
const res = await fetch("/faq", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "question": "string",
    "answer": "string",
    "sortOrder": 0,
    "isActive": false
  })
});
const data = await res.json();
import requests
res = requests.post("/faq", headers={"content-type": "application/json"}, json={
  "id": 0,
  "question": "string",
  "answer": "string",
  "sortOrder": 0,
  "isActive": False
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
question*string max len 300pattern ^[^<>\u0000-\u001f\u007f]*$
answer*string max len 2000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
sortOrderinteger ≥ 0≤ 100000
isActiveboolean
Responses (by name)
201 201 (application/json) created
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
question*string max len 300pattern ^[^<>\u0000-\u001f\u007f]*$
answer*string max len 2000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
sortOrderinteger ≥ 0≤ 100000
isActiveboolean
example copy
{
  "id": 0,
  "question": "string",
  "answer": "string",
  "sortOrder": 0,
  "isActive": false
}

Get Faq by id

copy pathcopy link
copy
curl -X GET "/faq/:id"
const res = await fetch("/faq/:id", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/faq/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
200 200 (application/json) ok
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
question*string max len 300pattern ^[^<>\u0000-\u001f\u007f]*$
answer*string max len 2000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
sortOrderinteger ≥ 0≤ 100000
isActiveboolean
example copy
{
  "id": 0,
  "question": "string",
  "answer": "string",
  "sortOrder": 0,
  "isActive": false
}
404 404 not found

Update Faq

copy pathcopy link
copy
curl -X PATCH "/faq/:id" \
  -H "content-type: application/json" \
  -d '{"id":0,"question":"string","answer":"string","sortOrder":0,"isActive":false}'
const res = await fetch("/faq/:id", {
  method: "PATCH",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "question": "string",
    "answer": "string",
    "sortOrder": 0,
    "isActive": false
  })
});
const data = await res.json();
import requests
res = requests.patch("/faq/:id", headers={"content-type": "application/json"}, json={
  "id": 0,
  "question": "string",
  "answer": "string",
  "sortOrder": 0,
  "isActive": False
})
data = res.json()
body
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
question*string max len 300pattern ^[^<>\u0000-\u001f\u007f]*$
answer*string max len 2000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
sortOrderinteger ≥ 0≤ 100000
isActiveboolean
Responses (by name)
200 200 (application/json) updated
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
question*string max len 300pattern ^[^<>\u0000-\u001f\u007f]*$
answer*string max len 2000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
sortOrderinteger ≥ 0≤ 100000
isActiveboolean
example copy
{
  "id": 0,
  "question": "string",
  "answer": "string",
  "sortOrder": 0,
  "isActive": false
}

Delete Faq

copy pathcopy link
copy
curl -X DELETE "/faq/:id"
const res = await fetch("/faq/:id", {
  method: "DELETE"
});
const data = await res.json();
import requests
res = requests.delete("/faq/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
204 204 deleted

NewsletterSubscriber

List NewsletterSubscriber

copy pathcopy link
copy
curl -X GET "/newsletterSubscriber"
const res = await fetch("/newsletterSubscriber", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/newsletterSubscriber")
data = res.json()
Responses (by name)
200 200 (application/json) ok
array of
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
email*string<email> pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
subscribedAtanyOf
example copy
[
  {
    "id": 0,
    "email": "user@example.com",
    "subscribedAt": 0
  }
]

Create NewsletterSubscriber

copy pathcopy link
copy
curl -X POST "/newsletterSubscriber" \
  -H "content-type: application/json" \
  -d '{"id":0,"email":"user@example.com","subscribedAt":0}'
const res = await fetch("/newsletterSubscriber", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "email": "user@example.com",
    "subscribedAt": 0
  })
});
const data = await res.json();
import requests
res = requests.post("/newsletterSubscriber", headers={"content-type": "application/json"}, json={
  "id": 0,
  "email": "user@example.com",
  "subscribedAt": 0
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
email*string<email> pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
subscribedAtanyOf
Responses (by name)
201 201 (application/json) created
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
email*string<email> pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
subscribedAtanyOf
example copy
{
  "id": 0,
  "email": "user@example.com",
  "subscribedAt": 0
}

Get NewsletterSubscriber by id

copy pathcopy link
copy
curl -X GET "/newsletterSubscriber/:id"
const res = await fetch("/newsletterSubscriber/:id", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/newsletterSubscriber/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
200 200 (application/json) ok
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
email*string<email> pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
subscribedAtanyOf
example copy
{
  "id": 0,
  "email": "user@example.com",
  "subscribedAt": 0
}
404 404 not found

Update NewsletterSubscriber

copy pathcopy link
copy
curl -X PATCH "/newsletterSubscriber/:id" \
  -H "content-type: application/json" \
  -d '{"id":0,"email":"user@example.com","subscribedAt":0}'
const res = await fetch("/newsletterSubscriber/:id", {
  method: "PATCH",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "email": "user@example.com",
    "subscribedAt": 0
  })
});
const data = await res.json();
import requests
res = requests.patch("/newsletterSubscriber/:id", headers={"content-type": "application/json"}, json={
  "id": 0,
  "email": "user@example.com",
  "subscribedAt": 0
})
data = res.json()
body
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
email*string<email> pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
subscribedAtanyOf
Responses (by name)
200 200 (application/json) updated
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
email*string<email> pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
subscribedAtanyOf
example copy
{
  "id": 0,
  "email": "user@example.com",
  "subscribedAt": 0
}

Delete NewsletterSubscriber

copy pathcopy link
copy
curl -X DELETE "/newsletterSubscriber/:id"
const res = await fetch("/newsletterSubscriber/:id", {
  method: "DELETE"
});
const data = await res.json();
import requests
res = requests.delete("/newsletterSubscriber/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
204 204 deleted

ContactSubmission

List ContactSubmission

copy pathcopy link
copy
curl -X GET "/contactSubmission"
const res = await fetch("/contactSubmission", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/contactSubmission")
data = res.json()
Responses (by name)
200 200 (application/json) ok
array of
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 120pattern ^[^<>\u0000-\u001f\u007f]*$
email*string<email> pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
subject*string max len 200pattern ^[^<>\u0000-\u001f\u007f]*$
message*string max len 5000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
createdAtanyOf
example copy
[
  {
    "id": 0,
    "name": "string",
    "email": "user@example.com",
    "subject": "string",
    "message": "string",
    "createdAt": 0
  }
]

Create ContactSubmission

copy pathcopy link
copy
curl -X POST "/contactSubmission" \
  -H "content-type: application/json" \
  -d '{"id":0,"name":"string","email":"user@example.com","subject":"string","message":"string","createdAt":0}'
const res = await fetch("/contactSubmission", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "name": "string",
    "email": "user@example.com",
    "subject": "string",
    "message": "string",
    "createdAt": 0
  })
});
const data = await res.json();
import requests
res = requests.post("/contactSubmission", headers={"content-type": "application/json"}, json={
  "id": 0,
  "name": "string",
  "email": "user@example.com",
  "subject": "string",
  "message": "string",
  "createdAt": 0
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 120pattern ^[^<>\u0000-\u001f\u007f]*$
email*string<email> pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
subject*string max len 200pattern ^[^<>\u0000-\u001f\u007f]*$
message*string max len 5000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
createdAtanyOf
Responses (by name)
201 201 (application/json) created
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 120pattern ^[^<>\u0000-\u001f\u007f]*$
email*string<email> pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
subject*string max len 200pattern ^[^<>\u0000-\u001f\u007f]*$
message*string max len 5000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
createdAtanyOf
example copy
{
  "id": 0,
  "name": "string",
  "email": "user@example.com",
  "subject": "string",
  "message": "string",
  "createdAt": 0
}

Get ContactSubmission by id

copy pathcopy link
copy
curl -X GET "/contactSubmission/:id"
const res = await fetch("/contactSubmission/:id", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/contactSubmission/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
200 200 (application/json) ok
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 120pattern ^[^<>\u0000-\u001f\u007f]*$
email*string<email> pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
subject*string max len 200pattern ^[^<>\u0000-\u001f\u007f]*$
message*string max len 5000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
createdAtanyOf
example copy
{
  "id": 0,
  "name": "string",
  "email": "user@example.com",
  "subject": "string",
  "message": "string",
  "createdAt": 0
}
404 404 not found

Update ContactSubmission

copy pathcopy link
copy
curl -X PATCH "/contactSubmission/:id" \
  -H "content-type: application/json" \
  -d '{"id":0,"name":"string","email":"user@example.com","subject":"string","message":"string","createdAt":0}'
const res = await fetch("/contactSubmission/:id", {
  method: "PATCH",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "name": "string",
    "email": "user@example.com",
    "subject": "string",
    "message": "string",
    "createdAt": 0
  })
});
const data = await res.json();
import requests
res = requests.patch("/contactSubmission/:id", headers={"content-type": "application/json"}, json={
  "id": 0,
  "name": "string",
  "email": "user@example.com",
  "subject": "string",
  "message": "string",
  "createdAt": 0
})
data = res.json()
body
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 120pattern ^[^<>\u0000-\u001f\u007f]*$
email*string<email> pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
subject*string max len 200pattern ^[^<>\u0000-\u001f\u007f]*$
message*string max len 5000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
createdAtanyOf
Responses (by name)
200 200 (application/json) updated
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 120pattern ^[^<>\u0000-\u001f\u007f]*$
email*string<email> pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
subject*string max len 200pattern ^[^<>\u0000-\u001f\u007f]*$
message*string max len 5000pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]*$
createdAtanyOf
example copy
{
  "id": 0,
  "name": "string",
  "email": "user@example.com",
  "subject": "string",
  "message": "string",
  "createdAt": 0
}

Delete ContactSubmission

copy pathcopy link
copy
curl -X DELETE "/contactSubmission/:id"
const res = await fetch("/contactSubmission/:id", {
  method: "DELETE"
});
const data = await res.json();
import requests
res = requests.delete("/contactSubmission/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
204 204 deleted

Media

List Media

copy pathcopy link
copy
curl -X GET "/media"
const res = await fetch("/media", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/media")
data = res.json()
Responses (by name)
200 200 (application/json) ok
array of
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
url*string<uri>
alt*string max len 300pattern ^[^<>\u0000-\u001f\u007f]*$
widthanyOf
heightanyOf
example copy
[
  {
    "id": 0,
    "url": "string",
    "alt": "string",
    "width": 0,
    "height": 0
  }
]

Create Media

copy pathcopy link
copy
curl -X POST "/media" \
  -H "content-type: application/json" \
  -d '{"id":0,"url":"string","alt":"string","width":0,"height":0}'
const res = await fetch("/media", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "url": "string",
    "alt": "string",
    "width": 0,
    "height": 0
  })
});
const data = await res.json();
import requests
res = requests.post("/media", headers={"content-type": "application/json"}, json={
  "id": 0,
  "url": "string",
  "alt": "string",
  "width": 0,
  "height": 0
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
url*string<uri>
alt*string max len 300pattern ^[^<>\u0000-\u001f\u007f]*$
widthanyOf
heightanyOf
Responses (by name)
201 201 (application/json) created
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
url*string<uri>
alt*string max len 300pattern ^[^<>\u0000-\u001f\u007f]*$
widthanyOf
heightanyOf
example copy
{
  "id": 0,
  "url": "string",
  "alt": "string",
  "width": 0,
  "height": 0
}

Get Media by id

copy pathcopy link
copy
curl -X GET "/media/:id"
const res = await fetch("/media/:id", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/media/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
200 200 (application/json) ok
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
url*string<uri>
alt*string max len 300pattern ^[^<>\u0000-\u001f\u007f]*$
widthanyOf
heightanyOf
example copy
{
  "id": 0,
  "url": "string",
  "alt": "string",
  "width": 0,
  "height": 0
}
404 404 not found

Update Media

copy pathcopy link
copy
curl -X PATCH "/media/:id" \
  -H "content-type: application/json" \
  -d '{"id":0,"url":"string","alt":"string","width":0,"height":0}'
const res = await fetch("/media/:id", {
  method: "PATCH",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "url": "string",
    "alt": "string",
    "width": 0,
    "height": 0
  })
});
const data = await res.json();
import requests
res = requests.patch("/media/:id", headers={"content-type": "application/json"}, json={
  "id": 0,
  "url": "string",
  "alt": "string",
  "width": 0,
  "height": 0
})
data = res.json()
body
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
url*string<uri>
alt*string max len 300pattern ^[^<>\u0000-\u001f\u007f]*$
widthanyOf
heightanyOf
Responses (by name)
200 200 (application/json) updated
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
url*string<uri>
alt*string max len 300pattern ^[^<>\u0000-\u001f\u007f]*$
widthanyOf
heightanyOf
example copy
{
  "id": 0,
  "url": "string",
  "alt": "string",
  "width": 0,
  "height": 0
}

Delete Media

copy pathcopy link
copy
curl -X DELETE "/media/:id"
const res = await fetch("/media/:id", {
  method: "DELETE"
});
const data = await res.json();
import requests
res = requests.delete("/media/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
204 204 deleted

ApiToken

List ApiToken

copy pathcopy link
copy
curl -X GET "/apiToken"
const res = await fetch("/apiToken", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/apiToken")
data = res.json()
Responses (by name)
200 200 (application/json) ok
array of
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
userIdanyOf
name*string max len 120pattern ^[^<>\u0000-\u001f\u007f]*$
prefix*string max len 20pattern ^[^<>\u0000-\u001f\u007f]*$
hashedKey*string max len 128pattern ^[a-f0-9]+$
createdAtanyOf
lastUsedAtanyOf
revokedAtanyOf
example copy
[
  {
    "id": 0,
    "userId": "string",
    "name": "string",
    "prefix": "string",
    "hashedKey": "string",
    "createdAt": 0,
    "lastUsedAt": 0,
    "revokedAt": 0
  }
]

Create ApiToken

copy pathcopy link
copy
curl -X POST "/apiToken" \
  -H "content-type: application/json" \
  -d '{"id":0,"userId":"string","name":"string","prefix":"string","hashedKey":"string","createdAt":0,"lastUsedAt":0,"revokedAt":0}'
const res = await fetch("/apiToken", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "userId": "string",
    "name": "string",
    "prefix": "string",
    "hashedKey": "string",
    "createdAt": 0,
    "lastUsedAt": 0,
    "revokedAt": 0
  })
});
const data = await res.json();
import requests
res = requests.post("/apiToken", headers={"content-type": "application/json"}, json={
  "id": 0,
  "userId": "string",
  "name": "string",
  "prefix": "string",
  "hashedKey": "string",
  "createdAt": 0,
  "lastUsedAt": 0,
  "revokedAt": 0
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
userIdanyOf
name*string max len 120pattern ^[^<>\u0000-\u001f\u007f]*$
prefix*string max len 20pattern ^[^<>\u0000-\u001f\u007f]*$
hashedKey*string max len 128pattern ^[a-f0-9]+$
createdAtanyOf
lastUsedAtanyOf
revokedAtanyOf
Responses (by name)
201 201 (application/json) created
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
userIdanyOf
name*string max len 120pattern ^[^<>\u0000-\u001f\u007f]*$
prefix*string max len 20pattern ^[^<>\u0000-\u001f\u007f]*$
hashedKey*string max len 128pattern ^[a-f0-9]+$
createdAtanyOf
lastUsedAtanyOf
revokedAtanyOf
example copy
{
  "id": 0,
  "userId": "string",
  "name": "string",
  "prefix": "string",
  "hashedKey": "string",
  "createdAt": 0,
  "lastUsedAt": 0,
  "revokedAt": 0
}

Get ApiToken by id

copy pathcopy link
copy
curl -X GET "/apiToken/:id"
const res = await fetch("/apiToken/:id", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/apiToken/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
200 200 (application/json) ok
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
userIdanyOf
name*string max len 120pattern ^[^<>\u0000-\u001f\u007f]*$
prefix*string max len 20pattern ^[^<>\u0000-\u001f\u007f]*$
hashedKey*string max len 128pattern ^[a-f0-9]+$
createdAtanyOf
lastUsedAtanyOf
revokedAtanyOf
example copy
{
  "id": 0,
  "userId": "string",
  "name": "string",
  "prefix": "string",
  "hashedKey": "string",
  "createdAt": 0,
  "lastUsedAt": 0,
  "revokedAt": 0
}
404 404 not found

Update ApiToken

copy pathcopy link
copy
curl -X PATCH "/apiToken/:id" \
  -H "content-type: application/json" \
  -d '{"id":0,"userId":"string","name":"string","prefix":"string","hashedKey":"string","createdAt":0,"lastUsedAt":0,"revokedAt":0}'
const res = await fetch("/apiToken/:id", {
  method: "PATCH",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "userId": "string",
    "name": "string",
    "prefix": "string",
    "hashedKey": "string",
    "createdAt": 0,
    "lastUsedAt": 0,
    "revokedAt": 0
  })
});
const data = await res.json();
import requests
res = requests.patch("/apiToken/:id", headers={"content-type": "application/json"}, json={
  "id": 0,
  "userId": "string",
  "name": "string",
  "prefix": "string",
  "hashedKey": "string",
  "createdAt": 0,
  "lastUsedAt": 0,
  "revokedAt": 0
})
data = res.json()
body
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
userIdanyOf
name*string max len 120pattern ^[^<>\u0000-\u001f\u007f]*$
prefix*string max len 20pattern ^[^<>\u0000-\u001f\u007f]*$
hashedKey*string max len 128pattern ^[a-f0-9]+$
createdAtanyOf
lastUsedAtanyOf
revokedAtanyOf
Responses (by name)
200 200 (application/json) updated
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
userIdanyOf
name*string max len 120pattern ^[^<>\u0000-\u001f\u007f]*$
prefix*string max len 20pattern ^[^<>\u0000-\u001f\u007f]*$
hashedKey*string max len 128pattern ^[a-f0-9]+$
createdAtanyOf
lastUsedAtanyOf
revokedAtanyOf
example copy
{
  "id": 0,
  "userId": "string",
  "name": "string",
  "prefix": "string",
  "hashedKey": "string",
  "createdAt": 0,
  "lastUsedAt": 0,
  "revokedAt": 0
}

Delete ApiToken

copy pathcopy link
copy
curl -X DELETE "/apiToken/:id"
const res = await fetch("/apiToken/:id", {
  method: "DELETE"
});
const data = await res.json();
import requests
res = requests.delete("/apiToken/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
204 204 deleted

BillingAccount

List BillingAccount

copy pathcopy link
copy
curl -X GET "/billingAccount"
const res = await fetch("/billingAccount", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/billingAccount")
data = res.json()
Responses (by name)
200 200 (application/json) ok
array of
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
principal*string max len 128pattern ^[^<>\u0000-\u001f\u007f]*$
stripeCustomerIdanyOf
subscriptionIdanyOf
lastReportedMicroUsdanyOf
lastReportedAtanyOf
createdAtanyOf
example copy
[
  {
    "id": 0,
    "principal": "string",
    "stripeCustomerId": "string",
    "subscriptionId": "string",
    "lastReportedMicroUsd": 0,
    "lastReportedAt": 0,
    "createdAt": 0
  }
]

Create BillingAccount

copy pathcopy link
copy
curl -X POST "/billingAccount" \
  -H "content-type: application/json" \
  -d '{"id":0,"principal":"string","stripeCustomerId":"string","subscriptionId":"string","lastReportedMicroUsd":0,"lastReportedAt":0,"createdAt":0}'
const res = await fetch("/billingAccount", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "principal": "string",
    "stripeCustomerId": "string",
    "subscriptionId": "string",
    "lastReportedMicroUsd": 0,
    "lastReportedAt": 0,
    "createdAt": 0
  })
});
const data = await res.json();
import requests
res = requests.post("/billingAccount", headers={"content-type": "application/json"}, json={
  "id": 0,
  "principal": "string",
  "stripeCustomerId": "string",
  "subscriptionId": "string",
  "lastReportedMicroUsd": 0,
  "lastReportedAt": 0,
  "createdAt": 0
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
principal*string max len 128pattern ^[^<>\u0000-\u001f\u007f]*$
stripeCustomerIdanyOf
subscriptionIdanyOf
lastReportedMicroUsdanyOf
lastReportedAtanyOf
createdAtanyOf
Responses (by name)
201 201 (application/json) created
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
principal*string max len 128pattern ^[^<>\u0000-\u001f\u007f]*$
stripeCustomerIdanyOf
subscriptionIdanyOf
lastReportedMicroUsdanyOf
lastReportedAtanyOf
createdAtanyOf
example copy
{
  "id": 0,
  "principal": "string",
  "stripeCustomerId": "string",
  "subscriptionId": "string",
  "lastReportedMicroUsd": 0,
  "lastReportedAt": 0,
  "createdAt": 0
}

Get BillingAccount by id

copy pathcopy link
copy
curl -X GET "/billingAccount/:id"
const res = await fetch("/billingAccount/:id", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/billingAccount/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
200 200 (application/json) ok
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
principal*string max len 128pattern ^[^<>\u0000-\u001f\u007f]*$
stripeCustomerIdanyOf
subscriptionIdanyOf
lastReportedMicroUsdanyOf
lastReportedAtanyOf
createdAtanyOf
example copy
{
  "id": 0,
  "principal": "string",
  "stripeCustomerId": "string",
  "subscriptionId": "string",
  "lastReportedMicroUsd": 0,
  "lastReportedAt": 0,
  "createdAt": 0
}
404 404 not found

Update BillingAccount

copy pathcopy link
copy
curl -X PATCH "/billingAccount/:id" \
  -H "content-type: application/json" \
  -d '{"id":0,"principal":"string","stripeCustomerId":"string","subscriptionId":"string","lastReportedMicroUsd":0,"lastReportedAt":0,"createdAt":0}'
const res = await fetch("/billingAccount/:id", {
  method: "PATCH",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "principal": "string",
    "stripeCustomerId": "string",
    "subscriptionId": "string",
    "lastReportedMicroUsd": 0,
    "lastReportedAt": 0,
    "createdAt": 0
  })
});
const data = await res.json();
import requests
res = requests.patch("/billingAccount/:id", headers={"content-type": "application/json"}, json={
  "id": 0,
  "principal": "string",
  "stripeCustomerId": "string",
  "subscriptionId": "string",
  "lastReportedMicroUsd": 0,
  "lastReportedAt": 0,
  "createdAt": 0
})
data = res.json()
body
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
principal*string max len 128pattern ^[^<>\u0000-\u001f\u007f]*$
stripeCustomerIdanyOf
subscriptionIdanyOf
lastReportedMicroUsdanyOf
lastReportedAtanyOf
createdAtanyOf
Responses (by name)
200 200 (application/json) updated
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
principal*string max len 128pattern ^[^<>\u0000-\u001f\u007f]*$
stripeCustomerIdanyOf
subscriptionIdanyOf
lastReportedMicroUsdanyOf
lastReportedAtanyOf
createdAtanyOf
example copy
{
  "id": 0,
  "principal": "string",
  "stripeCustomerId": "string",
  "subscriptionId": "string",
  "lastReportedMicroUsd": 0,
  "lastReportedAt": 0,
  "createdAt": 0
}

Delete BillingAccount

copy pathcopy link
copy
curl -X DELETE "/billingAccount/:id"
const res = await fetch("/billingAccount/:id", {
  method: "DELETE"
});
const data = await res.json();
import requests
res = requests.delete("/billingAccount/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
204 204 deleted

Project

List Project

copy pathcopy link
copy
curl -X GET "/project"
const res = await fetch("/project", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/project")
data = res.json()
Responses (by name)
200 200 (application/json) ok
array of
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
ownerIdanyOf
statusstring "active" "archived"
example copy
[
  {
    "id": 0,
    "name": "string",
    "ownerId": "string",
    "status": "active"
  }
]

Create Project

copy pathcopy link
copy
curl -X POST "/project" \
  -H "content-type: application/json" \
  -d '{"id":0,"name":"string","ownerId":"string","status":"active"}'
const res = await fetch("/project", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "name": "string",
    "ownerId": "string",
    "status": "active"
  })
});
const data = await res.json();
import requests
res = requests.post("/project", headers={"content-type": "application/json"}, json={
  "id": 0,
  "name": "string",
  "ownerId": "string",
  "status": "active"
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
ownerIdanyOf
statusstring "active" "archived"
Responses (by name)
201 201 (application/json) created
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
ownerIdanyOf
statusstring "active" "archived"
example copy
{
  "id": 0,
  "name": "string",
  "ownerId": "string",
  "status": "active"
}

Get Project by id

copy pathcopy link
copy
curl -X GET "/project/:id"
const res = await fetch("/project/:id", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/project/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
200 200 (application/json) ok
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
ownerIdanyOf
statusstring "active" "archived"
example copy
{
  "id": 0,
  "name": "string",
  "ownerId": "string",
  "status": "active"
}
404 404 not found

Update Project

copy pathcopy link
copy
curl -X PATCH "/project/:id" \
  -H "content-type: application/json" \
  -d '{"id":0,"name":"string","ownerId":"string","status":"active"}'
const res = await fetch("/project/:id", {
  method: "PATCH",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "id": 0,
    "name": "string",
    "ownerId": "string",
    "status": "active"
  })
});
const data = await res.json();
import requests
res = requests.patch("/project/:id", headers={"content-type": "application/json"}, json={
  "id": 0,
  "name": "string",
  "ownerId": "string",
  "status": "active"
})
data = res.json()
body
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Request body (application/json)
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
ownerIdanyOf
statusstring "active" "archived"
Responses (by name)
200 200 (application/json) updated
fieldtypenotes
idinteger ≥ -9007199254740991≤ 9007199254740991
name*string max len 160pattern ^[^<>\u0000-\u001f\u007f]*$
ownerIdanyOf
statusstring "active" "archived"
example copy
{
  "id": 0,
  "name": "string",
  "ownerId": "string",
  "status": "active"
}

Delete Project

copy pathcopy link
copy
curl -X DELETE "/project/:id"
const res = await fetch("/project/:id", {
  method: "DELETE"
});
const data = await res.json();
import requests
res = requests.delete("/project/:id")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
204 204 deleted

Operations

Create an order from a cart (apply discount, total)

copy pathcopy link
copy
curl -X POST "/checkout/order" \
  -H "content-type: application/json" \
  -d '{"cartId":0,"items":[{"productId":0,"qty":0,"priceCents":0}],"discountCode":"string"}'
const res = await fetch("/checkout/order", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "cartId": 0,
    "items": [
      {
        "productId": 0,
        "qty": 0,
        "priceCents": 0
      }
    ],
    "discountCode": "string"
  })
});
const data = await res.json();
import requests
res = requests.post("/checkout/order", headers={"content-type": "application/json"}, json={
  "cartId": 0,
  "items": [
    {
      "productId": 0,
      "qty": 0,
      "priceCents": 0
    }
  ],
  "discountCode": "string"
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
cartIdinteger ≥ 1≤ 1000000000000
itemsarray max items 200
array of
fieldtypenotes
productIdinteger ≥ 1≤ 1000000000000
qtyinteger ≥ 1≤ 1000
priceCentsinteger ≥ 0≤ 1000000000
discountCodestring max len 40pattern ^[A-Z0-9][A-Z0-9_-]*$
Responses (by name)
201 ok (application/json) Create an order from a cart (apply discount, total)
object
example copy
{}

Validate a discount code

copy pathcopy link
copy
curl -X POST "/discount/validate" \
  -H "content-type: application/json" \
  -d '{"code":"string","subtotalCents":0}'
const res = await fetch("/discount/validate", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "code": "string",
    "subtotalCents": 0
  })
});
const data = await res.json();
import requests
res = requests.post("/discount/validate", headers={"content-type": "application/json"}, json={
  "code": "string",
  "subtotalCents": 0
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
code*string max len 40pattern ^[A-Z0-9][A-Z0-9_-]*$
subtotalCentsinteger ≥ 0≤ 100000000000
Responses (by name)
200 ok (application/json) Validate a discount code
object
example copy
{}

Mark a review helpful (+1)

copy pathcopy link
copy
curl -X POST "/review/:id/helpful"
const res = await fetch("/review/:id/helpful", {
  method: "POST"
});
const data = await res.json();
import requests
res = requests.post("/review/:id/helpful")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
200 ok (application/json) Mark a review helpful (+1)
object
example copy
{}

Store summary (orders, revenue, customers)

copy pathcopy link
copy
curl -X GET "/analytics/summary"
const res = await fetch("/analytics/summary", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/analytics/summary")
data = res.json()
Responses (by name)
200 ok (application/json) Store summary (orders, revenue, customers)
object
example copy
{}

Revenue per day (last 30d)

copy pathcopy link
copy
curl -X GET "/analytics/revenue"
const res = await fetch("/analytics/revenue", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/analytics/revenue")
data = res.json()
Responses (by name)
200 ok (application/json) Revenue per day (last 30d)
object
example copy
{}

Best-selling products

copy pathcopy link
copy
curl -X GET "/analytics/top-products"
const res = await fetch("/analytics/top-products", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/analytics/top-products")
data = res.json()
Responses (by name)
200 ok (application/json) Best-selling products
object
example copy
{}

Related products

copy pathcopy link
copy
curl -X GET "/recommendations/:productId"
const res = await fetch("/recommendations/:productId", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/recommendations/:productId")
data = res.json()
Path params
nametypenotesvalue
productId*string max len 16pattern ^[0-9]+$ max len 16pattern ^[0-9]+$
Responses (by name)
200 ok (application/json) Related products
object
example copy
{}

Subscribe to the newsletter (idempotent)

copy pathcopy link
copy
curl -X POST "/newsletter/subscribe" \
  -H "content-type: application/json" \
  -d '{"email":"user@example.com"}'
const res = await fetch("/newsletter/subscribe", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "email": "user@example.com"
  })
});
const data = await res.json();
import requests
res = requests.post("/newsletter/subscribe", headers={"content-type": "application/json"}, json={
  "email": "user@example.com"
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
email*string<email> max len 254
Responses (by name)
201 ok (application/json) Subscribe to the newsletter (idempotent)
object
example copy
{}

Deterministic identicon SVG

copy pathcopy link
copy
curl -X GET "/avatar?seed="
const res = await fetch("/avatar?seed=", {
  method: "GET"
});
const data = await res.json();
import requests
res = requests.get("/avatar?seed=")
data = res.json()
Query params
nametypenotesvalue
seedstring max len 100pattern ^[\w .@-]{0,100}$ max len 100pattern ^[\w .@-]{0,100}$
Responses (by name)
200 ok (image/svg+xml) Deterministic identicon SVG
string
example copy
"string"

Create an API token (returns the secret ONCE)

copy pathcopy link
copy
curl -X POST "/tokens/create" \
  -H "content-type: application/json" \
  -d '{"name":"string"}'
const res = await fetch("/tokens/create", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "name": "string"
  })
});
const data = await res.json();
import requests
res = requests.post("/tokens/create", headers={"content-type": "application/json"}, json={
  "name": "string"
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
name*string max len 80pattern ^[^<>\u0000-\u001f\u007f]*$
Responses (by name)
201 ok (application/json) Create an API token (returns the secret ONCE)
object
example copy
{}

Revoke an API token

copy pathcopy link
copy
curl -X POST "/tokens/:id/revoke"
const res = await fetch("/tokens/:id/revoke", {
  method: "POST"
});
const data = await res.json();
import requests
res = requests.post("/tokens/:id/revoke")
data = res.json()
Path params
nametypenotesvalue
id*string max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$ max len 1024pattern ^[^\u0000-\u0008\u000b\u000c\u000e-\u001f]*$
Responses (by name)
200 ok (application/json) Revoke an API token
object
example copy
{}

Create a pending order + a Stripe Checkout Session (returns the hosted URL)

copy pathcopy link
copy
curl -X POST "/checkout/pay" \
  -H "content-type: application/json" \
  -d '{"items":[{"productId":0,"qty":0}],"discountCode":"string"}'
const res = await fetch("/checkout/pay", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "items": [
      {
        "productId": 0,
        "qty": 0
      }
    ],
    "discountCode": "string"
  })
});
const data = await res.json();
import requests
res = requests.post("/checkout/pay", headers={"content-type": "application/json"}, json={
  "items": [
    {
      "productId": 0,
      "qty": 0
    }
  ],
  "discountCode": "string"
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
itemsarray max items 200
array of
fieldtypenotes
productIdinteger ≥ 1≤ 1000000000000
qtyinteger ≥ 1≤ 1000
discountCodestring max len 40pattern ^[A-Z0-9][A-Z0-9_-]*$
Responses (by name)
200 ok (application/json) Create a pending order + a Stripe Checkout Session (returns the hosted URL)
object
example copy
{}

Confirm payment by retrieving the Stripe session; mark the order paid

copy pathcopy link
copy
curl -X POST "/checkout/confirm" \
  -H "content-type: application/json" \
  -d '{"orderId":0,"sessionId":"string"}'
const res = await fetch("/checkout/confirm", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "orderId": 0,
    "sessionId": "string"
  })
});
const data = await res.json();
import requests
res = requests.post("/checkout/confirm", headers={"content-type": "application/json"}, json={
  "orderId": 0,
  "sessionId": "string"
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
orderId*integer ≥ 1≤ 1000000000000
sessionId*string max len 255pattern ^[A-Za-z0-9_]+$
Responses (by name)
200 ok (application/json) Confirm payment by retrieving the Stripe session; mark the order paid
object
example copy
{}

Start usage-based billing: a Stripe customer + a metered subscription

copy pathcopy link
copy
curl -X POST "/billing/connect" \
  -H "content-type: application/json" \
  -d '{"email":"user@example.com"}'
const res = await fetch("/billing/connect", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "email": "user@example.com"
  })
});
const data = await res.json();
import requests
res = requests.post("/billing/connect", headers={"content-type": "application/json"}, json={
  "email": "user@example.com"
})
data = res.json()
body
Request body (application/json)
fieldtypenotes
emailstring<email> max len 254
Responses (by name)
200 ok (application/json) Start usage-based billing: a Stripe customer + a metered subscription
object
example copy
{}

Report your accrued @suluk/cost usage to the Stripe Billing Meter

copy pathcopy link
copy
curl -X POST "/billing/report" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch("/billing/report", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({})
});
const data = await res.json();
import requests
res = requests.post("/billing/report", headers={"content-type": "application/json"}, json={})
data = res.json()
body
Request body (application/json)
object
Responses (by name)
200 ok (application/json) Report your accrued @suluk/cost usage to the Stripe Billing Meter
object
example copy
{}

One contract → every layer

The same v4 contract is not a document but a function — it projects into each layer below. Change the contract, and all of them change.

Hardening — input-validation grade 🛡 A 100/100

Untrusted input is the attack surface. Every string wants a maxLength + a pattern (a character allowlist), every number a maximum, every array a maxItems, every object closed (additionalProperties:false) + typed, and no any/unknown — so malformed or oversized input can't break the system. 0 high · 0 medium · 0 low findings.

✓ every input is fully bounded — grade A.

Cost Explorer + Workflow Calculator

Every operation by declared cost + source (a contract fact, not telemetry). Tick a sequence of operations to build a WORKFLOW — see its cumulative cost + per-source breakdown + a monthly projection. Budget a user journey before you build it. No 3.x tool models cost at all.

Workflow: $0 ·
operationcost ⇅computedb-readdb-write
payCheckout$0.00019 190µ$100µ$90µ$
checkout$0.00018 180µ$100µ$80µ$
createOrder$0.00016 160µ$100µ$60µ$
updateOrder$0.00016 160µ$100µ$60µ$
connectBilling$0.00016 160µ$100µ$60µ$
createProduct$0.000145 145µ$100µ$45µ$
updateProduct$0.000145 145µ$100µ$45µ$
createPost$0.000145 145µ$100µ$45µ$
updatePost$0.000145 145µ$100µ$45µ$
createReview$0.00014 140µ$100µ$40µ$
updateReview$0.00014 140µ$100µ$40µ$
createProject$0.00014 140µ$100µ$40µ$
updateProject$0.00014 140µ$100µ$40µ$
reportUsage$0.00014 140µ$100µ$40µ$
deleteOrder$0.000136 136µ$100µ$36µ$
createCart$0.000135 135µ$100µ$35µ$
updateCart$0.000135 135µ$100µ$35µ$
createCategory$0.00013 130µ$100µ$30µ$
updateCategory$0.00013 130µ$100µ$30µ$
createVariant$0.00013 130µ$100µ$30µ$
updateVariant$0.00013 130µ$100µ$30µ$
createDiscountCode$0.00013 130µ$100µ$30µ$
updateDiscountCode$0.00013 130µ$100µ$30µ$
createApiToken$0.00013 130µ$100µ$30µ$
updateApiToken$0.00013 130µ$100µ$30µ$
createBillingAccount$0.00013 130µ$100µ$30µ$
updateBillingAccount$0.00013 130µ$100µ$30µ$
createToken$0.00013 130µ$100µ$30µ$
deleteProduct$0.000127 127µ$100µ$27µ$
deletePost$0.000127 127µ$100µ$27µ$
createWishlistItem$0.000125 125µ$100µ$25µ$
updateWishlistItem$0.000125 125µ$100µ$25µ$
createFaq$0.000125 125µ$100µ$25µ$
updateFaq$0.000125 125µ$100µ$25µ$
createMedia$0.000125 125µ$100µ$25µ$
updateMedia$0.000125 125µ$100µ$25µ$
deleteReview$0.000124 124µ$100µ$24µ$
deleteProject$0.000124 124µ$100µ$24µ$
deleteCart$0.000121 121µ$100µ$21µ$
createNewsletterSubscriber$0.00012 120µ$100µ$20µ$
updateNewsletterSubscriber$0.00012 120µ$100µ$20µ$
createContactSubmission$0.00012 120µ$100µ$20µ$
updateContactSubmission$0.00012 120µ$100µ$20µ$
markReviewHelpful$0.00012 120µ$100µ$20µ$
subscribeNewsletter$0.00012 120µ$100µ$20µ$
revokeToken$0.00012 120µ$100µ$20µ$
deleteCategory$0.000118 118µ$100µ$18µ$
deleteVariant$0.000118 118µ$100µ$18µ$
deleteDiscountCode$0.000118 118µ$100µ$18µ$
deleteApiToken$0.000118 118µ$100µ$18µ$
deleteBillingAccount$0.000118 118µ$100µ$18µ$
deleteWishlistItem$0.000115 115µ$100µ$15µ$
deleteFaq$0.000115 115µ$100µ$15µ$
deleteNewsletterSubscriber$0.000115 115µ$100µ$15µ$
deleteContactSubmission$0.000115 115µ$100µ$15µ$
deleteMedia$0.000115 115µ$100µ$15µ$
confirmCheckout30 µ$ 30µ$30µ$
analyticsTopProducts24 µ$ 24µ$24µ$
analyticsSummary20 µ$ 20µ$20µ$
analyticsRevenue20 µ$ 20µ$20µ$
recommendRelated16 µ$ 16µ$16µ$
search14 µ$ 14µ$14µ$
listOrder12 µ$ 12µ$12µ$
getOrder12 µ$ 12µ$12µ$
listProject12 µ$ 12µ$12µ$
getProject12 µ$ 12µ$12µ$
listProduct10 µ$ 10µ$10µ$
getProduct10 µ$ 10µ$10µ$
listCart10 µ$ 10µ$10µ$
getCart10 µ$ 10µ$10µ$
validateDiscount10 µ$ 10µ$10µ$
listCategory8 µ$ 8µ$8µ$
getCategory8 µ$ 8µ$8µ$
listVariant8 µ$ 8µ$8µ$
getVariant8 µ$ 8µ$8µ$
listDiscountCode8 µ$ 8µ$8µ$
getDiscountCode8 µ$ 8µ$8µ$
listReview8 µ$ 8µ$8µ$
getReview8 µ$ 8µ$8µ$
listWishlistItem8 µ$ 8µ$8µ$
getWishlistItem8 µ$ 8µ$8µ$
listPost8 µ$ 8µ$8µ$
getPost8 µ$ 8µ$8µ$
listApiToken8 µ$ 8µ$8µ$
getApiToken8 µ$ 8µ$8µ$
listBillingAccount8 µ$ 8µ$8µ$
getBillingAccount8 µ$ 8µ$8µ$
listFaq6 µ$ 6µ$6µ$
getFaq6 µ$ 6µ$6µ$
listNewsletterSubscriber6 µ$ 6µ$6µ$
getNewsletterSubscriber6 µ$ 6µ$6µ$
listContactSubmission6 µ$ 6µ$6µ$
getContactSubmission6 µ$ 6µ$6µ$
listMedia6 µ$ 6µ$6µ$
getMedia6 µ$ 6µ$6µ$
generateAvatar2 µ$ 2µ$2µ$

ADA Resolution Playground

v4 dispatches a request to a NAMED operation by its computed signature, not by method+path (which need not be unique). Enter a request and watch it resolve — uniquely, to a collision, or to a runtime-dependent set. A question 3.x never had to ask.

Enter a request and press Resolve.

Reachability — the contract refracted per viewer

Access is a contract facet (x-suluk-access). ● full · ◐ own rows only · · not reachable. The View as lens recomputes the visible operation set from this.

operationrequiresAnonymousSigned-in userAdmin
listCategoryanyone
createCategoryadmin··
getCategoryanyone
updateCategoryadmin··
deleteCategoryadmin··
listProductanyone
createProductadmin··
getProductanyone
updateProductadmin··
deleteProductadmin··
listVariantanyone
createVariantadmin··
getVariantanyone
updateVariantadmin··
deleteVariantadmin··
listDiscountCodeadmin··
createDiscountCodeadmin··
getDiscountCodeadmin··
updateDiscountCodeadmin··
deleteDiscountCodeadmin··
listCartauthenticated · own·
createCartauthenticated · own·
getCartauthenticated · own·
updateCartauthenticated · own·
deleteCartauthenticated · own·
listOrderauthenticated · own·
createOrderauthenticated · own·
getOrderauthenticated · own·
updateOrderadmin··
deleteOrderadmin··
listReviewanyone
createReviewauthenticated · own·
getReviewanyone
updateReviewauthenticated · own·
deleteReviewauthenticated · own·
listWishlistItemauthenticated · own·
createWishlistItemauthenticated · own·
getWishlistItemauthenticated · own·
updateWishlistItemauthenticated · own·
deleteWishlistItemauthenticated · own·
listPostanyone
createPostadmin··
getPostanyone
updatePostadmin··
deletePostadmin··
listFaqanyone
createFaqadmin··
getFaqanyone
updateFaqadmin··
deleteFaqadmin··
listNewsletterSubscriberadmin··
createNewsletterSubscriberanyone
getNewsletterSubscriberadmin··
updateNewsletterSubscriberadmin··
deleteNewsletterSubscriberadmin··
listContactSubmissionadmin··
createContactSubmissionanyone
getContactSubmissionadmin··
updateContactSubmissionadmin··
deleteContactSubmissionadmin··
listMediaanyone
createMediaadmin··
getMediaanyone
updateMediaadmin··
deleteMediaadmin··
listApiTokenauthenticated · own·
createApiTokenauthenticated · own·
getApiTokenauthenticated · own·
updateApiTokenauthenticated · own·
deleteApiTokenauthenticated · own·
listBillingAccountauthenticated · own·
createBillingAccountadmin··
getBillingAccountauthenticated · own·
updateBillingAccountadmin··
deleteBillingAccountadmin··
listProjectauthenticated · own·
createProjectauthenticated · own·
getProjectauthenticated · own·
updateProjectauthenticated · own·
deleteProjectauthenticated · own·
checkoutanyone
validateDiscountanyone
searchanyone
markReviewHelpfulauthenticated·
analyticsSummaryadmin··
analyticsRevenueadmin··
analyticsTopProductsadmin··
recommendRelatedanyone
subscribeNewsletteranyone
generateAvataranyone
createTokenanyone
revokeTokenauthenticated · own·
payCheckoutanyone
confirmCheckoutanyone
connectBillingauthenticated·
reportUsageauthenticated · own·

Authentication

sessionCookie apiKey · in cookie
bearerAuth http · bearer