makea-cli 0.2.4__tar.gz → 0.2.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. {makea_cli-0.2.4 → makea_cli-0.2.5}/CHANGELOG.md +13 -0
  2. {makea_cli-0.2.4 → makea_cli-0.2.5}/PKG-INFO +4 -1
  3. {makea_cli-0.2.4 → makea_cli-0.2.5}/README.md +3 -0
  4. makea_cli-0.2.5/makea_cli/__init__.py +1 -0
  5. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/api_client.py +21 -0
  6. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/brand/cmd.py +96 -0
  7. {makea_cli-0.2.4 → makea_cli-0.2.5}/pyproject.toml +1 -1
  8. {makea_cli-0.2.4 → makea_cli-0.2.5}/tests/golden_manifest.json +134 -0
  9. makea_cli-0.2.4/makea_cli/__init__.py +0 -1
  10. {makea_cli-0.2.4 → makea_cli-0.2.5}/.claude/skills/create-supplier-profile/SKILL.md +0 -0
  11. {makea_cli-0.2.4 → makea_cli-0.2.5}/.claude/skills/lark-cli-setup/SKILL.md +0 -0
  12. {makea_cli-0.2.4 → makea_cli-0.2.5}/.claude/skills/link-supplier-user/SKILL.md +0 -0
  13. {makea_cli-0.2.4 → makea_cli-0.2.5}/.claude/skills/makea-cli-setup/SKILL.md +0 -0
  14. {makea_cli-0.2.4 → makea_cli-0.2.5}/.claude/skills/payment-revenue-report/SKILL.md +0 -0
  15. {makea_cli-0.2.4 → makea_cli-0.2.5}/.claude/skills/supplier-user-id-migration/SKILL.md +0 -0
  16. {makea_cli-0.2.4 → makea_cli-0.2.5}/.gitignore +0 -0
  17. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea-collection-upload/SKILL.md +0 -0
  18. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea-collection-upload/scripts/create_products.py +0 -0
  19. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/__main__.py +0 -0
  20. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/auth_pkce.py +0 -0
  21. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/broker.py +0 -0
  22. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/__init__.py +0 -0
  23. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/_util.py +0 -0
  24. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/analytics/__init__.py +0 -0
  25. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/analytics/cmd.py +0 -0
  26. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/auth/__init__.py +0 -0
  27. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/auth/cmd.py +0 -0
  28. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/brand/__init__.py +0 -0
  29. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/designer/__init__.py +0 -0
  30. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/designer/cmd.py +0 -0
  31. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/directory/__init__.py +0 -0
  32. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/directory/cmd.py +0 -0
  33. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/document/__init__.py +0 -0
  34. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/document/cmd.py +0 -0
  35. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/email/__init__.py +0 -0
  36. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/email/cmd.py +0 -0
  37. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/factory/__init__.py +0 -0
  38. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/factory/cmd.py +0 -0
  39. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/library/__init__.py +0 -0
  40. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/library/cmd.py +0 -0
  41. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/metrics/__init__.py +0 -0
  42. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/metrics/cmd.py +0 -0
  43. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/orders/__init__.py +0 -0
  44. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/orders/cmd.py +0 -0
  45. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/product/__init__.py +0 -0
  46. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/product/cmd.py +0 -0
  47. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/production/__init__.py +0 -0
  48. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/production/cmd.py +0 -0
  49. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/production/pricing_spec.py +0 -0
  50. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/supplier/__init__.py +0 -0
  51. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/commands/supplier/cmd.py +0 -0
  52. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/config.py +0 -0
  53. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/errors.py +0 -0
  54. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/identity.py +0 -0
  55. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/main.py +0 -0
  56. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/output.py +0 -0
  57. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/posthog_client.py +0 -0
  58. {makea_cli-0.2.4 → makea_cli-0.2.5}/makea_cli/registry.py +0 -0
  59. {makea_cli-0.2.4 → makea_cli-0.2.5}/npm/makea-cli/README.md +0 -0
  60. {makea_cli-0.2.4 → makea_cli-0.2.5}/npm/makea-cli/makea-cli.mjs +0 -0
  61. {makea_cli-0.2.4 → makea_cli-0.2.5}/npm/makea-cli/package.json +0 -0
  62. {makea_cli-0.2.4 → makea_cli-0.2.5}/tests/test_broker.py +0 -0
  63. {makea_cli-0.2.4 → makea_cli-0.2.5}/tests/test_output_contract.py +0 -0
  64. {makea_cli-0.2.4 → makea_cli-0.2.5}/tests/test_persona_commands.py +0 -0
  65. {makea_cli-0.2.4 → makea_cli-0.2.5}/tests/test_registry.py +0 -0
  66. {makea_cli-0.2.4 → makea_cli-0.2.5}/uv.lock +0 -0
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.5
4
+
5
+ The production journey, for the Claude agent on the product channel.
6
+
7
+ - `designer set production-cart <production_order_id> --qty 'SIZE,#RRGGBB=COUNT' …`
8
+ (`auto`): the run's size x colour quantities. Replaces the whole cart, and is
9
+ refused once the run is locked.
10
+ - `designer set production-lock <production_order_id> [--unlock]` (`ask`):
11
+ place the order. Locking is what makes the deposit payable; it can be
12
+ reopened until the deposit is paid.
13
+ - `designer get production-price <production_order_id> [--phase final]`: the
14
+ deposit (or balance) for the quantities on the run now, line by line.
15
+
3
16
  ## 0.2.4
