{"components":{"headers":{"CacheControl":{"description":"How long a cache may keep the answer.","schema":{"type":"string"}},"ETag":{"description":"The version of the item. Send it back in `If-None-Match` or `If-Match`.","schema":{"type":"string"}},"LastModified":{"description":"When the item last changed.","schema":{"type":"string"}},"Link":{"description":"Paging links (RFC 8288): `rel=\"next\"`, `\"prev\"`, `\"first\"`, and `\"last\"` for offset paging.","schema":{"type":"string"}},"Location":{"description":"The URL of the new item.","schema":{"type":"string"}},"RateLimitHeader":{"description":"What is left, as `\"token\";r=\u003cremaining\u003e;t=\u003cseconds until full\u003e`.","schema":{"type":"string"}},"RateLimitPolicy":{"description":"The limit, as `\"token\";q=\u003ccalls\u003e;w=60` or `\"ip\";q=120;w=60`.","schema":{"type":"string"}},"RetryAfter":{"description":"Seconds to wait before the next call.","schema":{"type":"integer"}},"XRequestId":{"description":"The id of this request; also `request_id` in an error body.","schema":{"type":"string"}}},"parameters":{"Id":{"description":"A UUID.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},"IdempotencyKey":{"description":"A unique key (a UUID is fine) that makes a POST safe to retry for 24 hours. A retry with the same key, path and body gets the first answer again with `Idempotent-Replayed: true` and creates nothing; a retry while the first is still running gets 409 `conflict` with `Retry-After: 1`. The same key with another request gets 422 `idempotency_key_mismatch`. Only a 2xx answer is kept, so after an error the retry runs again. An answer over 64 KiB, or one that holds a new token's value, is not kept: its retry gets 409 `conflict` with the `Location` of what the first request made.","in":"header","name":"Idempotency-Key","schema":{"maxLength":255,"minLength":1,"pattern":"^[!-~]+$","type":"string"}},"IfMatch":{"description":"The strong ETag the change is based on, from a read without `include` or from the last write; when the item changed since, the answer is 412. A weak ETag never matches.","in":"header","name":"If-Match","schema":{"type":"string"}},"IfNoneMatch":{"description":"An ETag from an earlier answer; an unchanged item answers 304 with no body.","in":"header","name":"If-None-Match","schema":{"type":"string"}},"PageAfter":{"description":"The cursor of the next page, from `meta.next_cursor` or the `Link` header. Treat it as opaque; it works only with the same query.","in":"query","name":"page[after]","schema":{"maxLength":200,"type":"string"}},"PageCount":{"description":"`true` adds `meta.total` to a cursor page (it costs a count).","in":"query","name":"page[count]","schema":{"default":false,"type":"boolean"}},"PageNumber":{"description":"Offset paging, 1 based, at most 10,000. Cannot be sent with `page[after]`. Pages can shift while you write.","in":"query","name":"page[number]","schema":{"maximum":10000,"minimum":1,"type":"integer"}},"PageSize":{"description":"Items on one page.","in":"query","name":"page[size]","schema":{"default":25,"maximum":100,"minimum":1,"type":"integer"}},"Prefer":{"description":"`return=minimal` for an answer with no body, `return=representation` (the default) for the full item (RFC 7240).","in":"header","name":"Prefer","schema":{"enum":["return=minimal","return=representation"],"type":"string"}},"Search":{"description":"Case-insensitive text search over the resource's text fields.","in":"query","name":"search","schema":{"maxLength":100,"minLength":1,"type":"string"}}},"responses":{"BadRequest":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"A parameter is wrong, unknown or out of range."},"Conflict":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The change clashes with another row, such as an email you already use."},"Forbidden":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The token lacks the scope this operation needs."},"InternalError":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Something failed on the server."},"Minimal":{"description":"Done; no body, because the request sent `Prefer: return=minimal`.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"NotFound":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"No such item, or not one this token may see."},"NotModified":{"description":"Not changed since the ETag in `If-None-Match`; no body.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"PreconditionFailed":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The item changed since the ETag in `If-Match`."},"TooLarge":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The body is over 64 KiB."},"TooManyRequests":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Over the rate limit; wait `Retry-After` seconds.","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimitHeader"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"Unauthorized":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"No token, or the token is wrong, expired or revoked."},"Unavailable":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The API cannot answer right now; wait `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"UnprocessableContent":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The body has fields that fail their rules (`validation_failed`, with `errors`), or a cap is reached (`cap_reached`)."},"UnsupportedMediaType":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The body is not `application/json` (or `application/merge-patch+json` on PATCH)."}},"schemas":{"AccessToken":{"additionalProperties":false,"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"expires_at":{"description":"When the token stops working; null for an older token with no end.","format":"date-time","readOnly":true,"type":["string","null"]},"id":{"format":"uuid","readOnly":true,"type":"string"},"is_primary":{"description":"The account's first token; it cannot be revoked.","readOnly":true,"type":"boolean"},"label":{"examples":["My app"],"maxLength":100,"minLength":3,"type":"string"},"last4":{"description":"The last 4 characters of the value.","maxLength":4,"minLength":4,"readOnly":true,"type":"string"},"made_by":{"description":"The token that made this one here; revoking that token revokes this one too. null for a token made on the site.","format":"uuid","readOnly":true,"type":["string","null"]},"rate_limit":{"description":"Calls a minute.","maximum":600,"minimum":1,"readOnly":true,"type":"integer"},"scopes":{"items":{"$ref":"#/components/schemas/Scope"},"type":"array"}},"required":["id","label","last4","scopes","rate_limit","is_primary","expires_at","created_at","made_by"],"type":"object"},"AccessTokenCreate":{"additionalProperties":false,"properties":{"expires_at":{"description":"When the token stops working; within a year, and not after the calling token's own end.","format":"date-time","type":"string"},"label":{"description":"A name to remember the token by; unique among your tokens.","examples":["CI deploy"],"maxLength":100,"minLength":3,"pattern":"^[^\\x00-\\x1F\\x7F]+$","type":"string"},"scopes":{"examples":[["posts:read","posts:write"]],"items":{"$ref":"#/components/schemas/Scope"},"maxItems":20,"minItems":1,"type":"array","uniqueItems":true}},"required":["label","scopes"],"type":"object"},"AccessTokenCreated":{"additionalProperties":false,"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"expires_at":{"description":"When the token stops working; null for an older token with no end.","format":"date-time","readOnly":true,"type":["string","null"]},"id":{"format":"uuid","readOnly":true,"type":"string"},"is_primary":{"description":"The account's first token; it cannot be revoked.","readOnly":true,"type":"boolean"},"label":{"examples":["My app"],"maxLength":100,"minLength":3,"type":"string"},"last4":{"description":"The last 4 characters of the value.","maxLength":4,"minLength":4,"readOnly":true,"type":"string"},"made_by":{"description":"The token that made this one here; revoking that token revokes this one too. null for a token made on the site.","format":"uuid","readOnly":true,"type":["string","null"]},"rate_limit":{"description":"Calls a minute.","maximum":600,"minimum":1,"readOnly":true,"type":"integer"},"scopes":{"items":{"$ref":"#/components/schemas/Scope"},"type":"array"},"value":{"description":"The token itself, shown only in this answer. Send it as `Authorization: Bearer \u003cvalue\u003e`.","pattern":"^gorest_[0-9A-Za-z]{49}$","readOnly":true,"type":"string"}},"required":["id","label","last4","scopes","rate_limit","is_primary","expires_at","created_at","made_by","value"],"type":"object"},"AccessTokenList":{"additionalProperties":false,"properties":{"data":{"items":{"$ref":"#/components/schemas/AccessToken"},"type":"array"},"meta":{"$ref":"#/components/schemas/ListMeta"}},"required":["data","meta"],"type":"object"},"Cart":{"additionalProperties":false,"description":"Every field is present unless `fields[carts]` asks for fewer. `user` and `items` are there only with `include`.","properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"currency":{"description":"Every line is in this currency. Fixed once the cart is made.","examples":["INR"],"pattern":"^[A-Z]{3}$","type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"items":{"description":"The lines, oldest first.","items":{"$ref":"#/components/schemas/CartItem"},"type":"array"},"read_only":{"description":"True for sample data (the seed); it cannot be changed.","readOnly":true,"type":"boolean"},"status":{"description":"`ordered` is set by placing an order and is final.","enum":["active","abandoned","ordered"],"type":"string"},"updated_at":{"format":"date-time","readOnly":true,"type":"string"},"user":{"$ref":"#/components/schemas/NullableUser"},"user_id":{"description":"Whose cart; a user you can see. One active cart per user.","format":"uuid","type":"string"}},"required":["id"],"type":"object"},"CartCreate":{"additionalProperties":false,"properties":{"currency":{"description":"An ISO 4217 code, either case.","pattern":"^[A-Za-z]{3}$","type":"string"},"user_id":{"description":"A user you can see with no active cart.","format":"uuid","type":"string"}},"required":["user_id","currency"],"type":"object"},"CartItem":{"additionalProperties":false,"description":"A line of a cart. Every field is present unless `fields[cart-items]` asks for fewer. `product` is there only with `include`.","properties":{"cart_id":{"format":"uuid","type":"string"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"currency":{"description":"The cart's currency.","pattern":"^[A-Z]{3}$","readOnly":true,"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"product":{"$ref":"#/components/schemas/NullableProduct"},"product_id":{"format":"uuid","type":"string"},"quantity":{"maximum":999,"minimum":1,"type":"integer"},"read_only":{"description":"True for sample data (the seed); it cannot be changed.","readOnly":true,"type":"boolean"},"updated_at":{"format":"date-time","readOnly":true,"type":"string"}},"required":["id"],"type":"object"},"CartItemCreate":{"additionalProperties":false,"properties":{"cart_id":{"description":"An active cart of yours.","format":"uuid","type":"string"},"product_id":{"description":"A product you can see, in the cart's currency, not yet in the cart.","format":"uuid","type":"string"},"quantity":{"default":1,"maximum":999,"minimum":1,"type":"integer"}},"required":["cart_id","product_id"],"type":"object"},"CartItemList":{"additionalProperties":false,"properties":{"data":{"items":{"$ref":"#/components/schemas/CartItem"},"type":"array"},"meta":{"$ref":"#/components/schemas/ListMeta"}},"required":["data","meta"],"type":"object"},"CartItemPatch":{"additionalProperties":false,"properties":{"quantity":{"maximum":999,"minimum":1,"type":"integer"}},"required":["quantity"],"type":"object"},"CartList":{"additionalProperties":false,"properties":{"data":{"items":{"$ref":"#/components/schemas/Cart"},"type":"array"},"meta":{"$ref":"#/components/schemas/ListMeta"}},"required":["data","meta"],"type":"object"},"CartPatch":{"additionalProperties":false,"properties":{"status":{"description":"Leave a cart or come back to it; an ordered cart cannot change.","enum":["active","abandoned"],"type":"string"}},"required":["status"],"type":"object"},"Category":{"additionalProperties":false,"description":"A product category. Platform data, the same for everyone. Every field is present unless `fields[categories]` asks for fewer.","properties":{"description":{"type":"string"},"id":{"format":"uuid","type":"string"},"name":{"examples":["Home and kitchen"],"type":"string"},"slug":{"examples":["home-kitchen"],"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","type":"string"}},"required":["id"],"type":"object"},"CategoryList":{"additionalProperties":false,"properties":{"data":{"items":{"$ref":"#/components/schemas/Category"},"type":"array"},"meta":{"$ref":"#/components/schemas/ListMeta"}},"required":["data","meta"],"type":"object"},"ChangeEvent":{"additionalProperties":false,"description":"The `data` of a `change` event on the stream.","properties":{"action":{"enum":["created","updated","deleted"],"type":"string"},"href":{"description":"Where to read the row.","type":"string"},"id":{"format":"uuid","type":"string"},"resource":{"enum":["users","posts","comments","tasks","products","carts","cart-items","orders","order-items"],"type":"string"},"version":{"description":"The row's version after the change (before it, for a delete). Order lines have none.","type":["integer","null"]}},"required":["resource","action","id","version","href"],"type":"object"},"Comment":{"additionalProperties":false,"description":"Every field is present unless `fields[comments]` asks for fewer. `post` and `user` are there only with `include`.","properties":{"body":{"maxLength":2000,"minLength":1,"type":"string"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"post":{"$ref":"#/components/schemas/NullablePost"},"post_id":{"format":"uuid","type":"string"},"read_only":{"description":"True for sample data (the seed); it cannot be changed.","readOnly":true,"type":"boolean"},"updated_at":{"format":"date-time","readOnly":true,"type":"string"},"user":{"$ref":"#/components/schemas/NullableUser"},"user_id":{"description":"Who wrote it; null once that user is deleted.","format":"uuid","type":["string","null"]}},"required":["id"],"type":"object"},"CommentCreate":{"additionalProperties":false,"properties":{"body":{"description":"Not blank; spaces at the ends are dropped.","maxLength":2000,"minLength":1,"pattern":"\\S","type":"string"},"post_id":{"description":"A post you can see.","format":"uuid","type":"string"},"user_id":{"description":"A user you can see.","format":"uuid","type":"string"}},"required":["post_id","user_id","body"],"type":"object"},"CommentList":{"additionalProperties":false,"properties":{"data":{"items":{"$ref":"#/components/schemas/Comment"},"type":"array"},"meta":{"$ref":"#/components/schemas/ListMeta"}},"required":["data","meta"],"type":"object"},"CommentPatch":{"additionalProperties":false,"properties":{"body":{"description":"Not blank; spaces at the ends are dropped.","maxLength":2000,"minLength":1,"pattern":"\\S","type":"string"}},"required":["body"],"type":"object"},"Country":{"additionalProperties":false,"description":"An ISO 3166-1 country. Every field is present unless `fields[countries]` asks for fewer; `currency` only with `include=currency`.","properties":{"alpha3":{"examples":["IND"],"pattern":"^[A-Z]{3}$","type":"string"},"calling_code":{"description":"The E.164 country calling code; null where there is none.","examples":["+91"],"type":["string","null"]},"code":{"description":"ISO 3166-1 alpha-2.","examples":["IN"],"pattern":"^[A-Z]{2}$","type":"string"},"currency":{"oneOf":[{"$ref":"#/components/schemas/Currency"},{"type":"null"}]},"currency_code":{"description":"The currency in use; null where there is none.","examples":["INR"],"type":["string","null"]},"name":{"examples":["India"],"type":"string"},"numeric_code":{"examples":["356"],"pattern":"^[0-9]{3}$","type":"string"},"region":{"description":"The UN M49 continent; null for Antarctica.","enum":["Africa","Americas","Asia","Europe","Oceania",null],"type":["string","null"]}},"required":["code"],"type":"object"},"CountryList":{"additionalProperties":false,"properties":{"data":{"items":{"$ref":"#/components/schemas/Country"},"type":"array"},"meta":{"$ref":"#/components/schemas/ListMeta"}},"required":["data","meta"],"type":"object"},"Currency":{"additionalProperties":false,"description":"An ISO 4217 currency. Every field is present unless `fields[currencies]` asks for fewer.","properties":{"code":{"examples":["INR"],"pattern":"^[A-Z]{3}$","type":"string"},"minor_unit":{"description":"Digits after the decimal point: an amount in minor units is the amount times 10 to this power.","examples":[2],"maximum":4,"minimum":0,"type":"integer"},"name":{"examples":["Indian Rupee"],"type":"string"},"symbol":{"description":"The English symbol (Unicode CLDR); the code when there is none.","examples":["₹"],"type":"string"}},"required":["code"],"type":"object"},"CurrencyList":{"additionalProperties":false,"properties":{"data":{"items":{"$ref":"#/components/schemas/Currency"},"type":"array"},"meta":{"$ref":"#/components/schemas/ListMeta"}},"required":["data","meta"],"type":"object"},"Echo":{"additionalProperties":false,"properties":{"body":{"description":"The body as sent, or null when there was none.","type":["string","null"]},"body_encoding":{"description":"`text` for a UTF-8 body, `base64` for any other bytes, null with no body.","enum":["text","base64",null],"type":["string","null"]},"headers":{"$ref":"#/components/schemas/Headers"},"method":{"examples":["POST"],"type":"string"},"path":{"examples":["/public/v3/http/echo"],"type":"string"},"query":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"description":"Each query parameter with all its values.","type":"object"}},"required":["method","path","query","headers","body","body_encoding"],"type":"object"},"ErrorCode":{"description":"A stable, machine readable error code. Clients switch on this, not on `title`.","enum":["invalid_parameter","unauthorized","forbidden","not_found","method_not_allowed","conflict","precondition_failed","unsupported_media_type","validation_failed","cap_reached","idempotency_key_mismatch","rate_limited","internal_error","unavailable","requested_status"],"type":"string"},"FieldError":{"additionalProperties":false,"properties":{"code":{"description":"What is wrong with the field, such as `required`, `too_long` or `taken`.","examples":["taken"],"type":"string"},"detail":{"examples":["has already been taken"],"type":"string"},"pointer":{"description":"A JSON Pointer (RFC 6901) to the field in the request body, or `/query/\u003cname\u003e` for a query parameter.","examples":["/email"],"type":"string"}},"required":["pointer","code","detail"],"type":"object"},"Headers":{"additionalProperties":{"type":"string"},"description":"Each header once, its values joined with `, `.","type":"object"},"HttpDelay":{"additionalProperties":false,"properties":{"delay_ms":{"maximum":10000,"minimum":0,"type":"integer"}},"required":["delay_ms"],"type":"object"},"HttpStatus":{"additionalProperties":false,"properties":{"description":{"description":"The status text, such as `Created`.","type":"string"},"status":{"maximum":399,"minimum":200,"type":"integer"}},"required":["status","description"],"type":"object"},"ListMeta":{"additionalProperties":false,"properties":{"has_more":{"description":"More items follow this page.","type":"boolean"},"next_cursor":{"description":"Send as `page[after]` for the next page; null on the last page and with offset paging.","type":["string","null"]},"total":{"description":"All matching items; only with `page[number]` or `page[count]=true`, else null.","type":["integer","null"]}},"required":["has_more","next_cursor","total"],"type":"object"},"MyData":{"additionalProperties":false,"properties":{"resources":{"additionalProperties":false,"properties":{"access_tokens":{"$ref":"#/components/schemas/MyDataCount"},"cart_items":{"$ref":"#/components/schemas/MyDataCount"},"carts":{"$ref":"#/components/schemas/MyDataCount"},"comments":{"$ref":"#/components/schemas/MyDataCount"},"order_items":{"$ref":"#/components/schemas/MyDataCount"},"orders":{"$ref":"#/components/schemas/MyDataCount"},"posts":{"$ref":"#/components/schemas/MyDataCount"},"products":{"$ref":"#/components/schemas/MyDataCount"},"tasks":{"$ref":"#/components/schemas/MyDataCount"},"users":{"$ref":"#/components/schemas/MyDataCount"}},"required":["users","posts","comments","tasks","products","carts","cart_items","orders","order_items","access_tokens"],"type":"object"},"sample_data_at":{"description":"When you last reset with sample data; null when your lists show the shared sample data.","format":"date-time","type":["string","null"]}},"required":["sample_data_at","resources"],"type":"object"},"MyDataCount":{"additionalProperties":false,"properties":{"cap":{"description":"The most it may hold; over it a create answers 422 `cap_reached`.","minimum":1,"type":"integer"},"count":{"description":"Rows your account holds.","minimum":0,"type":"integer"}},"required":["count","cap"],"type":"object"},"MyDataReset":{"additionalProperties":false,"properties":{"sample_data":{"default":false,"description":"Copy the sample data in as your own rows after the delete.","type":"boolean"}},"type":"object"},"NullablePost":{"description":"The post, or null when you cannot see it (a sample post after a reset with sample data).","oneOf":[{"$ref":"#/components/schemas/Post"},{"type":"null"}]},"NullableProduct":{"description":"The product, or null when it is gone or you cannot see it.","oneOf":[{"$ref":"#/components/schemas/Product"},{"type":"null"}]},"NullableUser":{"description":"The user, or null when there is none or you cannot see it.","oneOf":[{"$ref":"#/components/schemas/User"},{"type":"null"}]},"Order":{"additionalProperties":false,"description":"Every field is present unless `fields[orders]` asks for fewer. `user` and `items` are there only with `include`.","properties":{"cart_id":{"description":"The cart it was placed from; null once that cart is deleted.","format":"uuid","readOnly":true,"type":["string","null"]},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"currency":{"pattern":"^[A-Z]{3}$","readOnly":true,"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"items":{"description":"The lines, oldest first.","items":{"$ref":"#/components/schemas/OrderItem"},"type":"array"},"read_only":{"description":"True for sample data (the seed); it cannot be changed.","readOnly":true,"type":"boolean"},"status":{"description":"pending to paid or cancelled; paid to fulfilled or refunded; fulfilled to refunded. A cancel puts the stock back.","enum":["pending","paid","fulfilled","cancelled","refunded"],"type":"string"},"total_minor":{"description":"The sum of the lines.","format":"int64","minimum":0,"readOnly":true,"type":"integer"},"updated_at":{"format":"date-time","readOnly":true,"type":"string"},"user":{"$ref":"#/components/schemas/NullableUser"},"user_id":{"description":"The cart's user; null once that user is deleted.","format":"uuid","readOnly":true,"type":["string","null"]}},"required":["id"],"type":"object"},"OrderCreate":{"additionalProperties":false,"properties":{"cart_id":{"description":"An active cart of yours with at least one line. Its lines become the order's at the current prices, the stock is taken, and the cart becomes ordered.","format":"uuid","type":"string"}},"required":["cart_id"],"type":"object"},"OrderItem":{"additionalProperties":false,"description":"A line of an order, read only. It keeps the product's sku, name and price from when the order was placed. Every field is present unless `fields[order-items]` asks for fewer.","properties":{"created_at":{"format":"date-time","type":"string"},"currency":{"pattern":"^[A-Z]{3}$","type":"string"},"id":{"format":"uuid","type":"string"},"line_total_minor":{"format":"int64","minimum":0,"type":"integer"},"name":{"type":"string"},"order_id":{"format":"uuid","type":"string"},"product_id":{"description":"Null once the product is deleted.","format":"uuid","type":["string","null"]},"quantity":{"maximum":999,"minimum":1,"type":"integer"},"read_only":{"description":"True for sample data (the seed); it cannot be changed.","readOnly":true,"type":"boolean"},"sku":{"type":"string"},"unit_price_minor":{"format":"int64","minimum":0,"type":"integer"}},"required":["id"],"type":"object"},"OrderItemList":{"additionalProperties":false,"properties":{"data":{"items":{"$ref":"#/components/schemas/OrderItem"},"type":"array"},"meta":{"$ref":"#/components/schemas/ListMeta"}},"required":["data","meta"],"type":"object"},"OrderList":{"additionalProperties":false,"properties":{"data":{"items":{"$ref":"#/components/schemas/Order"},"type":"array"},"meta":{"$ref":"#/components/schemas/ListMeta"}},"required":["data","meta"],"type":"object"},"OrderPatch":{"additionalProperties":false,"properties":{"status":{"enum":["paid","fulfilled","cancelled","refunded"],"type":"string"}},"required":["status"],"type":"object"},"Post":{"additionalProperties":false,"description":"Every field is present unless `fields[posts]` asks for fewer. `user` and `comments` are there only with `include`.","properties":{"body":{"maxLength":10000,"minLength":1,"type":"string"},"comments":{"description":"The comments you can see, oldest first.","items":{"$ref":"#/components/schemas/Comment"},"type":"array"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"published_at":{"description":"Set by the server when the post is first published; null for a draft.","format":"date-time","readOnly":true,"type":["string","null"]},"read_only":{"description":"True for sample data (the seed); it cannot be changed.","readOnly":true,"type":"boolean"},"status":{"enum":["draft","published"],"type":"string"},"title":{"examples":["Cursor paging in five minutes"],"maxLength":200,"minLength":1,"type":"string"},"updated_at":{"format":"date-time","readOnly":true,"type":"string"},"user":{"$ref":"#/components/schemas/NullableUser"},"user_id":{"description":"The author; a user you can see.","format":"uuid","type":"string"}},"required":["id"],"type":"object"},"PostCreate":{"additionalProperties":false,"properties":{"body":{"maxLength":10000,"minLength":1,"pattern":"\\S","type":"string"},"status":{"default":"draft","enum":["draft","published"],"type":"string"},"title":{"description":"Not blank; spaces at the ends are dropped.","maxLength":200,"minLength":1,"pattern":"\\S","type":"string"},"user_id":{"format":"uuid","type":"string"}},"required":["user_id","title","body"],"type":"object"},"PostList":{"additionalProperties":false,"properties":{"data":{"items":{"$ref":"#/components/schemas/Post"},"type":"array"},"meta":{"$ref":"#/components/schemas/ListMeta"}},"required":["data","meta"],"type":"object"},"PostPatch":{"additionalProperties":false,"minProperties":1,"properties":{"body":{"maxLength":10000,"minLength":1,"pattern":"\\S","type":"string"},"status":{"description":"Back to `draft` clears `published_at`.","enum":["draft","published"],"type":"string"},"title":{"description":"Not blank; spaces at the ends are dropped.","maxLength":200,"minLength":1,"pattern":"\\S","type":"string"},"user_id":{"format":"uuid","type":"string"}},"type":"object"},"Problem":{"additionalProperties":false,"description":"RFC 9457 Problem Details, sent as `application/problem+json` on every 4xx and 5xx answer.","properties":{"code":{"$ref":"#/components/schemas/ErrorCode"},"detail":{"description":"What went wrong this time, in plain words.","type":"string"},"errors":{"description":"One entry per field that failed, on `validation_failed`.","items":{"$ref":"#/components/schemas/FieldError"},"type":"array"},"instance":{"description":"The request path.","examples":["/public/v3/users/0190a8e4-0000-7000-8000-000000000001"],"type":"string"},"request_id":{"description":"The `X-Request-Id` of this answer; quote it when you ask for help.","type":"string"},"status":{"examples":[404],"maximum":599,"minimum":400,"type":"integer"},"title":{"description":"The HTTP status text.","examples":["Not Found"],"type":"string"},"type":{"description":"Links to the explanation of `code`.","examples":["https://www.gorest.co.in/docs/api/errors#not_found"],"format":"uri","type":"string"}},"required":["type","title","status","code"],"type":"object"},"Product":{"additionalProperties":false,"description":"Every field is present unless `fields[products]` asks for fewer. `category` is there only with `include`.","properties":{"category":{"$ref":"#/components/schemas/Category"},"category_id":{"format":"uuid","type":"string"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"currency":{"description":"An ISO 4217 code (see /currencies). Fixed once the product is made.","examples":["INR"],"pattern":"^[A-Z]{3}$","type":"string"},"description":{"maxLength":5000,"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"name":{"examples":["Wireless earbuds"],"maxLength":200,"minLength":1,"type":"string"},"price_minor":{"description":"The price in minor units of `currency`: 249900 with INR is ₹2,499.00.","examples":[249900],"format":"int64","maximum":100000000000,"minimum":0,"type":"integer"},"read_only":{"description":"True for sample data (the seed); it cannot be changed.","readOnly":true,"type":"boolean"},"sku":{"description":"Your code for the product, unique in your account.","examples":["EL-1001"],"pattern":"^[A-Za-z0-9._-]{1,64}$","type":"string"},"stock":{"description":"Units left; null when stock is not tracked (sample products). An order takes from it and a cancel puts it back.","minimum":0,"type":["integer","null"]},"updated_at":{"format":"date-time","readOnly":true,"type":"string"}},"required":["id"],"type":"object"},"ProductCreate":{"additionalProperties":false,"properties":{"category_id":{"description":"A category (see /categories).","format":"uuid","type":"string"},"currency":{"description":"An ISO 4217 code, either case.","pattern":"^[A-Za-z]{3}$","type":"string"},"description":{"default":"","maxLength":5000,"type":"string"},"name":{"description":"Not blank; spaces at the ends are dropped.","maxLength":200,"minLength":1,"pattern":"\\S","type":"string"},"price_minor":{"format":"int64","maximum":100000000000,"minimum":0,"type":"integer"},"sku":{"description":"Your code for the product, unique in your account.","examples":["EL-1001"],"pattern":"^[A-Za-z0-9._-]{1,64}$","type":"string"},"stock":{"description":"Units in stock; null or left out to not track stock.","maximum":1000000,"minimum":0,"type":["integer","null"]}},"required":["category_id","sku","name","price_minor","currency"],"type":"object"},"ProductList":{"additionalProperties":false,"properties":{"data":{"items":{"$ref":"#/components/schemas/Product"},"type":"array"},"meta":{"$ref":"#/components/schemas/ListMeta"}},"required":["data","meta"],"type":"object"},"ProductPatch":{"additionalProperties":false,"description":"`currency` cannot change, as cart lines carry it.","minProperties":1,"properties":{"category_id":{"format":"uuid","type":"string"},"description":{"maxLength":5000,"type":"string"},"name":{"description":"Not blank; spaces at the ends are dropped.","maxLength":200,"minLength":1,"pattern":"\\S","type":"string"},"price_minor":{"description":"A new price; orders already placed keep theirs.","format":"int64","maximum":100000000000,"minimum":0,"type":"integer"},"sku":{"description":"Your code for the product, unique in your account.","examples":["EL-1001"],"pattern":"^[A-Za-z0-9._-]{1,64}$","type":"string"},"stock":{"description":"Units in stock, or null to stop tracking.","maximum":1000000,"minimum":0,"type":["integer","null"],"x-go-type":"json.RawMessage","x-go-type-skip-optional-pointer":true}},"type":"object"},"Scope":{"description":"`v2` lets a token call the v2 API; the others are `\u003cresource\u003e:read` and `\u003cresource\u003e:write` for v3.","enum":["v2","users:read","users:write","posts:read","posts:write","comments:read","comments:write","tasks:read","tasks:write","products:read","products:write","carts:read","carts:write","orders:read","orders:write","access-tokens:read","access-tokens:write","my-data:read","my-data:write","stream:read"],"type":"string"},"StreamTicket":{"additionalProperties":false,"properties":{"expires_at":{"description":"The ticket does not work after this, 60 seconds from now.","format":"date-time","type":"string"},"ticket":{"description":"For `?ticket=` on `GET /stream/changes`, once.","pattern":"^[A-Za-z0-9_-]{43}$","type":"string"}},"required":["ticket","expires_at"],"type":"object"},"Task":{"additionalProperties":false,"description":"Every field is present unless `fields[tasks]` asks for fewer. `user` is there only with `include`.","properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"description":{"maxLength":5000,"type":"string"},"due_on":{"examples":["2026-11-15"],"format":"date","type":["string","null"]},"id":{"format":"uuid","readOnly":true,"type":"string"},"priority":{"enum":["low","medium","high","urgent"],"type":"string"},"read_only":{"description":"True for sample data (the seed); it cannot be changed.","readOnly":true,"type":"boolean"},"status":{"enum":["todo","in_progress","done"],"type":"string"},"title":{"examples":["Add paging to the orders list"],"maxLength":200,"minLength":1,"type":"string"},"updated_at":{"format":"date-time","readOnly":true,"type":"string"},"user":{"$ref":"#/components/schemas/NullableUser"},"user_id":{"description":"Who the task is for; null when nobody.","format":"uuid","type":["string","null"]}},"required":["id"],"type":"object"},"TaskCreate":{"additionalProperties":false,"properties":{"description":{"default":"","maxLength":5000,"type":"string"},"due_on":{"format":"date","type":["string","null"]},"priority":{"default":"medium","enum":["low","medium","high","urgent"],"type":"string"},"status":{"default":"todo","enum":["todo","in_progress","done"],"type":"string"},"title":{"description":"Not blank; spaces at the ends are dropped.","maxLength":200,"minLength":1,"pattern":"\\S","type":"string"},"user_id":{"description":"A user you can see.","format":"uuid","type":["string","null"]}},"required":["title"],"type":"object"},"TaskList":{"additionalProperties":false,"properties":{"data":{"items":{"$ref":"#/components/schemas/Task"},"type":"array"},"meta":{"$ref":"#/components/schemas/ListMeta"}},"required":["data","meta"],"type":"object"},"TaskPatch":{"additionalProperties":false,"minProperties":1,"properties":{"description":{"maxLength":5000,"type":"string"},"due_on":{"description":"A date, or null for none.","format":"date","type":["string","null"],"x-go-type":"json.RawMessage","x-go-type-skip-optional-pointer":true},"priority":{"enum":["low","medium","high","urgent"],"type":"string"},"status":{"enum":["todo","in_progress","done"],"type":"string"},"title":{"description":"Not blank; spaces at the ends are dropped.","maxLength":200,"minLength":1,"pattern":"\\S","type":"string"},"user_id":{"description":"A user you can see, or null for nobody.","format":"uuid","type":["string","null"],"x-go-type":"json.RawMessage","x-go-type-skip-optional-pointer":true}},"type":"object"},"User":{"additionalProperties":false,"description":"Every field is present unless `fields[users]` asks for fewer.","properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"email":{"examples":["aarav.sharma@example.com"],"format":"email","maxLength":254,"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"name":{"examples":["Aarav Sharma"],"maxLength":200,"minLength":1,"type":"string"},"read_only":{"description":"True for sample data (the seed); it cannot be changed.","readOnly":true,"type":"boolean"},"status":{"enum":["active","inactive"],"type":"string"},"updated_at":{"format":"date-time","readOnly":true,"type":"string"}},"required":["id"],"type":"object"},"UserCreate":{"additionalProperties":false,"properties":{"email":{"format":"email","maxLength":254,"minLength":3,"type":"string"},"name":{"description":"Not blank; spaces at the ends are dropped.","maxLength":200,"minLength":1,"pattern":"\\S","type":"string"},"status":{"default":"active","enum":["active","inactive"],"type":"string"}},"required":["name","email"],"type":"object"},"UserList":{"additionalProperties":false,"properties":{"data":{"items":{"$ref":"#/components/schemas/User"},"type":"array"},"meta":{"$ref":"#/components/schemas/ListMeta"}},"required":["data","meta"],"type":"object"},"UserPatch":{"additionalProperties":false,"minProperties":1,"properties":{"email":{"format":"email","maxLength":254,"minLength":3,"type":"string"},"name":{"description":"Not blank; spaces at the ends are dropped.","maxLength":200,"minLength":1,"pattern":"\\S","type":"string"},"status":{"enum":["active","inactive"],"type":"string"}},"type":"object"}},"securitySchemes":{"bearerAuth":{"description":"A GoRest API token in `Authorization: Bearer \u003ctoken\u003e` (RFC 6750). v3 takes no token in the query. Operations list the scopes they need, `\u003cresource\u003e:read` or `\u003cresource\u003e:write`; a missing scope answers 403 with `WWW-Authenticate: Bearer error=\"insufficient_scope\"`.\n","scheme":"bearer","type":"http"},"streamTicket":{"description":"A ticket from `POST /stream/tickets`, only for `GET /stream/changes`. It works once, within 60 seconds, and stands for the token that made it.","in":"query","name":"ticket","type":"apiKey"}}},"info":{"contact":{"name":"GoRest","url":"https://www.gorest.co.in/contact"},"description":"GoRest v3 is in alpha: every operation may still change. An operation marked `x-stability-level: stable` never gets a breaking change.\n\nErrors are Problem Details (RFC 9457) with a stable `code`; the codes are listed at https://www.gorest.co.in/docs/api/errors.\n\nEvery answer carries `X-Request-Id`, and the rate limit fields `RateLimit-Policy` and `RateLimit` (draft-ietf-httpapi-ratelimit-headers). With a token, the token's own limit applies; with no token, 120 calls a minute per IP. A call with no token sees only the sample data (the seed), read only. With a token you see your own rows and the seed; after `POST /my-data/reset` with sample data, your own copies instead of the seed.\n","license":{"name":"Terms of use","url":"https://www.gorest.co.in/terms"},"summary":"A free fake REST API for testing and prototyping.","title":"GoRest API v3","version":"3.0.0-alpha.1"},"openapi":"3.1.0","paths":{"/access-tokens":{"get":{"description":"Every token of your account, the primary one first, then the newest. An account has at most 50, so the list is one page. The values are never shown again.","operationId":"listAccessTokens","parameters":[{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessTokenList"}}},"description":"Your tokens.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"304":{"$ref":"#/components/responses/NotModified"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["access-tokens:read"]}],"summary":"List your tokens","tags":["Access tokens"],"x-stability-level":"alpha"},"post":{"description":"The answer holds the value once; only its SHA-256 is kept. The new token gets the scopes you name, each of which the calling token must hold (403 otherwise), the calling token's rate limit, and an end within a year that is not after the calling token's own end (a year from now, or the calling token's end if sooner, when none is sent). It is never the primary token, and revoking the calling token later revokes it too.","operationId":"createAccessToken","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessTokenCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessTokenCreated"}}},"description":"The new token, with its value. Not stored by any cache.","headers":{"Location":{"$ref":"#/components/headers/Location"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/TooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["access-tokens:write"]}],"summary":"Make a token","tags":["Access tokens"],"x-stability-level":"alpha"}},"/access-tokens/{id}":{"delete":{"description":"The token stops working at once, and so do the tokens it made, and theirs. A token may revoke itself. The primary token cannot be revoked (409); refresh it on the site instead.","operationId":"deleteAccessToken","responses":{"204":{"description":"Revoked."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["access-tokens:write"]}],"summary":"Revoke one of your tokens","tags":["Access tokens"],"x-stability-level":"alpha"},"get":{"operationId":"getAccessToken","parameters":[{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessToken"}}},"description":"The token, without its value.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["access-tokens:read"]}],"summary":"Get one of your tokens","tags":["Access tokens"],"x-stability-level":"alpha"},"parameters":[{"$ref":"#/components/parameters/Id"}]},"/cart-items":{"get":{"operationId":"listCartItems","parameters":[{"$ref":"#/components/parameters/PageSize"},{"$ref":"#/components/parameters/PageAfter"},{"$ref":"#/components/parameters/PageNumber"},{"$ref":"#/components/parameters/PageCount"},{"description":"`filter[cart_id]=` (one cart), `filter[product_id]=` (one product). An id you cannot see gives an empty list.","explode":true,"in":"query","name":"filter","schema":{"additionalProperties":false,"properties":{"cart_id":{"format":"uuid","type":"string","x-go-type":"string"},"product_id":{"format":"uuid","type":"string","x-go-type":"string"}},"type":"object"},"style":"deepObject"},{"description":"One field; a leading `-` sorts descending. Default `-created_at`.","in":"query","name":"sort","schema":{"enum":["created_at","-created_at"],"type":"string"}},{"description":"`fields[cart-items]=product_id,quantity` returns only those fields; included items are added whole.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"cart-items":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Adds related items to each item, one level deep: `product`. Comma separated.","in":"query","name":"include","schema":{"maxLength":100,"pattern":"^(product)(,(product))*$","type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartItemList"}}},"description":"One page of cart items.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Link":{"$ref":"#/components/headers/Link"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":["carts:read"]}],"summary":"List cart items","tags":["Shop"],"x-stability-level":"alpha"},"post":{"operationId":"createCartItem","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartItemCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartItem"}}},"description":"The new cartitem.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Location":{"$ref":"#/components/headers/Location"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/TooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["carts:write"]}],"summary":"Add a line to a cart","tags":["Shop"],"x-stability-level":"alpha"}},"/cart-items/{id}":{"delete":{"operationId":"deleteCartItem","parameters":[{"$ref":"#/components/parameters/IfMatch"}],"responses":{"204":{"description":"Deleted."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"412":{"$ref":"#/components/responses/PreconditionFailed"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["carts:write"]}],"summary":"Delete a cart line","tags":["Shop"],"x-stability-level":"alpha"},"get":{"operationId":"getCartItem","parameters":[{"description":"`fields[cart-items]=product_id,quantity` returns only those fields; included items are added whole.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"cart-items":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Adds related items to each item, one level deep: `product`. Comma separated.","in":"query","name":"include","schema":{"maxLength":100,"pattern":"^(product)(,(product))*$","type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartItem"}}},"description":"The cart line. With `include` the ETag is weak, as it covers the included items too.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":["carts:read"]}],"summary":"Get a cart line","tags":["Shop"],"x-stability-level":"alpha"},"parameters":[{"$ref":"#/components/parameters/Id"}],"patch":{"operationId":"updateCartItem","parameters":[{"$ref":"#/components/parameters/IfMatch"},{"$ref":"#/components/parameters/Prefer"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartItemPatch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/CartItemPatch"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartItem"}}},"description":"The changed cart line.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"204":{"$ref":"#/components/responses/Minimal"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"412":{"$ref":"#/components/responses/PreconditionFailed"},"413":{"$ref":"#/components/responses/TooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["carts:write"]}],"summary":"Change a cart line (JSON Merge Patch)","tags":["Shop"],"x-stability-level":"alpha"}},"/carts":{"get":{"operationId":"listCarts","parameters":[{"$ref":"#/components/parameters/PageSize"},{"$ref":"#/components/parameters/PageAfter"},{"$ref":"#/components/parameters/PageNumber"},{"$ref":"#/components/parameters/PageCount"},{"description":"`filter[user_id]=` (one user), `filter[status]=active,abandoned,ordered` (any of). An id you cannot see gives an empty list.","explode":true,"in":"query","name":"filter","schema":{"additionalProperties":false,"properties":{"status":{"maxLength":100,"pattern":"^(active|abandoned|ordered)(,(active|abandoned|ordered))*$","type":"string"},"user_id":{"format":"uuid","type":"string","x-go-type":"string"}},"type":"object"},"style":"deepObject"},{"description":"One field; a leading `-` sorts descending. Default `-created_at`.","in":"query","name":"sort","schema":{"enum":["created_at","-created_at"],"type":"string"}},{"description":"`fields[carts]=status,currency` returns only those fields; included items are added whole.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"carts":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Adds related items to each item, one level deep: `user`, `items`. Comma separated.","in":"query","name":"include","schema":{"maxLength":100,"pattern":"^(user|items)(,(user|items))*$","type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartList"}}},"description":"One page of carts.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Link":{"$ref":"#/components/headers/Link"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":["carts:read"]}],"summary":"List carts","tags":["Shop"],"x-stability-level":"alpha"},"post":{"operationId":"createCart","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cart"}}},"description":"The new cart.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Location":{"$ref":"#/components/headers/Location"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/TooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["carts:write"]}],"summary":"Create a cart","tags":["Shop"],"x-stability-level":"alpha"}},"/carts/{id}":{"delete":{"operationId":"deleteCart","parameters":[{"$ref":"#/components/parameters/IfMatch"}],"responses":{"204":{"description":"Deleted."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"412":{"$ref":"#/components/responses/PreconditionFailed"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["carts:write"]}],"summary":"Delete a cart","tags":["Shop"],"x-stability-level":"alpha"},"get":{"operationId":"getCart","parameters":[{"description":"`fields[carts]=status,currency` returns only those fields; included items are added whole.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"carts":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Adds related items to each item, one level deep: `user`, `items`. Comma separated.","in":"query","name":"include","schema":{"maxLength":100,"pattern":"^(user|items)(,(user|items))*$","type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cart"}}},"description":"The cart. With `include` the ETag is weak, as it covers the included items too.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":["carts:read"]}],"summary":"Get a cart","tags":["Shop"],"x-stability-level":"alpha"},"parameters":[{"$ref":"#/components/parameters/Id"}],"patch":{"operationId":"updateCart","parameters":[{"$ref":"#/components/parameters/IfMatch"},{"$ref":"#/components/parameters/Prefer"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartPatch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/CartPatch"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cart"}}},"description":"The changed cart.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"204":{"$ref":"#/components/responses/Minimal"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"412":{"$ref":"#/components/responses/PreconditionFailed"},"413":{"$ref":"#/components/responses/TooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["carts:write"]}],"summary":"Change a cart (JSON Merge Patch)","tags":["Shop"],"x-stability-level":"alpha"}},"/categories":{"get":{"operationId":"listCategories","parameters":[{"$ref":"#/components/parameters/PageSize"},{"$ref":"#/components/parameters/PageAfter"},{"$ref":"#/components/parameters/PageNumber"},{"$ref":"#/components/parameters/PageCount"},{"$ref":"#/components/parameters/Search"},{"description":"One field; a leading `-` sorts descending. Default `name`.","in":"query","name":"sort","schema":{"enum":["name","-name"],"type":"string"}},{"description":"`fields[categories]=name,slug` returns only those fields; included items are added whole.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"categories":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryList"}}},"description":"One page of categories.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Link":{"$ref":"#/components/headers/Link"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[],"summary":"List categories","tags":["Shop"],"x-stability-level":"alpha"}},"/categories/{id}":{"get":{"operationId":"getCategory","parameters":[{"description":"`fields[categories]=name,slug` returns only those fields; included items are added whole.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"categories":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Category"}}},"description":"The category.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[],"summary":"Get a category","tags":["Shop"],"x-stability-level":"alpha"},"parameters":[{"$ref":"#/components/parameters/Id"}]},"/comments":{"get":{"operationId":"listComments","parameters":[{"$ref":"#/components/parameters/PageSize"},{"$ref":"#/components/parameters/PageAfter"},{"$ref":"#/components/parameters/PageNumber"},{"$ref":"#/components/parameters/PageCount"},{"$ref":"#/components/parameters/Search"},{"description":"`filter[post_id]=`, `filter[user_id]=` (one id each). An id you cannot see gives an empty list.","explode":true,"in":"query","name":"filter","schema":{"additionalProperties":false,"properties":{"post_id":{"format":"uuid","type":"string","x-go-type":"string"},"user_id":{"format":"uuid","type":"string","x-go-type":"string"}},"type":"object"},"style":"deepObject"},{"description":"One field; a leading `-` sorts descending. Default `-created_at`.","in":"query","name":"sort","schema":{"enum":["created_at","-created_at"],"type":"string"}},{"description":"`fields[comments]=id,body` returns only those fields; included items are added whole.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"comments":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Adds related items to each item, one level deep: `post`, `user`. Comma separated.","in":"query","name":"include","schema":{"maxLength":100,"pattern":"^(post|user)(,(post|user))*$","type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentList"}}},"description":"One page of comments.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Link":{"$ref":"#/components/headers/Link"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":["comments:read"]}],"summary":"List comments","tags":["Comments"],"x-stability-level":"alpha"},"post":{"operationId":"createComment","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}},"description":"The new comment.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Location":{"$ref":"#/components/headers/Location"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/TooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["comments:write"]}],"summary":"Create a comment","tags":["Comments"],"x-stability-level":"alpha"}},"/comments/{id}":{"delete":{"operationId":"deleteComment","parameters":[{"$ref":"#/components/parameters/IfMatch"}],"responses":{"204":{"description":"Deleted."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"412":{"$ref":"#/components/responses/PreconditionFailed"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["comments:write"]}],"summary":"Delete a comment","tags":["Comments"],"x-stability-level":"alpha"},"get":{"operationId":"getComment","parameters":[{"description":"`fields[comments]=id,body` returns only those fields; included items are added whole.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"comments":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Adds related items to each item, one level deep: `post`, `user`. Comma separated.","in":"query","name":"include","schema":{"maxLength":100,"pattern":"^(post|user)(,(post|user))*$","type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}},"description":"The comment. With `include` the ETag is weak, as it covers the included items too.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":["comments:read"]}],"summary":"Get a comment","tags":["Comments"],"x-stability-level":"alpha"},"parameters":[{"$ref":"#/components/parameters/Id"}],"patch":{"operationId":"updateComment","parameters":[{"$ref":"#/components/parameters/IfMatch"},{"$ref":"#/components/parameters/Prefer"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentPatch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/CommentPatch"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}},"description":"The changed comment.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"204":{"$ref":"#/components/responses/Minimal"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"412":{"$ref":"#/components/responses/PreconditionFailed"},"413":{"$ref":"#/components/responses/TooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["comments:write"]}],"summary":"Change a comment (JSON Merge Patch)","tags":["Comments"],"x-stability-level":"alpha"}},"/countries":{"get":{"operationId":"listCountries","parameters":[{"$ref":"#/components/parameters/PageSize"},{"$ref":"#/components/parameters/PageAfter"},{"$ref":"#/components/parameters/PageNumber"},{"$ref":"#/components/parameters/PageCount"},{"$ref":"#/components/parameters/Search"},{"description":"`filter[region]=Asia,Europe` (any of the UN M49 continents), `filter[currency_code]=INR` (either case). `search` matches the codes and the name.","explode":true,"in":"query","name":"filter","schema":{"additionalProperties":false,"properties":{"currency_code":{"pattern":"^[A-Za-z]{3}$","type":"string"},"region":{"maxLength":100,"pattern":"^(Africa|Americas|Asia|Europe|Oceania)(,(Africa|Americas|Asia|Europe|Oceania))*$","type":"string"}},"type":"object"},"style":"deepObject"},{"description":"One field; a leading `-` sorts descending. Default `name`.","in":"query","name":"sort","schema":{"enum":["name","-name","code","-code"],"type":"string"}},{"description":"`fields[countries]=name,currency_code` returns only those fields; `code` is always there.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"countries":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"`currency` adds the currency of each item.","in":"query","name":"include","schema":{"enum":["currency"],"type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryList"}}},"description":"One page of countries.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Link":{"$ref":"#/components/headers/Link"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[],"summary":"List countries","tags":["Reference"],"x-stability-level":"alpha"}},"/countries/{code}":{"get":{"operationId":"getCountry","parameters":[{"description":"`fields[countries]=name,currency_code` returns only those fields; `code` is always there.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"countries":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"`currency` adds the currency of each item.","in":"query","name":"include","schema":{"enum":["currency"],"type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Country"}}},"description":"The item.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[],"summary":"Get a country","tags":["Reference"],"x-stability-level":"alpha"},"parameters":[{"description":"The ISO code, in either case: `IN`.","in":"path","name":"code","required":true,"schema":{"pattern":"^[A-Za-z]{2}$","type":"string"}}]},"/currencies":{"get":{"operationId":"listCurrencies","parameters":[{"$ref":"#/components/parameters/PageSize"},{"$ref":"#/components/parameters/PageAfter"},{"$ref":"#/components/parameters/PageNumber"},{"$ref":"#/components/parameters/PageCount"},{"$ref":"#/components/parameters/Search"},{"description":"`filter[minor_unit]=0,3` (any of).","explode":true,"in":"query","name":"filter","schema":{"additionalProperties":false,"properties":{"minor_unit":{"maxLength":20,"pattern":"^[0-4](,[0-4])*$","type":"string"}},"type":"object"},"style":"deepObject"},{"description":"One field; a leading `-` sorts descending. Default `name`.","in":"query","name":"sort","schema":{"enum":["name","-name","code","-code"],"type":"string"}},{"description":"`fields[currencies]=name,minor_unit` returns only those fields; `code` is always there.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"currencies":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyList"}}},"description":"One page of currencies.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Link":{"$ref":"#/components/headers/Link"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[],"summary":"List currencies","tags":["Reference"],"x-stability-level":"alpha"}},"/currencies/{code}":{"get":{"operationId":"getCurrency","parameters":[{"description":"`fields[currencies]=name,minor_unit` returns only those fields; `code` is always there.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"currencies":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Currency"}}},"description":"The item.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[],"summary":"Get a currency","tags":["Reference"],"x-stability-level":"alpha"},"parameters":[{"description":"The ISO code, in either case: `INR`.","in":"path","name":"code","required":true,"schema":{"pattern":"^[A-Za-z]{3}$","type":"string"}}]},"/http/delay/{ms}":{"get":{"description":"For testing loading states and timeouts. The wait stops early when the client goes away. When too many waits run at once the answer is 503 with `Retry-After`.","operationId":"getHttpDelay","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpDelay"}}},"description":"The wait is over."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/Unavailable"}},"security":[{},{"bearerAuth":[]}],"summary":"Answer after a wait","tags":["HTTP"],"x-stability-level":"alpha"},"parameters":[{"description":"How long to wait, 0 to 10,000 milliseconds.","in":"path","name":"ms","required":true,"schema":{"maximum":10000,"minimum":0,"type":"integer"}}]},"/http/echo":{"delete":{"operationId":"echoDelete","requestBody":{"content":{"*/*":{}},"description":"Any body of any type, up to 64 KiB."},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Echo"}}},"description":"What the API received."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"413":{"$ref":"#/components/responses/TooLarge"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":[]}],"summary":"Echo a DELETE request","tags":["HTTP"],"x-stability-level":"alpha"},"get":{"operationId":"echoGet","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Echo"}}},"description":"What the API received."},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":[]}],"summary":"Echo a GET request","tags":["HTTP"],"x-stability-level":"alpha"},"patch":{"operationId":"echoPatch","requestBody":{"content":{"*/*":{}},"description":"Any body of any type, up to 64 KiB."},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Echo"}}},"description":"What the API received."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"413":{"$ref":"#/components/responses/TooLarge"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":[]}],"summary":"Echo a PATCH request","tags":["HTTP"],"x-stability-level":"alpha"},"post":{"operationId":"echoPost","requestBody":{"content":{"*/*":{}},"description":"Any body of any type, up to 64 KiB."},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Echo"}}},"description":"What the API received."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"413":{"$ref":"#/components/responses/TooLarge"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":[]}],"summary":"Echo a POST request","tags":["HTTP"],"x-stability-level":"alpha"},"put":{"operationId":"echoPut","requestBody":{"content":{"*/*":{}},"description":"Any body of any type, up to 64 KiB."},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Echo"}}},"description":"What the API received."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"413":{"$ref":"#/components/responses/TooLarge"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":[]}],"summary":"Echo a PUT request","tags":["HTTP"],"x-stability-level":"alpha"}},"/http/headers":{"get":{"description":"The headers the API received, without `Authorization`, `Cookie` and the headers the proxies on the way add.","operationId":"getHttpHeaders","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"headers":{"$ref":"#/components/schemas/Headers"}},"required":["headers"],"type":"object"}}},"description":"The headers."},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":[]}],"summary":"Show the request headers","tags":["HTTP"],"x-stability-level":"alpha"}},"/http/ip":{"get":{"operationId":"getHttpIp","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"ip":{"examples":["203.0.113.7"],"type":"string"}},"required":["ip"],"type":"object"}}},"description":"The IP the call came from."},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":[]}],"summary":"Show your IP address","tags":["HTTP"],"x-stability-level":"alpha"}},"/http/status/{code}":{"get":{"description":"For testing how a client handles each status. 2xx and 3xx answer an `HttpStatus` body (204, 205 and 304 none); 4xx and 5xx answer Problem Details with the code `requested_status`. A 401 has `WWW-Authenticate`, a 405 `Allow` and a 429 or 503 `Retry-After`, as real ones do.","operationId":"getHttpStatus","responses":{"204":{"description":"No Content, as asked."},"205":{"description":"Reset Content, as asked."},"304":{"description":"Not Modified, as asked."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpStatus"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The status asked for; also the API's own refusals (400 for a code out of range, 401, 429)."}},"security":[{},{"bearerAuth":[]}],"summary":"Answer with a status you choose","tags":["HTTP"],"x-stability-level":"alpha"},"parameters":[{"description":"The status to answer, 200 to 599.","in":"path","name":"code","required":true,"schema":{"maximum":599,"minimum":200,"type":"integer"}}]},"/http/uuid":{"get":{"description":"A new UUIDv7, which sorts by the time it was made.","operationId":"getHttpUuid","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"uuid":{"examples":["019a3c4e-7b10-7d2a-9c4e-2f1b6a8d0e55"],"format":"uuid","type":"string"}},"required":["uuid"],"type":"object"}}},"description":"A new UUID."},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":[]}],"summary":"Make a UUID","tags":["HTTP"],"x-stability-level":"alpha"}},"/my-data":{"get":{"description":"How many rows of each resource your account holds and the most it may hold, and whether your lists show your copy of the sample data.","operationId":"getMyData","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyData"}}},"description":"Your counts."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["my-data:read"]}],"summary":"Your counts and caps","tags":["My data"],"x-stability-level":"alpha"}},"/my-data/reset":{"post":{"description":"Deletes every v3 row your account owns (users, posts, comments, tasks, products, carts and orders; your tokens stay) in one transaction. With `{\"sample_data\": true}` it then copies the sample data in as your own rows, with new ids, so you can change them; your lists show these copies instead of the sample data. This is the only way to free the order caps, as orders cannot be deleted. A reset while another reset of the account runs gets 409.","operationId":"resetMyData","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyDataReset"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyData"}}},"description":"Your counts after the reset."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/TooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["my-data:write"]}],"summary":"Reset your data","tags":["My data"],"x-stability-level":"alpha"}},"/openapi.json":{"get":{"operationId":"getOpenapiJson","parameters":[{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"The OpenAPI document.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControl"},"ETag":{"$ref":"#/components/headers/ETag"}}},"304":{"$ref":"#/components/responses/NotModified"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[],"summary":"This spec as JSON","tags":["Spec"],"x-stability-level":"alpha"}},"/openapi.yaml":{"get":{"operationId":"getOpenapiYaml","parameters":[{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/yaml":{"schema":{"type":"object"}}},"description":"The OpenAPI document, as written.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControl"},"ETag":{"$ref":"#/components/headers/ETag"}}},"304":{"$ref":"#/components/responses/NotModified"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[],"summary":"This spec as YAML","tags":["Spec"],"x-stability-level":"alpha"}},"/order-items":{"get":{"operationId":"listOrderItems","parameters":[{"$ref":"#/components/parameters/PageSize"},{"$ref":"#/components/parameters/PageAfter"},{"$ref":"#/components/parameters/PageNumber"},{"$ref":"#/components/parameters/PageCount"},{"$ref":"#/components/parameters/Search"},{"description":"`filter[order_id]=` (one order), `filter[product_id]=` (one product). An id you cannot see gives an empty list. `search` matches the name and sku.","explode":true,"in":"query","name":"filter","schema":{"additionalProperties":false,"properties":{"order_id":{"format":"uuid","type":"string","x-go-type":"string"},"product_id":{"format":"uuid","type":"string","x-go-type":"string"}},"type":"object"},"style":"deepObject"},{"description":"One field; a leading `-` sorts descending. Default `-created_at`.","in":"query","name":"sort","schema":{"enum":["created_at","-created_at"],"type":"string"}},{"description":"`fields[order-items]=name,quantity` returns only those fields; included items are added whole.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"order-items":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderItemList"}}},"description":"One page of order items.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Link":{"$ref":"#/components/headers/Link"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":["orders:read"]}],"summary":"List order items","tags":["Shop"],"x-stability-level":"alpha"}},"/order-items/{id}":{"get":{"operationId":"getOrderItem","parameters":[{"description":"`fields[order-items]=name,quantity` returns only those fields; included items are added whole.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"order-items":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderItem"}}},"description":"The order line.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":["orders:read"]}],"summary":"Get a order line","tags":["Shop"],"x-stability-level":"alpha"},"parameters":[{"$ref":"#/components/parameters/Id"}]},"/orders":{"get":{"operationId":"listOrders","parameters":[{"$ref":"#/components/parameters/PageSize"},{"$ref":"#/components/parameters/PageAfter"},{"$ref":"#/components/parameters/PageNumber"},{"$ref":"#/components/parameters/PageCount"},{"description":"`filter[user_id]=` (one user), `filter[status]=pending,paid` (any of). An id you cannot see gives an empty list.","explode":true,"in":"query","name":"filter","schema":{"additionalProperties":false,"properties":{"status":{"maxLength":100,"pattern":"^(pending|paid|fulfilled|cancelled|refunded)(,(pending|paid|fulfilled|cancelled|refunded))*$","type":"string"},"user_id":{"format":"uuid","type":"string","x-go-type":"string"}},"type":"object"},"style":"deepObject"},{"description":"One field; a leading `-` sorts descending. Default `-created_at`.","in":"query","name":"sort","schema":{"enum":["created_at","-created_at","total_minor","-total_minor"],"type":"string"}},{"description":"`fields[orders]=status,total_minor` returns only those fields; included items are added whole.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"orders":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Adds related items to each item, one level deep: `user`, `items`. Comma separated.","in":"query","name":"include","schema":{"maxLength":100,"pattern":"^(user|items)(,(user|items))*$","type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderList"}}},"description":"One page of orders.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Link":{"$ref":"#/components/headers/Link"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":["orders:read"]}],"summary":"List orders","tags":["Shop"],"x-stability-level":"alpha"},"post":{"operationId":"createOrder","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Order"}}},"description":"The new order.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Location":{"$ref":"#/components/headers/Location"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/TooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["orders:write"]}],"summary":"Place an order from a cart","tags":["Shop"],"x-stability-level":"alpha"}},"/orders/{id}":{"get":{"operationId":"getOrder","parameters":[{"description":"`fields[orders]=status,total_minor` returns only those fields; included items are added whole.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"orders":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Adds related items to each item, one level deep: `user`, `items`. Comma separated.","in":"query","name":"include","schema":{"maxLength":100,"pattern":"^(user|items)(,(user|items))*$","type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Order"}}},"description":"The order. With `include` the ETag is weak, as it covers the included items too.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":["orders:read"]}],"summary":"Get a order","tags":["Shop"],"x-stability-level":"alpha"},"parameters":[{"$ref":"#/components/parameters/Id"}],"patch":{"operationId":"updateOrder","parameters":[{"$ref":"#/components/parameters/IfMatch"},{"$ref":"#/components/parameters/Prefer"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderPatch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/OrderPatch"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Order"}}},"description":"The changed order.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"204":{"$ref":"#/components/responses/Minimal"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"412":{"$ref":"#/components/responses/PreconditionFailed"},"413":{"$ref":"#/components/responses/TooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["orders:write"]}],"summary":"Change a order (JSON Merge Patch)","tags":["Shop"],"x-stability-level":"alpha"}},"/posts":{"get":{"operationId":"listPosts","parameters":[{"$ref":"#/components/parameters/PageSize"},{"$ref":"#/components/parameters/PageAfter"},{"$ref":"#/components/parameters/PageNumber"},{"$ref":"#/components/parameters/PageCount"},{"$ref":"#/components/parameters/Search"},{"description":"`filter[user_id]=` (one user), `filter[status]=draft,published` (any of). An id you cannot see gives an empty list.","explode":true,"in":"query","name":"filter","schema":{"additionalProperties":false,"properties":{"status":{"maxLength":100,"pattern":"^(draft|published)(,(draft|published))*$","type":"string"},"user_id":{"format":"uuid","type":"string","x-go-type":"string"}},"type":"object"},"style":"deepObject"},{"description":"One field; a leading `-` sorts descending. Default `-created_at`.","in":"query","name":"sort","schema":{"enum":["created_at","-created_at","title","-title"],"type":"string"}},{"description":"`fields[posts]=id,title` returns only those fields; included items are added whole.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"posts":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Adds related items to each item, one level deep: `user`, `comments`. Comma separated.","in":"query","name":"include","schema":{"maxLength":100,"pattern":"^(user|comments)(,(user|comments))*$","type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostList"}}},"description":"One page of posts.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Link":{"$ref":"#/components/headers/Link"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":["posts:read"]}],"summary":"List posts","tags":["Posts"],"x-stability-level":"alpha"},"post":{"operationId":"createPost","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Post"}}},"description":"The new post.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Location":{"$ref":"#/components/headers/Location"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/TooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["posts:write"]}],"summary":"Create a post","tags":["Posts"],"x-stability-level":"alpha"}},"/posts/{id}":{"delete":{"operationId":"deletePost","parameters":[{"$ref":"#/components/parameters/IfMatch"}],"responses":{"204":{"description":"Deleted."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"412":{"$ref":"#/components/responses/PreconditionFailed"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["posts:write"]}],"summary":"Delete a post","tags":["Posts"],"x-stability-level":"alpha"},"get":{"operationId":"getPost","parameters":[{"description":"`fields[posts]=id,title` returns only those fields; included items are added whole.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"posts":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Adds related items to each item, one level deep: `user`, `comments`. Comma separated.","in":"query","name":"include","schema":{"maxLength":100,"pattern":"^(user|comments)(,(user|comments))*$","type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Post"}}},"description":"The post. With `include` the ETag is weak, as it covers the included items too.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":["posts:read"]}],"summary":"Get a post","tags":["Posts"],"x-stability-level":"alpha"},"parameters":[{"$ref":"#/components/parameters/Id"}],"patch":{"operationId":"updatePost","parameters":[{"$ref":"#/components/parameters/IfMatch"},{"$ref":"#/components/parameters/Prefer"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostPatch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/PostPatch"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Post"}}},"description":"The changed post.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"204":{"$ref":"#/components/responses/Minimal"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"412":{"$ref":"#/components/responses/PreconditionFailed"},"413":{"$ref":"#/components/responses/TooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["posts:write"]}],"summary":"Change a post (JSON Merge Patch)","tags":["Posts"],"x-stability-level":"alpha"}},"/products":{"get":{"operationId":"listProducts","parameters":[{"$ref":"#/components/parameters/PageSize"},{"$ref":"#/components/parameters/PageAfter"},{"$ref":"#/components/parameters/PageNumber"},{"$ref":"#/components/parameters/PageCount"},{"$ref":"#/components/parameters/Search"},{"description":"`filter[category_id]=` (one category), `filter[currency]=INR` (either case). `search` matches the name, sku and description.","explode":true,"in":"query","name":"filter","schema":{"additionalProperties":false,"properties":{"category_id":{"format":"uuid","type":"string","x-go-type":"string"},"currency":{"pattern":"^[A-Za-z]{3}$","type":"string"}},"type":"object"},"style":"deepObject"},{"description":"One field; a leading `-` sorts descending. Default `-created_at`.","in":"query","name":"sort","schema":{"enum":["created_at","-created_at","name","-name","price_minor","-price_minor"],"type":"string"}},{"description":"`fields[products]=name,price_minor` returns only those fields; included items are added whole.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"products":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Adds related items to each item, one level deep: `category`. Comma separated.","in":"query","name":"include","schema":{"maxLength":100,"pattern":"^(category)(,(category))*$","type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductList"}}},"description":"One page of products.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Link":{"$ref":"#/components/headers/Link"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":["products:read"]}],"summary":"List products","tags":["Shop"],"x-stability-level":"alpha"},"post":{"operationId":"createProduct","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Product"}}},"description":"The new product.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Location":{"$ref":"#/components/headers/Location"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/TooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["products:write"]}],"summary":"Create a product","tags":["Shop"],"x-stability-level":"alpha"}},"/products/{id}":{"delete":{"operationId":"deleteProduct","parameters":[{"$ref":"#/components/parameters/IfMatch"}],"responses":{"204":{"description":"Deleted."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"412":{"$ref":"#/components/responses/PreconditionFailed"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["products:write"]}],"summary":"Delete a product","tags":["Shop"],"x-stability-level":"alpha"},"get":{"operationId":"getProduct","parameters":[{"description":"`fields[products]=name,price_minor` returns only those fields; included items are added whole.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"products":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Adds related items to each item, one level deep: `category`. Comma separated.","in":"query","name":"include","schema":{"maxLength":100,"pattern":"^(category)(,(category))*$","type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Product"}}},"description":"The product. With `include` the ETag is weak, as it covers the included items too.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":["products:read"]}],"summary":"Get a product","tags":["Shop"],"x-stability-level":"alpha"},"parameters":[{"$ref":"#/components/parameters/Id"}],"patch":{"operationId":"updateProduct","parameters":[{"$ref":"#/components/parameters/IfMatch"},{"$ref":"#/components/parameters/Prefer"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductPatch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/ProductPatch"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Product"}}},"description":"The changed product.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"204":{"$ref":"#/components/responses/Minimal"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"412":{"$ref":"#/components/responses/PreconditionFailed"},"413":{"$ref":"#/components/responses/TooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["products:write"]}],"summary":"Change a product (JSON Merge Patch)","tags":["Shop"],"x-stability-level":"alpha"}},"/stream/changes":{"get":{"description":"Every create, update and delete in your own v3 data, as Server-Sent Events (`text/event-stream`), within about a second of the commit. Sample rows never change, so they send nothing. Each event has an `id`, an `event` name and one `data` line of JSON:\n\n- `ready`: the stream is open. Read the data you show now; every change from here on comes as an event.\n- `change`: one row was created, updated or deleted. `data` is a `ChangeEvent`; read the row at `href` for its new state.\n- `reset`: your data changed as a whole (a reset of your data) or the stream lost its place. Read the data you show again.\n\nA comment line `: heartbeat` comes every 25 seconds. The stream ends after 30 minutes, at the token's end, when the token is revoked, or when the server restarts; connect again after `retry` milliseconds and send the last `id` you got as `Last-Event-ID`. Within 5 minutes you get the events you missed, else `reset`. An event may come twice after a reconnect; drop one you have seen by its `id`. At most 3 streams per token and 10 per account on each server.\n\nA browser `EventSource` cannot send a header: get a ticket from `POST /stream/tickets` and open `?ticket=\u003cticket\u003e`, with `\u0026last-event-id=\u003cid\u003e` to resume. A ticket works once, also when the connect is refused (a 429, for one), so get a new one before every connect.\n","operationId":"streamChanges","parameters":[{"description":"The `id` of the last event you got, to resume.","in":"header","name":"Last-Event-ID","schema":{"maxLength":100,"minLength":1,"type":"string"}},{"description":"The same as the `Last-Event-ID` header, for `EventSource` with a ticket; the header wins when both come.","in":"query","name":"last-event-id","schema":{"maxLength":100,"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"text/event-stream":{"examples":{"change":{"value":"id: 019a3c4e-7b10-7d2a-9c4e-2f1b6a8d0e55\nevent: change\ndata: {\"resource\":\"posts\",\"action\":\"updated\",\"id\":\"019a3c4e-1111-7d2a-9c4e-2f1b6a8d0e55\",\"version\":2,\"href\":\"/public/v3/posts/019a3c4e-1111-7d2a-9c4e-2f1b6a8d0e55\"}\n\n"}},"schema":{"type":"string"}}},"description":"The stream. Each event is `id:`, `event:` and `data:` lines and a blank line; `data` of `change` is a `ChangeEvent`, of `ready` and `reset` `{}`."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/Unavailable"}},"security":[{"bearerAuth":["stream:read"]},{"streamTicket":[]}],"summary":"Stream your changes","tags":["Stream"],"x-stability-level":"alpha"}},"/stream/tickets":{"post":{"description":"A ticket for one `GET /stream/changes?ticket=\u003cticket\u003e`, for a browser `EventSource`, which cannot send the token in a header. It works once, within 60 seconds, and only on the stream; the stream then checks the token that made it, as for a Bearer call. Never put your API token in a URL; a ticket is made to go there.","operationId":"createStreamTicket","responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamTicket"}}},"description":"The ticket. It is shown once and never stored in plain form.","headers":{"Cache-Control":{"description":"`no-store`: the ticket is a secret.","schema":{"type":"string"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["stream:read"]}],"summary":"Get a stream ticket","tags":["Stream"],"x-stability-level":"alpha"}},"/tasks":{"get":{"operationId":"listTasks","parameters":[{"$ref":"#/components/parameters/PageSize"},{"$ref":"#/components/parameters/PageAfter"},{"$ref":"#/components/parameters/PageNumber"},{"$ref":"#/components/parameters/PageCount"},{"$ref":"#/components/parameters/Search"},{"description":"`filter[user_id]=` (one user), `filter[status]=todo,in_progress,done` and `filter[priority]=low,medium,high,urgent` (any of). An id you cannot see gives an empty list.","explode":true,"in":"query","name":"filter","schema":{"additionalProperties":false,"properties":{"priority":{"maxLength":100,"pattern":"^(low|medium|high|urgent)(,(low|medium|high|urgent))*$","type":"string"},"status":{"maxLength":100,"pattern":"^(todo|in_progress|done)(,(todo|in_progress|done))*$","type":"string"},"user_id":{"format":"uuid","type":"string","x-go-type":"string"}},"type":"object"},"style":"deepObject"},{"description":"One field; a leading `-` sorts descending. Default `-created_at`.","in":"query","name":"sort","schema":{"enum":["created_at","-created_at","title","-title"],"type":"string"}},{"description":"`fields[tasks]=id,title` returns only those fields; included items are added whole.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"tasks":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Adds related items to each item, one level deep: `user`. Comma separated.","in":"query","name":"include","schema":{"maxLength":100,"pattern":"^(user)(,(user))*$","type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskList"}}},"description":"One page of tasks.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Link":{"$ref":"#/components/headers/Link"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":["tasks:read"]}],"summary":"List tasks","tags":["Tasks"],"x-stability-level":"alpha"},"post":{"operationId":"createTask","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}},"description":"The new task.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Location":{"$ref":"#/components/headers/Location"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/TooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["tasks:write"]}],"summary":"Create a task","tags":["Tasks"],"x-stability-level":"alpha"}},"/tasks/{id}":{"delete":{"operationId":"deleteTask","parameters":[{"$ref":"#/components/parameters/IfMatch"}],"responses":{"204":{"description":"Deleted."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"412":{"$ref":"#/components/responses/PreconditionFailed"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["tasks:write"]}],"summary":"Delete a task","tags":["Tasks"],"x-stability-level":"alpha"},"get":{"operationId":"getTask","parameters":[{"description":"`fields[tasks]=id,title` returns only those fields; included items are added whole.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"tasks":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Adds related items to each item, one level deep: `user`. Comma separated.","in":"query","name":"include","schema":{"maxLength":100,"pattern":"^(user)(,(user))*$","type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}},"description":"The task. With `include` the ETag is weak, as it covers the included items too.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":["tasks:read"]}],"summary":"Get a task","tags":["Tasks"],"x-stability-level":"alpha"},"parameters":[{"$ref":"#/components/parameters/Id"}],"patch":{"operationId":"updateTask","parameters":[{"$ref":"#/components/parameters/IfMatch"},{"$ref":"#/components/parameters/Prefer"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskPatch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/TaskPatch"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}},"description":"The changed task.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"204":{"$ref":"#/components/responses/Minimal"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"412":{"$ref":"#/components/responses/PreconditionFailed"},"413":{"$ref":"#/components/responses/TooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["tasks:write"]}],"summary":"Change a task (JSON Merge Patch)","tags":["Tasks"],"x-stability-level":"alpha"}},"/users":{"get":{"operationId":"listUsers","parameters":[{"$ref":"#/components/parameters/PageSize"},{"$ref":"#/components/parameters/PageAfter"},{"$ref":"#/components/parameters/PageNumber"},{"$ref":"#/components/parameters/PageCount"},{"$ref":"#/components/parameters/Search"},{"description":"`filter[status]=active,inactive` (any of), `filter[email]=` (exact, lower case).","explode":true,"in":"query","name":"filter","schema":{"additionalProperties":false,"properties":{"email":{"maxLength":254,"type":"string"},"status":{"maxLength":100,"pattern":"^(active|inactive)(,(active|inactive))*$","type":"string"}},"type":"object"},"style":"deepObject"},{"description":"One field; a leading `-` sorts descending. Default `-created_at`.","in":"query","name":"sort","schema":{"enum":["created_at","-created_at","name","-name","email","-email"],"type":"string"}},{"description":"`fields[users]=id,name` returns only those fields.","explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"users":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserList"}}},"description":"One page of users.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Link":{"$ref":"#/components/headers/Link"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":["users:read"]}],"summary":"List users","tags":["Users"],"x-stability-level":"alpha"},"post":{"operationId":"createUser","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}},"description":"The new user.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Location":{"$ref":"#/components/headers/Location"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/TooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["users:write"]}],"summary":"Create a user","tags":["Users"],"x-stability-level":"alpha"}},"/users/{id}":{"delete":{"operationId":"deleteUser","parameters":[{"$ref":"#/components/parameters/IfMatch"}],"responses":{"204":{"description":"Deleted."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"412":{"$ref":"#/components/responses/PreconditionFailed"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["users:write"]}],"summary":"Delete a user","tags":["Users"],"x-stability-level":"alpha"},"get":{"operationId":"getUser","parameters":[{"explode":true,"in":"query","name":"fields","schema":{"additionalProperties":false,"properties":{"users":{"maxLength":200,"type":"string"}},"type":"object"},"style":"deepObject"},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}},"description":"The user.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{},{"bearerAuth":["users:read"]}],"summary":"Get a user","tags":["Users"],"x-stability-level":"alpha"},"parameters":[{"$ref":"#/components/parameters/Id"}],"patch":{"operationId":"updateUser","parameters":[{"$ref":"#/components/parameters/IfMatch"},{"$ref":"#/components/parameters/Prefer"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPatch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/UserPatch"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}},"description":"The changed user.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"204":{"$ref":"#/components/responses/Minimal"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"412":{"$ref":"#/components/responses/PreconditionFailed"},"413":{"$ref":"#/components/responses/TooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"security":[{"bearerAuth":["users:write"]}],"summary":"Change a user (JSON Merge Patch)","tags":["Users"],"x-stability-level":"alpha"}}},"servers":[{"url":"https://gorest.co.in/public/v3"}],"tags":[{"description":"Fake people. Your own, plus the read only sample users.","name":"Users"},{"description":"Posts by your users or the sample users, with their comments.","name":"Posts"},{"description":"Comments on posts you can see.","name":"Comments"},{"description":"To do items, each optionally given to a user.","name":"Tasks"},{"description":"Products, carts and orders. Money is in minor units of an ISO 4217 code: `\"price_minor\": 249900, \"currency\": \"INR\"` is ₹2,499.00. An order is placed from a cart: it takes the products' prices as they are then, and takes tracked stock.","name":"Shop"},{"description":"ISO countries and currencies, the same for every caller and read only. No token needed.","name":"Reference"},{"description":"Your API tokens. A token can make narrower tokens for one job and revoke them, so an app never needs your main token.","name":"Access tokens"},{"description":"What your account holds, and a reset to empty or to your own copy of the sample data.","name":"My data"},{"description":"Tools for learning HTTP and testing clients, in place of httpbin. No token needed; with one, its own rate limit applies.","name":"HTTP"},{"description":"Your own changes as they happen, as Server-Sent Events. Read it with `fetch` or `curl -N` and your token, or with a browser `EventSource` and a single use ticket from `POST /stream/tickets`.","name":"Stream"},{"description":"This document, for tools and code generators.","name":"Spec"}]}