@primitivedotdev/sdk 1.26.1 → 1.29.0
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.
- package/README.md +56 -0
- package/dist/api/index.d.ts +4 -4
- package/dist/api/index.js +4 -4
- package/dist/{api-BEv_YML6.js → api-27BvnkVA.js} +552 -4
- package/dist/contract/index.d.ts +14 -5
- package/dist/contract/index.js +6 -3
- package/dist/{errors-CCJX3I_T.d.ts → errors-Li0PXZXa.d.ts} +5 -1
- package/dist/{index-B1a5L2zU.d.ts → index-Bjc-cR2b.d.ts} +360 -6
- package/dist/{index-JpXUV16f.d.ts → index-BxPkB7GU.d.ts} +39 -46
- package/dist/index.d.ts +4 -4
- package/dist/index.js +3 -3
- package/dist/openapi/index.js +1 -1
- package/dist/{operations.generated-DVHnicf5.js → operations.generated-Dra-xGtu.js} +663 -6
- package/dist/parser/address.js +1 -1
- package/dist/parser/index.d.ts +1 -1
- package/dist/parser/index.js +1 -1
- package/dist/payloads/index.js +1 -1
- package/dist/{webhook-CLVRgb-L.js → trust-m3dNPmWL.js} +835 -2190
- package/dist/{types-DcXtFARL.d.ts → types-Rn4qu5Q7.d.ts} +12 -5
- package/dist/webhook/index.d.ts +3 -3
- package/dist/webhook/index.js +2 -2
- package/dist/webhook-DArt1Ipq.js +2139 -0
- package/package.json +3 -3
- package/dist/errors-BVnAu5jX.js +0 -688
- /package/dist/{address-parser-C2JJzLdA.js → address-parser-BxXv4vx0.js} +0 -0
- /package/dist/{payloads-BfJAtqW9.js → payloads-BMngnJlE.js} +0 -0
|
@@ -45,6 +45,10 @@ const openapiDocument = {
|
|
|
45
45
|
"name": "Account",
|
|
46
46
|
"description": "Manage your account settings, storage, and webhook secret"
|
|
47
47
|
},
|
|
48
|
+
{
|
|
49
|
+
"name": "Credits",
|
|
50
|
+
"description": "Redeem credit codes and read the organization credit balance"
|
|
51
|
+
},
|
|
48
52
|
{
|
|
49
53
|
"name": "Domains",
|
|
50
54
|
"description": "Claim, verify, and manage email domains"
|
|
@@ -649,6 +653,129 @@ const openapiDocument = {
|
|
|
649
653
|
"429": { "$ref": "#/components/responses/RateLimited" }
|
|
650
654
|
}
|
|
651
655
|
} },
|
|
656
|
+
"/credits/redeem": { "post": {
|
|
657
|
+
"operationId": "redeemCreditCode",
|
|
658
|
+
"summary": "Redeem a credit code",
|
|
659
|
+
"description": "Redeem a credit code for the authenticated organization. The credit is\nadded to the organization prepaid credit and shows in\n`GET /credits/balance` under `prepaid_credit`.\n\nRedeeming requires an organization owner or admin. An API key redeems\nwith the authority of the user who created it, based on that user's\ncurrent role; a key without that authority gets the same\n`credit_code_invalid` refusal as an unknown code.\n\nThe `Idempotency-Key` header is required. Retrying with the same key\nand code returns the original grant with `replayed: true` and grants\nnothing new; the same key with a different code is refused with\n`idempotency_key_reused`. Every refusal carries a human-readable\n`error.message` that can be shown to the user as is.\n",
|
|
660
|
+
"tags": ["Credits"],
|
|
661
|
+
"parameters": [{
|
|
662
|
+
"name": "Idempotency-Key",
|
|
663
|
+
"in": "header",
|
|
664
|
+
"required": true,
|
|
665
|
+
"description": "Required client-supplied key: 1 to 200 printable ASCII\ncharacters, without spaces. Use a new key for each code you\nredeem and reuse it only to retry the same request.\n",
|
|
666
|
+
"schema": {
|
|
667
|
+
"type": "string",
|
|
668
|
+
"minLength": 1,
|
|
669
|
+
"maxLength": 200,
|
|
670
|
+
"pattern": "^[\\x21-\\x7E]{1,200}$"
|
|
671
|
+
}
|
|
672
|
+
}],
|
|
673
|
+
"requestBody": {
|
|
674
|
+
"required": true,
|
|
675
|
+
"content": { "application/json": {
|
|
676
|
+
"schema": { "$ref": "#/components/schemas/RedeemCreditCodeInput" },
|
|
677
|
+
"example": { "code": "LAUNCH50" }
|
|
678
|
+
} }
|
|
679
|
+
},
|
|
680
|
+
"responses": {
|
|
681
|
+
"200": {
|
|
682
|
+
"description": "The code was redeemed, or this request replayed an earlier\nredemption with the same Idempotency-Key.\n",
|
|
683
|
+
"content": { "application/json": { "schema": { "allOf": [{ "$ref": "#/components/schemas/SuccessEnvelope" }, {
|
|
684
|
+
"type": "object",
|
|
685
|
+
"properties": { "data": { "$ref": "#/components/schemas/CreditRedemption" } }
|
|
686
|
+
}] } } }
|
|
687
|
+
},
|
|
688
|
+
"400": {
|
|
689
|
+
"description": "`idempotency_key_required` means the Idempotency-Key header is\nmissing. `validation_error` means the header is empty, longer than\n200 characters or not printable non-space ASCII, or the body is\ninvalid.\n",
|
|
690
|
+
"content": { "application/json": {
|
|
691
|
+
"schema": { "$ref": "#/components/schemas/ErrorResponse" },
|
|
692
|
+
"example": {
|
|
693
|
+
"success": false,
|
|
694
|
+
"error": {
|
|
695
|
+
"code": "idempotency_key_required",
|
|
696
|
+
"message": "an Idempotency-Key header is required"
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
} }
|
|
700
|
+
},
|
|
701
|
+
"401": { "$ref": "#/components/responses/Unauthorized" },
|
|
702
|
+
"403": { "$ref": "#/components/responses/Forbidden" },
|
|
703
|
+
"409": {
|
|
704
|
+
"description": "The organization or user already redeemed this code, or already\nredeemed another code in the same exclusive group (a set of codes\nof which each organization or user may redeem only one).\n`error.code` is `credit_code_already_redeemed`.\n",
|
|
705
|
+
"content": { "application/json": {
|
|
706
|
+
"schema": { "$ref": "#/components/schemas/ErrorResponse" },
|
|
707
|
+
"example": {
|
|
708
|
+
"success": false,
|
|
709
|
+
"error": {
|
|
710
|
+
"code": "credit_code_already_redeemed",
|
|
711
|
+
"message": "Your organization has already redeemed this promotion."
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
} }
|
|
715
|
+
},
|
|
716
|
+
"422": {
|
|
717
|
+
"description": "The code cannot be redeemed. `credit_code_invalid` covers unknown,\nexpired and exhausted codes and callers without authority to\nredeem; `credit_code_not_eligible` means the organization does not\nmeet the promotion terms; `credit_code_balance_cap` means the\norganization already holds the most promotional credit it can;\n`idempotency_key_reused` means this Idempotency-Key already\nredeemed a different code.\n",
|
|
718
|
+
"content": { "application/json": {
|
|
719
|
+
"schema": { "$ref": "#/components/schemas/ErrorResponse" },
|
|
720
|
+
"example": {
|
|
721
|
+
"success": false,
|
|
722
|
+
"error": {
|
|
723
|
+
"code": "credit_code_invalid",
|
|
724
|
+
"message": "That code isn't valid or is no longer available."
|
|
725
|
+
}
|
|
726
|
+
}
|
|
727
|
+
} }
|
|
728
|
+
},
|
|
729
|
+
"429": {
|
|
730
|
+
"description": "Too many requests or redemption attempts. `error.code` is\n`rate_limited`. Wait for `Retry-After` when present. Like other\nrate-limited responses, it also carries the `ratelimit-limit`,\n`ratelimit-remaining`, `ratelimit-reset` and `ratelimit-policy`\nquota headers when the limiter reports them.\n",
|
|
731
|
+
"headers": { "Retry-After": {
|
|
732
|
+
"schema": { "type": "integer" },
|
|
733
|
+
"description": "Seconds to wait before retrying"
|
|
734
|
+
} },
|
|
735
|
+
"content": { "application/json": {
|
|
736
|
+
"schema": { "$ref": "#/components/schemas/ErrorResponse" },
|
|
737
|
+
"example": {
|
|
738
|
+
"success": false,
|
|
739
|
+
"error": {
|
|
740
|
+
"code": "rate_limited",
|
|
741
|
+
"message": "Rate limit exceeded. Try again shortly."
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
} }
|
|
745
|
+
},
|
|
746
|
+
"503": {
|
|
747
|
+
"description": "The code could not be redeemed right now. Retry later with the\nsame Idempotency-Key. `error.code` is `service_unavailable`.\n",
|
|
748
|
+
"content": { "application/json": {
|
|
749
|
+
"schema": { "$ref": "#/components/schemas/ErrorResponse" },
|
|
750
|
+
"example": {
|
|
751
|
+
"success": false,
|
|
752
|
+
"error": {
|
|
753
|
+
"code": "service_unavailable",
|
|
754
|
+
"message": "We couldn't redeem that code right now. Try again in a few minutes."
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
} }
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
} },
|
|
761
|
+
"/credits/balance": { "get": {
|
|
762
|
+
"operationId": "getCreditBalance",
|
|
763
|
+
"summary": "Get credit balance",
|
|
764
|
+
"description": "Read the organization credit position. `prepaid_credit` is the prepaid\nusage credit (paid top-ups, redeemed credit codes and granted credit)\nthat can still pay for usage. `budget` is the active agent spending\nbudget an operator funded for top-ups, or null when there is none.\nAmounts are strings of integer micros (1 USD = 1000000 micros).\n",
|
|
765
|
+
"tags": ["Credits"],
|
|
766
|
+
"responses": {
|
|
767
|
+
"200": {
|
|
768
|
+
"description": "The organization credit balance.",
|
|
769
|
+
"content": { "application/json": { "schema": { "allOf": [{ "$ref": "#/components/schemas/SuccessEnvelope" }, {
|
|
770
|
+
"type": "object",
|
|
771
|
+
"properties": { "data": { "$ref": "#/components/schemas/CreditBalance" } }
|
|
772
|
+
}] } } }
|
|
773
|
+
},
|
|
774
|
+
"401": { "$ref": "#/components/responses/Unauthorized" },
|
|
775
|
+
"403": { "$ref": "#/components/responses/Forbidden" },
|
|
776
|
+
"429": { "$ref": "#/components/responses/RateLimited" }
|
|
777
|
+
}
|
|
778
|
+
} },
|
|
652
779
|
"/domains": {
|
|
653
780
|
"get": {
|
|
654
781
|
"operationId": "listDomains",
|
|
@@ -1483,7 +1610,7 @@ const openapiDocument = {
|
|
|
1483
1610
|
"post": {
|
|
1484
1611
|
"operationId": "createEndpoint",
|
|
1485
1612
|
"summary": "Create a webhook endpoint",
|
|
1486
|
-
"description": "Creates a new webhook endpoint. If a deactivated endpoint\nwith the same URL and domain exists, it is reactivated\ninstead. Subject to plan limits on the number of active\nendpoints.\n\n**Signing is account-scoped, not per-endpoint.** This call\ndoes not return any signing material; every endpoint on the\naccount uses the same webhook secret, fetched via\n`GET /account/webhook-secret`. See the API-level \"Webhook\nsigning\" section for the full wire format (header name,\nsigned string, hash algo, secret format, tolerance) and a\nlanguage-agnostic verification recipe.\n\nAfter creating the endpoint, fire a test delivery against\nit via `POST /endpoints/{id}/test` to confirm your verifier\naccepts the signature.\n\n\nFor local receiving, use kind=pull and a stable name, without url, function_id or domain_id. Named creation resumes the same active destination; omitted filters preserve its selection, while conflicting supplied configuration returns 409. New unfiltered destinations receive all subsequently ready eligible event types. Pull destinations do not occupy HTTP routing slots. Signing-secret setup and a test HTTP delivery are not required for pull receiving.",
|
|
1613
|
+
"description": "Creates a new webhook endpoint. If a deactivated endpoint\nwith the same URL and domain exists, it is reactivated\ninstead. Subject to plan limits on the number of active\nendpoints.\n\n**Signing is account-scoped, not per-endpoint.** This call\ndoes not return any signing material; every endpoint on the\naccount uses the same webhook secret, fetched via\n`GET /account/webhook-secret`. See the API-level \"Webhook\nsigning\" section for the full wire format (header name,\nsigned string, hash algo, secret format, tolerance) and a\nlanguage-agnostic verification recipe.\n\nAfter creating the endpoint, fire a test delivery against\nit via `POST /endpoints/{id}/test` to confirm your verifier\naccepts the signature.\n\n\nFor local receiving, use kind=pull and a stable name, without url, function_id or domain_id. Named creation resumes the same active destination; omitted filters preserve its selection, while conflicting supplied configuration returns 409. New unfiltered destinations receive all subsequently ready eligible event types within their credential scope. Connected-agent credentials automatically create private subscriptions restricted to inbound email for their assigned address. Names are isolated per credential; revocation or replacement deletes its subscriptions. Address-scoped events contain parsed mail without raw MIME, signed download links, routing metadata, or sibling envelope recipients. Pull destinations do not occupy HTTP routing slots. Signing-secret setup and a test HTTP delivery are not required for pull receiving.",
|
|
1487
1614
|
"tags": ["Endpoints"],
|
|
1488
1615
|
"requestBody": {
|
|
1489
1616
|
"required": true,
|
|
@@ -5337,7 +5464,15 @@ const openapiDocument = {
|
|
|
5337
5464
|
"event_content_unavailable",
|
|
5338
5465
|
"event_preparation_failed",
|
|
5339
5466
|
"subscription_unavailable",
|
|
5340
|
-
"stale_delivery"
|
|
5467
|
+
"stale_delivery",
|
|
5468
|
+
"idempotency_key_required",
|
|
5469
|
+
"idempotency_key_reused",
|
|
5470
|
+
"credit_code_invalid",
|
|
5471
|
+
"credit_code_already_redeemed",
|
|
5472
|
+
"credit_code_not_eligible",
|
|
5473
|
+
"credit_code_balance_cap",
|
|
5474
|
+
"rate_limited",
|
|
5475
|
+
"service_unavailable"
|
|
5341
5476
|
]
|
|
5342
5477
|
},
|
|
5343
5478
|
"message": { "type": "string" },
|
|
@@ -6303,6 +6438,148 @@ const openapiDocument = {
|
|
|
6303
6438
|
} },
|
|
6304
6439
|
"required": ["secret"]
|
|
6305
6440
|
},
|
|
6441
|
+
"RedeemCreditCodeInput": {
|
|
6442
|
+
"type": "object",
|
|
6443
|
+
"additionalProperties": false,
|
|
6444
|
+
"required": ["code"],
|
|
6445
|
+
"properties": { "code": {
|
|
6446
|
+
"type": "string",
|
|
6447
|
+
"pattern": "^\\s*\\S(?:[\\s\\S]{0,254}\\S)?\\s*$",
|
|
6448
|
+
"description": "The credit code to redeem. Surrounding whitespace is ignored; the\nrest must be 1 to 256 characters.\n"
|
|
6449
|
+
} }
|
|
6450
|
+
},
|
|
6451
|
+
"CreditRedemption": {
|
|
6452
|
+
"type": "object",
|
|
6453
|
+
"additionalProperties": false,
|
|
6454
|
+
"required": [
|
|
6455
|
+
"redemption_id",
|
|
6456
|
+
"amount_micros",
|
|
6457
|
+
"currency",
|
|
6458
|
+
"granted_at",
|
|
6459
|
+
"expires_at",
|
|
6460
|
+
"label",
|
|
6461
|
+
"replayed",
|
|
6462
|
+
"message"
|
|
6463
|
+
],
|
|
6464
|
+
"properties": {
|
|
6465
|
+
"redemption_id": {
|
|
6466
|
+
"type": "string",
|
|
6467
|
+
"description": "Identifier of the redemption."
|
|
6468
|
+
},
|
|
6469
|
+
"amount_micros": {
|
|
6470
|
+
"type": "string",
|
|
6471
|
+
"pattern": "^[0-9]+$",
|
|
6472
|
+
"description": "Credit granted, in micros of `currency` (1 USD = 1000000 micros)."
|
|
6473
|
+
},
|
|
6474
|
+
"currency": {
|
|
6475
|
+
"type": "string",
|
|
6476
|
+
"description": "Currency of the granted credit, for example `usd`."
|
|
6477
|
+
},
|
|
6478
|
+
"granted_at": {
|
|
6479
|
+
"type": "string",
|
|
6480
|
+
"format": "date-time",
|
|
6481
|
+
"description": "When the credit was granted."
|
|
6482
|
+
},
|
|
6483
|
+
"expires_at": {
|
|
6484
|
+
"type": ["string", "null"],
|
|
6485
|
+
"format": "date-time",
|
|
6486
|
+
"description": "When the granted credit expires, or null when it does not expire."
|
|
6487
|
+
},
|
|
6488
|
+
"label": {
|
|
6489
|
+
"type": ["string", "null"],
|
|
6490
|
+
"description": "Customer-facing label of the promotion, when it has one."
|
|
6491
|
+
},
|
|
6492
|
+
"replayed": {
|
|
6493
|
+
"type": "boolean",
|
|
6494
|
+
"description": "True when this Idempotency-Key already redeemed this code and the\noriginal grant is returned. No second grant is made.\n"
|
|
6495
|
+
},
|
|
6496
|
+
"message": {
|
|
6497
|
+
"type": "string",
|
|
6498
|
+
"description": "Human-readable summary of the grant, suitable to show as is."
|
|
6499
|
+
}
|
|
6500
|
+
}
|
|
6501
|
+
},
|
|
6502
|
+
"CreditBalance": {
|
|
6503
|
+
"type": "object",
|
|
6504
|
+
"required": ["budget"],
|
|
6505
|
+
"properties": {
|
|
6506
|
+
"budget": {
|
|
6507
|
+
"description": "The active agent spending budget an operator funded for top-ups,\nor null when there is none.\n",
|
|
6508
|
+
"type": ["object", "null"],
|
|
6509
|
+
"additionalProperties": false,
|
|
6510
|
+
"required": [
|
|
6511
|
+
"currency",
|
|
6512
|
+
"max_amount_micros",
|
|
6513
|
+
"spent_micros",
|
|
6514
|
+
"remaining_micros",
|
|
6515
|
+
"per_topup_cap_micros",
|
|
6516
|
+
"expires_at",
|
|
6517
|
+
"status"
|
|
6518
|
+
],
|
|
6519
|
+
"properties": {
|
|
6520
|
+
"currency": {
|
|
6521
|
+
"type": "string",
|
|
6522
|
+
"description": "Currency of the budget, for example `usd`."
|
|
6523
|
+
},
|
|
6524
|
+
"max_amount_micros": {
|
|
6525
|
+
"type": "string",
|
|
6526
|
+
"pattern": "^[0-9]+$",
|
|
6527
|
+
"description": "Total allowance the operator funded, in micros."
|
|
6528
|
+
},
|
|
6529
|
+
"spent_micros": {
|
|
6530
|
+
"type": "string",
|
|
6531
|
+
"pattern": "^[0-9]+$",
|
|
6532
|
+
"description": "How much of the allowance has been drawn down, in micros."
|
|
6533
|
+
},
|
|
6534
|
+
"remaining_micros": {
|
|
6535
|
+
"type": "string",
|
|
6536
|
+
"pattern": "^[0-9]+$",
|
|
6537
|
+
"description": "`max_amount_micros - spent_micros`, floored at zero."
|
|
6538
|
+
},
|
|
6539
|
+
"per_topup_cap_micros": {
|
|
6540
|
+
"type": ["string", "null"],
|
|
6541
|
+
"pattern": "^[0-9]+$",
|
|
6542
|
+
"description": "Largest single top-up allowed, in micros, or null for no per-top-up cap."
|
|
6543
|
+
},
|
|
6544
|
+
"expires_at": {
|
|
6545
|
+
"type": ["string", "null"],
|
|
6546
|
+
"format": "date-time",
|
|
6547
|
+
"description": "When the allowance expires, or null for no expiry."
|
|
6548
|
+
},
|
|
6549
|
+
"status": {
|
|
6550
|
+
"type": "string",
|
|
6551
|
+
"description": "Budget status. An active budget reads `active`."
|
|
6552
|
+
}
|
|
6553
|
+
}
|
|
6554
|
+
},
|
|
6555
|
+
"prepaid_credit": {
|
|
6556
|
+
"description": "Prepaid usage credit (top-ups, redeemed credit codes and granted\ncredit) that can still pay for usage, or null when there is none.\nOmitted when an exact figure cannot be given right now; the budget\nis still returned.\n",
|
|
6557
|
+
"type": ["object", "null"],
|
|
6558
|
+
"additionalProperties": false,
|
|
6559
|
+
"required": [
|
|
6560
|
+
"currency",
|
|
6561
|
+
"remaining_micros",
|
|
6562
|
+
"next_expires_at"
|
|
6563
|
+
],
|
|
6564
|
+
"properties": {
|
|
6565
|
+
"currency": {
|
|
6566
|
+
"type": "string",
|
|
6567
|
+
"description": "Currency of the credit, which is the organization billing currency."
|
|
6568
|
+
},
|
|
6569
|
+
"remaining_micros": {
|
|
6570
|
+
"type": "string",
|
|
6571
|
+
"pattern": "^[0-9]+$",
|
|
6572
|
+
"description": "What the credit can still pay for, in micros."
|
|
6573
|
+
},
|
|
6574
|
+
"next_expires_at": {
|
|
6575
|
+
"type": ["string", "null"],
|
|
6576
|
+
"format": "date-time",
|
|
6577
|
+
"description": "Earliest expiry among credits with a balance, or null when none of them expires."
|
|
6578
|
+
}
|
|
6579
|
+
}
|
|
6580
|
+
}
|
|
6581
|
+
}
|
|
6582
|
+
},
|
|
6306
6583
|
"InboxStatus": {
|
|
6307
6584
|
"type": "object",
|
|
6308
6585
|
"additionalProperties": false,
|
|
@@ -8667,14 +8944,16 @@ const openapiDocument = {
|
|
|
8667
8944
|
"oneOf": [
|
|
8668
8945
|
{ "$ref": "#/components/schemas/CompleteWebhookHttpInput" },
|
|
8669
8946
|
{ "$ref": "#/components/schemas/CompleteWebhookExecInput" },
|
|
8670
|
-
{ "$ref": "#/components/schemas/CompleteWebhookStdoutInput" }
|
|
8947
|
+
{ "$ref": "#/components/schemas/CompleteWebhookStdoutInput" },
|
|
8948
|
+
{ "$ref": "#/components/schemas/CompleteWebhookSdkInput" }
|
|
8671
8949
|
],
|
|
8672
8950
|
"discriminator": {
|
|
8673
8951
|
"propertyName": "mode",
|
|
8674
8952
|
"mapping": {
|
|
8675
8953
|
"http": "#/components/schemas/CompleteWebhookHttpInput",
|
|
8676
8954
|
"exec": "#/components/schemas/CompleteWebhookExecInput",
|
|
8677
|
-
"stdout": "#/components/schemas/CompleteWebhookStdoutInput"
|
|
8955
|
+
"stdout": "#/components/schemas/CompleteWebhookStdoutInput",
|
|
8956
|
+
"sdk": "#/components/schemas/CompleteWebhookSdkInput"
|
|
8678
8957
|
}
|
|
8679
8958
|
}
|
|
8680
8959
|
},
|
|
@@ -8828,6 +9107,49 @@ const openapiDocument = {
|
|
|
8828
9107
|
],
|
|
8829
9108
|
"additionalProperties": false
|
|
8830
9109
|
},
|
|
9110
|
+
"CompleteWebhookSdkInput": {
|
|
9111
|
+
"type": "object",
|
|
9112
|
+
"properties": {
|
|
9113
|
+
"queue_id": {
|
|
9114
|
+
"type": "string",
|
|
9115
|
+
"format": "uuid",
|
|
9116
|
+
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
|
|
9117
|
+
},
|
|
9118
|
+
"delivery_id": {
|
|
9119
|
+
"type": "string",
|
|
9120
|
+
"format": "uuid",
|
|
9121
|
+
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
|
|
9122
|
+
},
|
|
9123
|
+
"lease_token": {
|
|
9124
|
+
"type": "string",
|
|
9125
|
+
"format": "uuid",
|
|
9126
|
+
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
|
|
9127
|
+
},
|
|
9128
|
+
"duration_ms": {
|
|
9129
|
+
"type": "integer",
|
|
9130
|
+
"minimum": 0,
|
|
9131
|
+
"maximum": 3e4
|
|
9132
|
+
},
|
|
9133
|
+
"mode": {
|
|
9134
|
+
"type": "string",
|
|
9135
|
+
"enum": ["sdk"]
|
|
9136
|
+
},
|
|
9137
|
+
"accepted": { "type": "boolean" },
|
|
9138
|
+
"transport_error": {
|
|
9139
|
+
"type": "string",
|
|
9140
|
+
"enum": ["timeout", "io"]
|
|
9141
|
+
}
|
|
9142
|
+
},
|
|
9143
|
+
"required": [
|
|
9144
|
+
"queue_id",
|
|
9145
|
+
"delivery_id",
|
|
9146
|
+
"lease_token",
|
|
9147
|
+
"duration_ms",
|
|
9148
|
+
"mode",
|
|
9149
|
+
"accepted"
|
|
9150
|
+
],
|
|
9151
|
+
"additionalProperties": false
|
|
9152
|
+
},
|
|
8831
9153
|
"CompleteWebhookResponse": {
|
|
8832
9154
|
"type": "object",
|
|
8833
9155
|
"properties": {
|
|
@@ -8861,6 +9183,35 @@ const openapiDocument = {
|
|
|
8861
9183
|
"Endpoint": {
|
|
8862
9184
|
"type": "object",
|
|
8863
9185
|
"properties": {
|
|
9186
|
+
"recipient": {
|
|
9187
|
+
"type": ["string", "null"],
|
|
9188
|
+
"description": "Server-enforced recipient for an address-scoped pull subscription; null for account-wide receiving."
|
|
9189
|
+
},
|
|
9190
|
+
"receiver_capabilities": {
|
|
9191
|
+
"type": "object",
|
|
9192
|
+
"properties": {
|
|
9193
|
+
"completion_modes": {
|
|
9194
|
+
"type": "array",
|
|
9195
|
+
"items": {
|
|
9196
|
+
"type": "string",
|
|
9197
|
+
"enum": [
|
|
9198
|
+
"http",
|
|
9199
|
+
"exec",
|
|
9200
|
+
"stdout",
|
|
9201
|
+
"sdk"
|
|
9202
|
+
]
|
|
9203
|
+
}
|
|
9204
|
+
},
|
|
9205
|
+
"stream_protocols": {
|
|
9206
|
+
"type": "array",
|
|
9207
|
+
"items": {
|
|
9208
|
+
"type": "string",
|
|
9209
|
+
"enum": ["primitive.events.v1"]
|
|
9210
|
+
}
|
|
9211
|
+
}
|
|
9212
|
+
},
|
|
9213
|
+
"required": ["completion_modes", "stream_protocols"]
|
|
9214
|
+
},
|
|
8864
9215
|
"id": {
|
|
8865
9216
|
"type": "string",
|
|
8866
9217
|
"format": "uuid"
|
|
@@ -12671,6 +13022,181 @@ const operationManifest = [
|
|
|
12671
13022
|
"tag": "CLI",
|
|
12672
13023
|
"tagCommand": "cli"
|
|
12673
13024
|
},
|
|
13025
|
+
{
|
|
13026
|
+
"binaryResponse": false,
|
|
13027
|
+
"bodyRequired": false,
|
|
13028
|
+
"command": "get-credit-balance",
|
|
13029
|
+
"description": "Read the organization credit position. `prepaid_credit` is the prepaid\nusage credit (paid top-ups, redeemed credit codes and granted credit)\nthat can still pay for usage. `budget` is the active agent spending\nbudget an operator funded for top-ups, or null when there is none.\nAmounts are strings of integer micros (1 USD = 1000000 micros).\n",
|
|
13030
|
+
"hasJsonBody": false,
|
|
13031
|
+
"method": "GET",
|
|
13032
|
+
"operationId": "getCreditBalance",
|
|
13033
|
+
"path": "/credits/balance",
|
|
13034
|
+
"pathParams": [],
|
|
13035
|
+
"queryParams": [],
|
|
13036
|
+
"requestSchema": null,
|
|
13037
|
+
"responseSchema": {
|
|
13038
|
+
"type": "object",
|
|
13039
|
+
"required": ["budget"],
|
|
13040
|
+
"properties": {
|
|
13041
|
+
"budget": {
|
|
13042
|
+
"description": "The active agent spending budget an operator funded for top-ups,\nor null when there is none.\n",
|
|
13043
|
+
"type": ["object", "null"],
|
|
13044
|
+
"additionalProperties": false,
|
|
13045
|
+
"required": [
|
|
13046
|
+
"currency",
|
|
13047
|
+
"max_amount_micros",
|
|
13048
|
+
"spent_micros",
|
|
13049
|
+
"remaining_micros",
|
|
13050
|
+
"per_topup_cap_micros",
|
|
13051
|
+
"expires_at",
|
|
13052
|
+
"status"
|
|
13053
|
+
],
|
|
13054
|
+
"properties": {
|
|
13055
|
+
"currency": {
|
|
13056
|
+
"type": "string",
|
|
13057
|
+
"description": "Currency of the budget, for example `usd`."
|
|
13058
|
+
},
|
|
13059
|
+
"max_amount_micros": {
|
|
13060
|
+
"type": "string",
|
|
13061
|
+
"pattern": "^[0-9]+$",
|
|
13062
|
+
"description": "Total allowance the operator funded, in micros."
|
|
13063
|
+
},
|
|
13064
|
+
"spent_micros": {
|
|
13065
|
+
"type": "string",
|
|
13066
|
+
"pattern": "^[0-9]+$",
|
|
13067
|
+
"description": "How much of the allowance has been drawn down, in micros."
|
|
13068
|
+
},
|
|
13069
|
+
"remaining_micros": {
|
|
13070
|
+
"type": "string",
|
|
13071
|
+
"pattern": "^[0-9]+$",
|
|
13072
|
+
"description": "`max_amount_micros - spent_micros`, floored at zero."
|
|
13073
|
+
},
|
|
13074
|
+
"per_topup_cap_micros": {
|
|
13075
|
+
"type": ["string", "null"],
|
|
13076
|
+
"pattern": "^[0-9]+$",
|
|
13077
|
+
"description": "Largest single top-up allowed, in micros, or null for no per-top-up cap."
|
|
13078
|
+
},
|
|
13079
|
+
"expires_at": {
|
|
13080
|
+
"type": ["string", "null"],
|
|
13081
|
+
"format": "date-time",
|
|
13082
|
+
"description": "When the allowance expires, or null for no expiry."
|
|
13083
|
+
},
|
|
13084
|
+
"status": {
|
|
13085
|
+
"type": "string",
|
|
13086
|
+
"description": "Budget status. An active budget reads `active`."
|
|
13087
|
+
}
|
|
13088
|
+
}
|
|
13089
|
+
},
|
|
13090
|
+
"prepaid_credit": {
|
|
13091
|
+
"description": "Prepaid usage credit (top-ups, redeemed credit codes and granted\ncredit) that can still pay for usage, or null when there is none.\nOmitted when an exact figure cannot be given right now; the budget\nis still returned.\n",
|
|
13092
|
+
"type": ["object", "null"],
|
|
13093
|
+
"additionalProperties": false,
|
|
13094
|
+
"required": [
|
|
13095
|
+
"currency",
|
|
13096
|
+
"remaining_micros",
|
|
13097
|
+
"next_expires_at"
|
|
13098
|
+
],
|
|
13099
|
+
"properties": {
|
|
13100
|
+
"currency": {
|
|
13101
|
+
"type": "string",
|
|
13102
|
+
"description": "Currency of the credit, which is the organization billing currency."
|
|
13103
|
+
},
|
|
13104
|
+
"remaining_micros": {
|
|
13105
|
+
"type": "string",
|
|
13106
|
+
"pattern": "^[0-9]+$",
|
|
13107
|
+
"description": "What the credit can still pay for, in micros."
|
|
13108
|
+
},
|
|
13109
|
+
"next_expires_at": {
|
|
13110
|
+
"type": ["string", "null"],
|
|
13111
|
+
"format": "date-time",
|
|
13112
|
+
"description": "Earliest expiry among credits with a balance, or null when none of them expires."
|
|
13113
|
+
}
|
|
13114
|
+
}
|
|
13115
|
+
}
|
|
13116
|
+
}
|
|
13117
|
+
},
|
|
13118
|
+
"sdkName": "getCreditBalance",
|
|
13119
|
+
"summary": "Get credit balance",
|
|
13120
|
+
"tag": "Credits",
|
|
13121
|
+
"tagCommand": "credits"
|
|
13122
|
+
},
|
|
13123
|
+
{
|
|
13124
|
+
"binaryResponse": false,
|
|
13125
|
+
"bodyRequired": true,
|
|
13126
|
+
"command": "redeem-credit-code",
|
|
13127
|
+
"description": "Redeem a credit code for the authenticated organization. The credit is\nadded to the organization prepaid credit and shows in\n`GET /credits/balance` under `prepaid_credit`.\n\nRedeeming requires an organization owner or admin. An API key redeems\nwith the authority of the user who created it, based on that user's\ncurrent role; a key without that authority gets the same\n`credit_code_invalid` refusal as an unknown code.\n\nThe `Idempotency-Key` header is required. Retrying with the same key\nand code returns the original grant with `replayed: true` and grants\nnothing new; the same key with a different code is refused with\n`idempotency_key_reused`. Every refusal carries a human-readable\n`error.message` that can be shown to the user as is.\n",
|
|
13128
|
+
"hasJsonBody": true,
|
|
13129
|
+
"method": "POST",
|
|
13130
|
+
"operationId": "redeemCreditCode",
|
|
13131
|
+
"path": "/credits/redeem",
|
|
13132
|
+
"pathParams": [],
|
|
13133
|
+
"queryParams": [],
|
|
13134
|
+
"requestSchema": {
|
|
13135
|
+
"type": "object",
|
|
13136
|
+
"additionalProperties": false,
|
|
13137
|
+
"required": ["code"],
|
|
13138
|
+
"properties": { "code": {
|
|
13139
|
+
"type": "string",
|
|
13140
|
+
"pattern": "^\\s*\\S(?:[\\s\\S]{0,254}\\S)?\\s*$",
|
|
13141
|
+
"description": "The credit code to redeem. Surrounding whitespace is ignored; the\nrest must be 1 to 256 characters.\n"
|
|
13142
|
+
} }
|
|
13143
|
+
},
|
|
13144
|
+
"responseSchema": {
|
|
13145
|
+
"type": "object",
|
|
13146
|
+
"additionalProperties": false,
|
|
13147
|
+
"required": [
|
|
13148
|
+
"redemption_id",
|
|
13149
|
+
"amount_micros",
|
|
13150
|
+
"currency",
|
|
13151
|
+
"granted_at",
|
|
13152
|
+
"expires_at",
|
|
13153
|
+
"label",
|
|
13154
|
+
"replayed",
|
|
13155
|
+
"message"
|
|
13156
|
+
],
|
|
13157
|
+
"properties": {
|
|
13158
|
+
"redemption_id": {
|
|
13159
|
+
"type": "string",
|
|
13160
|
+
"description": "Identifier of the redemption."
|
|
13161
|
+
},
|
|
13162
|
+
"amount_micros": {
|
|
13163
|
+
"type": "string",
|
|
13164
|
+
"pattern": "^[0-9]+$",
|
|
13165
|
+
"description": "Credit granted, in micros of `currency` (1 USD = 1000000 micros)."
|
|
13166
|
+
},
|
|
13167
|
+
"currency": {
|
|
13168
|
+
"type": "string",
|
|
13169
|
+
"description": "Currency of the granted credit, for example `usd`."
|
|
13170
|
+
},
|
|
13171
|
+
"granted_at": {
|
|
13172
|
+
"type": "string",
|
|
13173
|
+
"format": "date-time",
|
|
13174
|
+
"description": "When the credit was granted."
|
|
13175
|
+
},
|
|
13176
|
+
"expires_at": {
|
|
13177
|
+
"type": ["string", "null"],
|
|
13178
|
+
"format": "date-time",
|
|
13179
|
+
"description": "When the granted credit expires, or null when it does not expire."
|
|
13180
|
+
},
|
|
13181
|
+
"label": {
|
|
13182
|
+
"type": ["string", "null"],
|
|
13183
|
+
"description": "Customer-facing label of the promotion, when it has one."
|
|
13184
|
+
},
|
|
13185
|
+
"replayed": {
|
|
13186
|
+
"type": "boolean",
|
|
13187
|
+
"description": "True when this Idempotency-Key already redeemed this code and the\noriginal grant is returned. No second grant is made.\n"
|
|
13188
|
+
},
|
|
13189
|
+
"message": {
|
|
13190
|
+
"type": "string",
|
|
13191
|
+
"description": "Human-readable summary of the grant, suitable to show as is."
|
|
13192
|
+
}
|
|
13193
|
+
}
|
|
13194
|
+
},
|
|
13195
|
+
"sdkName": "redeemCreditCode",
|
|
13196
|
+
"summary": "Redeem a credit code",
|
|
13197
|
+
"tag": "Credits",
|
|
13198
|
+
"tagCommand": "credits"
|
|
13199
|
+
},
|
|
12674
13200
|
{
|
|
12675
13201
|
"binaryResponse": false,
|
|
12676
13202
|
"bodyRequired": true,
|
|
@@ -15170,6 +15696,49 @@ const operationManifest = [
|
|
|
15170
15696
|
"write_succeeded"
|
|
15171
15697
|
],
|
|
15172
15698
|
"additionalProperties": false
|
|
15699
|
+
},
|
|
15700
|
+
{
|
|
15701
|
+
"type": "object",
|
|
15702
|
+
"properties": {
|
|
15703
|
+
"queue_id": {
|
|
15704
|
+
"type": "string",
|
|
15705
|
+
"format": "uuid",
|
|
15706
|
+
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
|
|
15707
|
+
},
|
|
15708
|
+
"delivery_id": {
|
|
15709
|
+
"type": "string",
|
|
15710
|
+
"format": "uuid",
|
|
15711
|
+
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
|
|
15712
|
+
},
|
|
15713
|
+
"lease_token": {
|
|
15714
|
+
"type": "string",
|
|
15715
|
+
"format": "uuid",
|
|
15716
|
+
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
|
|
15717
|
+
},
|
|
15718
|
+
"duration_ms": {
|
|
15719
|
+
"type": "integer",
|
|
15720
|
+
"minimum": 0,
|
|
15721
|
+
"maximum": 3e4
|
|
15722
|
+
},
|
|
15723
|
+
"mode": {
|
|
15724
|
+
"type": "string",
|
|
15725
|
+
"enum": ["sdk"]
|
|
15726
|
+
},
|
|
15727
|
+
"accepted": { "type": "boolean" },
|
|
15728
|
+
"transport_error": {
|
|
15729
|
+
"type": "string",
|
|
15730
|
+
"enum": ["timeout", "io"]
|
|
15731
|
+
}
|
|
15732
|
+
},
|
|
15733
|
+
"required": [
|
|
15734
|
+
"queue_id",
|
|
15735
|
+
"delivery_id",
|
|
15736
|
+
"lease_token",
|
|
15737
|
+
"duration_ms",
|
|
15738
|
+
"mode",
|
|
15739
|
+
"accepted"
|
|
15740
|
+
],
|
|
15741
|
+
"additionalProperties": false
|
|
15173
15742
|
}
|
|
15174
15743
|
],
|
|
15175
15744
|
"discriminator": {
|
|
@@ -15177,7 +15746,8 @@ const operationManifest = [
|
|
|
15177
15746
|
"mapping": {
|
|
15178
15747
|
"http": "#/components/schemas/CompleteWebhookHttpInput",
|
|
15179
15748
|
"exec": "#/components/schemas/CompleteWebhookExecInput",
|
|
15180
|
-
"stdout": "#/components/schemas/CompleteWebhookStdoutInput"
|
|
15749
|
+
"stdout": "#/components/schemas/CompleteWebhookStdoutInput",
|
|
15750
|
+
"sdk": "#/components/schemas/CompleteWebhookSdkInput"
|
|
15181
15751
|
}
|
|
15182
15752
|
}
|
|
15183
15753
|
},
|
|
@@ -15220,7 +15790,7 @@ const operationManifest = [
|
|
|
15220
15790
|
"binaryResponse": false,
|
|
15221
15791
|
"bodyRequired": true,
|
|
15222
15792
|
"command": "create-endpoint",
|
|
15223
|
-
"description": "Creates a new webhook endpoint. If a deactivated endpoint\nwith the same URL and domain exists, it is reactivated\ninstead. Subject to plan limits on the number of active\nendpoints.\n\n**Signing is account-scoped, not per-endpoint.** This call\ndoes not return any signing material; every endpoint on the\naccount uses the same webhook secret, fetched via\n`GET /account/webhook-secret`. See the API-level \"Webhook\nsigning\" section for the full wire format (header name,\nsigned string, hash algo, secret format, tolerance) and a\nlanguage-agnostic verification recipe.\n\nAfter creating the endpoint, fire a test delivery against\nit via `POST /endpoints/{id}/test` to confirm your verifier\naccepts the signature.\n\n\nFor local receiving, use kind=pull and a stable name, without url, function_id or domain_id. Named creation resumes the same active destination; omitted filters preserve its selection, while conflicting supplied configuration returns 409. New unfiltered destinations receive all subsequently ready eligible event types. Pull destinations do not occupy HTTP routing slots. Signing-secret setup and a test HTTP delivery are not required for pull receiving.",
|
|
15793
|
+
"description": "Creates a new webhook endpoint. If a deactivated endpoint\nwith the same URL and domain exists, it is reactivated\ninstead. Subject to plan limits on the number of active\nendpoints.\n\n**Signing is account-scoped, not per-endpoint.** This call\ndoes not return any signing material; every endpoint on the\naccount uses the same webhook secret, fetched via\n`GET /account/webhook-secret`. See the API-level \"Webhook\nsigning\" section for the full wire format (header name,\nsigned string, hash algo, secret format, tolerance) and a\nlanguage-agnostic verification recipe.\n\nAfter creating the endpoint, fire a test delivery against\nit via `POST /endpoints/{id}/test` to confirm your verifier\naccepts the signature.\n\n\nFor local receiving, use kind=pull and a stable name, without url, function_id or domain_id. Named creation resumes the same active destination; omitted filters preserve its selection, while conflicting supplied configuration returns 409. New unfiltered destinations receive all subsequently ready eligible event types within their credential scope. Connected-agent credentials automatically create private subscriptions restricted to inbound email for their assigned address. Names are isolated per credential; revocation or replacement deletes its subscriptions. Address-scoped events contain parsed mail without raw MIME, signed download links, routing metadata, or sibling envelope recipients. Pull destinations do not occupy HTTP routing slots. Signing-secret setup and a test HTTP delivery are not required for pull receiving.",
|
|
15224
15794
|
"hasJsonBody": true,
|
|
15225
15795
|
"method": "POST",
|
|
15226
15796
|
"operationId": "createEndpoint",
|
|
@@ -15288,6 +15858,35 @@ const operationManifest = [
|
|
|
15288
15858
|
"responseSchema": {
|
|
15289
15859
|
"type": "object",
|
|
15290
15860
|
"properties": {
|
|
15861
|
+
"recipient": {
|
|
15862
|
+
"type": ["string", "null"],
|
|
15863
|
+
"description": "Server-enforced recipient for an address-scoped pull subscription; null for account-wide receiving."
|
|
15864
|
+
},
|
|
15865
|
+
"receiver_capabilities": {
|
|
15866
|
+
"type": "object",
|
|
15867
|
+
"properties": {
|
|
15868
|
+
"completion_modes": {
|
|
15869
|
+
"type": "array",
|
|
15870
|
+
"items": {
|
|
15871
|
+
"type": "string",
|
|
15872
|
+
"enum": [
|
|
15873
|
+
"http",
|
|
15874
|
+
"exec",
|
|
15875
|
+
"stdout",
|
|
15876
|
+
"sdk"
|
|
15877
|
+
]
|
|
15878
|
+
}
|
|
15879
|
+
},
|
|
15880
|
+
"stream_protocols": {
|
|
15881
|
+
"type": "array",
|
|
15882
|
+
"items": {
|
|
15883
|
+
"type": "string",
|
|
15884
|
+
"enum": ["primitive.events.v1"]
|
|
15885
|
+
}
|
|
15886
|
+
}
|
|
15887
|
+
},
|
|
15888
|
+
"required": ["completion_modes", "stream_protocols"]
|
|
15889
|
+
},
|
|
15291
15890
|
"id": {
|
|
15292
15891
|
"type": "string",
|
|
15293
15892
|
"format": "uuid"
|
|
@@ -15439,6 +16038,35 @@ const operationManifest = [
|
|
|
15439
16038
|
"items": {
|
|
15440
16039
|
"type": "object",
|
|
15441
16040
|
"properties": {
|
|
16041
|
+
"recipient": {
|
|
16042
|
+
"type": ["string", "null"],
|
|
16043
|
+
"description": "Server-enforced recipient for an address-scoped pull subscription; null for account-wide receiving."
|
|
16044
|
+
},
|
|
16045
|
+
"receiver_capabilities": {
|
|
16046
|
+
"type": "object",
|
|
16047
|
+
"properties": {
|
|
16048
|
+
"completion_modes": {
|
|
16049
|
+
"type": "array",
|
|
16050
|
+
"items": {
|
|
16051
|
+
"type": "string",
|
|
16052
|
+
"enum": [
|
|
16053
|
+
"http",
|
|
16054
|
+
"exec",
|
|
16055
|
+
"stdout",
|
|
16056
|
+
"sdk"
|
|
16057
|
+
]
|
|
16058
|
+
}
|
|
16059
|
+
},
|
|
16060
|
+
"stream_protocols": {
|
|
16061
|
+
"type": "array",
|
|
16062
|
+
"items": {
|
|
16063
|
+
"type": "string",
|
|
16064
|
+
"enum": ["primitive.events.v1"]
|
|
16065
|
+
}
|
|
16066
|
+
}
|
|
16067
|
+
},
|
|
16068
|
+
"required": ["completion_modes", "stream_protocols"]
|
|
16069
|
+
},
|
|
15442
16070
|
"id": {
|
|
15443
16071
|
"type": "string",
|
|
15444
16072
|
"format": "uuid"
|
|
@@ -15880,6 +16508,35 @@ const operationManifest = [
|
|
|
15880
16508
|
"responseSchema": {
|
|
15881
16509
|
"type": "object",
|
|
15882
16510
|
"properties": {
|
|
16511
|
+
"recipient": {
|
|
16512
|
+
"type": ["string", "null"],
|
|
16513
|
+
"description": "Server-enforced recipient for an address-scoped pull subscription; null for account-wide receiving."
|
|
16514
|
+
},
|
|
16515
|
+
"receiver_capabilities": {
|
|
16516
|
+
"type": "object",
|
|
16517
|
+
"properties": {
|
|
16518
|
+
"completion_modes": {
|
|
16519
|
+
"type": "array",
|
|
16520
|
+
"items": {
|
|
16521
|
+
"type": "string",
|
|
16522
|
+
"enum": [
|
|
16523
|
+
"http",
|
|
16524
|
+
"exec",
|
|
16525
|
+
"stdout",
|
|
16526
|
+
"sdk"
|
|
16527
|
+
]
|
|
16528
|
+
}
|
|
16529
|
+
},
|
|
16530
|
+
"stream_protocols": {
|
|
16531
|
+
"type": "array",
|
|
16532
|
+
"items": {
|
|
16533
|
+
"type": "string",
|
|
16534
|
+
"enum": ["primitive.events.v1"]
|
|
16535
|
+
}
|
|
16536
|
+
}
|
|
16537
|
+
},
|
|
16538
|
+
"required": ["completion_modes", "stream_protocols"]
|
|
16539
|
+
},
|
|
15883
16540
|
"id": {
|
|
15884
16541
|
"type": "string",
|
|
15885
16542
|
"format": "uuid"
|