4
17
 
5
18
  For Beeboo acting for a brand through the CLI (the Claude agent on the product
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: makea-cli
3
- Version: 0.2.4
3
+ Version: 0.2.5
4
4
  Summary: Makea admin CLI (browser login + Makea admin HTTP API)
5
5
  Requires-Python: >=3.10
6
6
  Requires-Dist: click<9,>=8.1
@@ -157,6 +157,7 @@ exit code:`0` 成功 · `2` 用法错 · `3` 未登录或身份与 persona 不
157
157
  | `makea-cli designer get collection` | read | `GET /designer/collections/{collection_id}/overview` | one collection with its products, orders and lifecycle in a single read. | — |
158
158
  | `makea-cli designer get lifecycle` | read | `GET /designer/product_orders/{product_order_id}/lifecycle` | which stage this product is in. | — |
159
159
  | `makea-cli designer get product` | read | `GET /designer/get_product` | one product: status, documents, prices, links. | — |
160
+ | `makea-cli designer get production-price` | read | `GET /designer/production_orders/{production_order_id}/calculate_price` | what the deposit (or the balance, --phase final) comes to for the quantities on the run right now, line by line. | — |
160
161
  | `makea-cli designer get quote-advice` | read | `GET /designer/product/quote_advice` | which quote to award and why, from cache. Reading never spends a model call; the web app is what asks for a fresh one. | — |
161
162
  | `makea-cli designer get tech-pack` | read | `GET /designer/products/{product_id}/technical-specifications` | the product's tech pack. | — |
162
163
  | `makea-cli designer get tech-pack-history` | read | `GET /designer/products/{product_id}/specification-change-history` | who changed which spec field, when, and from what. | — |
@@ -173,6 +174,8 @@ exit code:`0` 成功 · `2` 用法错 · `3` 未登录或身份与 persona 不
173
174
  | `makea-cli designer list task` | read | `GET /designer/tasks` | what the platform is waiting on you for. | — |
174
175
  | `makea-cli designer search note` | read | `GET /designer/products/{product_id}/channel_search` | full-text search across a product's conversation; --channel narrows to one channel key. | — |
175
176
  | `makea-cli designer set product-collection` | write(auto) | `POST /designer/products/{id}/link-to-collection` | assign product to a collection. | `designer-link-product-to-collection` |
177
+ | `makea-cli designer set production-cart` | write(auto) | `PUT /designer/production_orders/{production_order_id}/cart` | the quantity of every size and colour on the run. Replaces the whole cart: pass every cell you want kept. --qty repea… | — |
178
+ | `makea-cli designer set production-lock` | write(ask) | `POST /designer/production_orders/{production_order_id}/configuration-lock` | place the order with the quantities on the run (--unlock to reopen them). Locking is what makes the deposit payable: … | — |
176
179
  | `makea-cli designer submit production-order` | write(ask) | `POST /designer/production_orders/{production_order_id}/submit` | submit a 大货 order. This is the commitment, so --dry-run and confirm with the user first. | — |
177
180
  | `makea-cli designer submit sampling-order` | write(ask) | `POST /designer/sampling_orders/{sampling_order_id}/confirm` | confirm a sample order so the supplier starts. Run --dry-run first and read it back to the user. | — |
178
181
  | `makea-cli designer submit tech-pack` | write(ask) | `POST /designer/products/{product_id}/technical-specifications/confirm` | confirm the tech pack, the step before anyone is asked to quote. | — |
@@ -145,6 +145,7 @@ exit code:`0` 成功 · `2` 用法错 · `3` 未登录或身份与 persona 不
145
145
  | `makea-cli designer get collection` | read | `GET /designer/collections/{collection_id}/overview` | one collection with its products, orders and lifecycle in a single read. | — |
146
146
  | `makea-cli designer get lifecycle` | read | `GET /designer/product_orders/{product_order_id}/lifecycle` | which stage this product is in. | — |
147
147
  | `makea-cli designer get product` | read | `GET /designer/get_product` | one product: status, documents, prices, links. | — |
148
+ | `makea-cli designer get production-price` | read | `GET /designer/production_orders/{production_order_id}/calculate_price` | what the deposit (or the balance, --phase final) comes to for the quantities on the run right now, line by line. | — |
148
149
  | `makea-cli designer get quote-advice` | read | `GET /designer/product/quote_advice` | which quote to award and why, from cache. Reading never spends a model call; the web app is what asks for a fresh one. | — |
149
150
  | `makea-cli designer get tech-pack` | read | `GET /designer/products/{product_id}/technical-specifications` | the product's tech pack. | — |
150
151
  | `makea-cli designer get tech-pack-history` | read | `GET /designer/products/{product_id}/specification-change-history` | who changed which spec field, when, and from what. | — |
@@ -161,6 +162,8 @@ exit code:`0` 成功 · `2` 用法错 · `3` 未登录或身份与 persona 不
161
162
  | `makea-cli designer list task` | read | `GET /designer/tasks` | what the platform is waiting on you for. | — |
162
163
  | `makea-cli designer search note` | read | `GET /designer/products/{product_id}/channel_search` | full-text search across a product's conversation; --channel narrows to one channel key. | — |
163
164
  | `makea-cli designer set product-collection` | write(auto) | `POST /designer/products/{id}/link-to-collection` | assign product to a collection. | `designer-link-product-to-collection` |
165
+ | `makea-cli designer set production-cart` | write(auto) | `PUT /designer/production_orders/{production_order_id}/cart` | the quantity of every size and colour on the run. Replaces the whole cart: pass every cell you want kept. --qty repea… | — |
166
+ | `makea-cli designer set production-lock` | write(ask) | `POST /designer/production_orders/{production_order_id}/configuration-lock` | place the order with the quantities on the run (--unlock to reopen them). Locking is what makes the deposit payable: … | — |
164
167
  | `makea-cli designer submit production-order` | write(ask) | `POST /designer/production_orders/{production_order_id}/submit` | submit a 大货 order. This is the commitment, so --dry-run and confirm with the user first. | — |
165
168
  | `makea-cli designer submit sampling-order` | write(ask) | `POST /designer/sampling_orders/{sampling_order_id}/confirm` | confirm a sample order so the supplier starts. Run --dry-run first and read it back to the user. | — |
166
169
  | `makea-cli designer submit tech-pack` | write(ask) | `POST /designer/products/{product_id}/technical-specifications/confirm` | confirm the tech pack, the step before anyone is asked to quote. | — |
@@ -0,0 +1 @@
1
+ __version__ = "0.2.5"
@@ -1213,6 +1213,27 @@ def designer_create_checkout(body: dict[str, Any]) -> Any:
1213
1213
  return post_json("/designer/payments/basket/create-session", body)
1214
1214
 
1215
1215
 
1216
+ def designer_production_price(production_order_id: str, phase: str) -> Any:
1217
+ """GET /designer/production_orders/{id}/calculate_price — deposit or balance, itemised."""
1218
+ return get_json(
1219
+ f"/designer/production_orders/{production_order_id}/calculate_price",
1220
+ params={"payment_type": phase},
1221
+ )
1222
+
1223
+
1224
+ def designer_set_production_cart(production_order_id: str, cart: dict[str, int]) -> Any:
1225
+ """PUT /designer/production_orders/{id}/cart — replace the size x colour quantities."""
1226
+ return put_json(f"/designer/production_orders/{production_order_id}/cart", {"cart_items": cart})
1227
+
1228
+
1229
+ def designer_set_production_lock(production_order_id: str, locked: bool) -> Any:
1230
+ """POST /designer/production_orders/{id}/configuration-lock — place or reopen the run."""
1231
+ return post_json(
1232
+ f"/designer/production_orders/{production_order_id}/configuration-lock",
1233
+ {"locked": locked},
1234
+ )
1235
+
1236
+
1216
1237
  def designer_list_collections() -> Any:
1217
1238
  """GET /designer/collections — the brand's collections."""
1218
1239
  return get_json("/designer/collections")
@@ -914,3 +914,99 @@ def register(app: typer.Typer) -> None:
914
914
  if accept_terms:
915
915
  body["terms_accepted"] = True
916
916
  print_json_or_exit(console, lambda: api_client.designer_create_checkout(body))
917
+
918
+ # --- the production journey: quantities, place the order, pay the deposit ---
919
+
920
+ @command(
921
+ app,
922
+ "designer",
923
+ "get",
924
+ "production-price",
925
+ api="GET /designer/production_orders/{production_order_id}/calculate_price",
926
+ help=(
927
+ "GET /designer/production_orders/{id}/calculate_price — what the deposit (or the "
928
+ "balance, --phase final) comes to for the quantities on the run right now, line "
929
+ "by line."
930
+ ),
931
+ )
932
+ def get_production_price(
933
+ production_order_id: str = typer.Argument(..., help="Production order id."),
934
+ phase: str = typer.Option("deposit", "--phase", help="deposit or final."),
935
+ ) -> None:
936
+ """Price a production order's deposit or balance."""
937
+ if phase not in ("deposit", "final"):
938
+ raise typer.BadParameter("--phase is deposit or final")
939
+ print_json_or_exit(
940
+ console,
941
+ lambda: api_client.designer_production_price(production_order_id, phase),
942
+ )
943
+
944
+ @command(
945
+ app,
946
+ "designer",
947
+ "set",
948
+ "production-cart",
949
+ api="PUT /designer/production_orders/{production_order_id}/cart",
950
+ side_effects=["replaces the run's quantities; nothing is ordered until it is locked"],
951
+ approval="auto",
952
+ help=(
953
+ "PUT /designer/production_orders/{id}/cart — the quantity of every size and "
954
+ "colour on the run. Replaces the whole cart: pass every cell you want kept. "
955
+ "--qty repeats as 'SIZE,#RRGGBB=COUNT' (quote it: # starts a shell comment), "
956
+ "with the sizes and colour hex codes from "
957
+ "the order's available_sizes / available_colors (`designer list "
958
+ "production-order --product <id>`). Refused once the run is locked."
959
+ ),
960
+ )
961
+ def set_production_cart(
962
+ production_order_id: str = typer.Argument(..., help="Production order id."),
963
+ qty: list[str] = typer.Option(
964
+ ..., "--qty", help="SIZE,#RRGGBB=COUNT for one cell (repeat)."
965
+ ),
966
+ ) -> None:
967
+ """Set a production order's size x colour quantities."""
968
+ cart: dict[str, int] = {}
969
+ for cell in qty:
970
+ key, sep, count = cell.rpartition("=")
971
+ if not sep or "," not in key:
972
+ raise typer.BadParameter(f"--qty {cell!r}: expected SIZE,#RRGGBB=COUNT")
973
+ try:
974
+ n = int(count)
975
+ except ValueError as e:
976
+ raise typer.BadParameter(f"--qty {cell!r}: COUNT must be a whole number") from e
977
+ if n < 0:
978
+ raise typer.BadParameter(f"--qty {cell!r}: COUNT cannot be negative")
979
+ size, _, colour = key.partition(",")
980
+ cart[f"{size.strip()},{colour.strip()}"] = n
981
+ print_json_or_exit(
982
+ console,
983
+ lambda: api_client.designer_set_production_cart(production_order_id, cart),
984
+ )
985
+
986
+ @command(
987
+ app,
988
+ "designer",
989
+ "set",
990
+ "production-lock",
991
+ api="POST /designer/production_orders/{production_order_id}/configuration-lock",
992
+ side_effects=[
993
+ "places the order: the quantities are final and the deposit becomes payable",
994
+ "can be unlocked again until the deposit is paid",
995
+ ],
996
+ approval="ask",
997
+ help=(
998
+ "POST /designer/production_orders/{id}/configuration-lock — place the order "
999
+ "with the quantities on the run (--unlock to reopen them). Locking is what makes "
1000
+ "the deposit payable: `designer create checkout --key "
1001
+ "production:<id>:deposit --accept-terms`."
1002
+ ),
1003
+ )
1004
+ def set_production_lock(
1005
+ production_order_id: str = typer.Argument(..., help="Production order id."),
1006
+ unlock: bool = typer.Option(False, "--unlock", help="Reopen the quantities instead."),
1007
+ ) -> None:
1008
+ """Lock (place) or unlock a production order's configuration."""
1009
+ print_json_or_exit(
1010
+ console,
1011
+ lambda: api_client.designer_set_production_lock(production_order_id, not unlock),
1012
+ )
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "makea-cli"
7
- version = "0.2.4"
7
+ version = "0.2.5"
8
8
  description = "Makea admin CLI (browser login + Makea admin HTTP API)"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -5201,6 +5201,49 @@
5201
5201
  }
5202
5202
  ]
5203
5203
  },
5204
+ {
5205
+ "name": "designer get production-price",
5206
+ "persona": "designer",
5207
+ "verb": "get",
5208
+ "noun": "production-price",
5209
+ "access": "read",
5210
+ "api": "GET /designer/production_orders/{production_order_id}/calculate_price",
5211
+ "external": null,
5212
+ "side_effects": [],
5213
+ "approval": "auto",
5214
+ "reversible": null,
5215
+ "idempotent": null,
5216
+ "limit": null,
5217
+ "legacy": [],
5218
+ "help": "GET /designer/production_orders/{id}/calculate_price — what the deposit (or the balance, --phase final) comes to for the quantities on the run right now, line by line.",
5219
+ "function": "makea_cli.commands.brand.cmd.register.<locals>.get_production_price",
5220
+ "flags": [
5221
+ {
5222
+ "name": "production_order_id",
5223
+ "kind": "argument",
5224
+ "opts": [
5225
+ "production_order_id"
5226
+ ],
5227
+ "type": "text",
5228
+ "required": true,
5229
+ "multiple": false,
5230
+ "default": null,
5231
+ "help": "Production order id."
5232
+ },
5233
+ {
5234
+ "name": "phase",
5235
+ "kind": "option",
5236
+ "opts": [
5237
+ "--phase"
5238
+ ],
5239
+ "type": "text",
5240
+ "required": false,
5241
+ "multiple": false,
5242
+ "default": "deposit",
5243
+ "help": "deposit or final."
5244
+ }
5245
+ ]
5246
+ },
5204
5247
  {
5205
5248
  "name": "designer get quote-advice",
5206
5249
  "persona": "designer",
@@ -5739,6 +5782,97 @@
5739
5782
  }
5740
5783
  ]
5741
5784
  },
5785
+ {
5786
+ "name": "designer set production-cart",
5787
+ "persona": "designer",
5788
+ "verb": "set",
5789
+ "noun": "production-cart",
5790
+ "access": "write",
5791
+ "api": "PUT /designer/production_orders/{production_order_id}/cart",
5792
+ "external": null,
5793
+ "side_effects": [
5794
+ "replaces the run's quantities; nothing is ordered until it is locked"
5795
+ ],
5796
+ "approval": "auto",
5797
+ "reversible": null,
5798
+ "idempotent": null,
5799
+ "limit": null,
5800
+ "legacy": [],
5801
+ "help": "PUT /designer/production_orders/{id}/cart — the quantity of every size and colour on the run. Replaces the whole cart: pass every cell you want kept. --qty repeats as 'SIZE,#RRGGBB=COUNT' (quote it: # starts a shell comment), with the sizes and colour hex codes from the order's available_sizes / available_colors (`designer list production-order --product <id>`). Refused once the run is locked.",
5802
+ "function": "makea_cli.commands.brand.cmd.register.<locals>.set_production_cart",
5803
+ "flags": [
5804
+ {
5805
+ "name": "production_order_id",
5806
+ "kind": "argument",
5807
+ "opts": [
5808
+ "production_order_id"
5809
+ ],
5810
+ "type": "text",
5811
+ "required": true,
5812
+ "multiple": false,
5813
+ "default": null,
5814
+ "help": "Production order id."
5815
+ },
5816
+ {
5817
+ "name": "qty",
5818
+ "kind": "option",
5819
+ "opts": [
5820
+ "--qty"
5821
+ ],
5822
+ "type": "text",
5823
+ "required": true,
5824
+ "multiple": true,
5825
+ "default": null,
5826
+ "help": "SIZE,#RRGGBB=COUNT for one cell (repeat)."
5827
+ }
5828
+ ]
5829
+ },
5830
+ {
5831
+ "name": "designer set production-lock",
5832
+ "persona": "designer",
5833
+ "verb": "set",
5834
+ "noun": "production-lock",
5835
+ "access": "write",
5836
+ "api": "POST /designer/production_orders/{production_order_id}/configuration-lock",
5837
+ "external": null,
5838
+ "side_effects": [
5839
+ "places the order: the quantities are final and the deposit becomes payable",
5840
+ "can be unlocked again until the deposit is paid"
5841
+ ],
5842
+ "approval": "ask",
5843
+ "reversible": null,
5844
+ "idempotent": null,
5845
+ "limit": null,
5846
+ "legacy": [],
5847
+ "help": "POST /designer/production_orders/{id}/configuration-lock — place the order with the quantities on the run (--unlock to reopen them). Locking is what makes the deposit payable: `designer create checkout --key production:<id>:deposit --accept-terms`.",
5848
+ "function": "makea_cli.commands.brand.cmd.register.<locals>.set_production_lock",
5849
+ "flags": [
5850
+ {
5851
+ "name": "production_order_id",
5852
+ "kind": "argument",
5853
+ "opts": [
5854
+ "production_order_id"
5855
+ ],
5856
+ "type": "text",
5857
+ "required": true,
5858
+ "multiple": false,
5859
+ "default": null,
5860
+ "help": "Production order id."
5861
+ },
5862
+ {
5863
+ "name": "unlock",
5864
+ "kind": "option",
5865
+ "opts": [
5866
+ "--unlock"
5867
+ ],
5868
+ "type": "flag",
5869
+ "required": false,
5870
+ "multiple": false,
5871
+ "default": false,
5872
+ "help": "Reopen the quantities instead."
5873
+ }
5874
+ ]
5875
+ },
5742
5876
  {
5743
5877
  "name": "designer submit production-order",
5744
5878
  "persona": "designer",
@@ -1 +0,0 @@
1
- __version__ = "0.2.4"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes