@epilot/cli 0.1.154 → 0.1.156
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 +1 -1
- package/definitions/access-token.json +193 -3
- package/dist/bin/epilot.js +6 -6
- package/dist/{chunk-V3XTUOKN.js → chunk-PZQM3BWY.js} +4 -2
- package/dist/{completion-ZKB2LRUW.js → completion-6CAE47TY.js} +1 -1
- package/dist/{upgrade-66YVWUZD.js → upgrade-HYRPUAWP.js} +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -86,6 +86,20 @@
|
|
|
86
86
|
"739224:e5c1f9b1-e41d-421d-83c4-c5626e464430"
|
|
87
87
|
]
|
|
88
88
|
}
|
|
89
|
+
},
|
|
90
|
+
"contact_identification": {
|
|
91
|
+
"value": {
|
|
92
|
+
"name": "Contact Identification Token",
|
|
93
|
+
"token_type": "contact_identification",
|
|
94
|
+
"portal_id": "portal_abc123",
|
|
95
|
+
"contact_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
|
|
96
|
+
"surface_id": "website-journeys",
|
|
97
|
+
"allowed_operations": [
|
|
98
|
+
"getContact",
|
|
99
|
+
"getContracts"
|
|
100
|
+
],
|
|
101
|
+
"expires_in": 300
|
|
102
|
+
}
|
|
89
103
|
}
|
|
90
104
|
}
|
|
91
105
|
}
|
|
@@ -495,6 +509,98 @@
|
|
|
495
509
|
}
|
|
496
510
|
}
|
|
497
511
|
}
|
|
512
|
+
},
|
|
513
|
+
"/v1/access-tokens/contact-identification/.well-known/jwks.json": {
|
|
514
|
+
"get": {
|
|
515
|
+
"operationId": "getContactIdentificationTokenJwks",
|
|
516
|
+
"summary": "getContactIdentificationTokenJwks",
|
|
517
|
+
"description": "Get jwks public key set to verify contact identification tokens generated by this API",
|
|
518
|
+
"tags": [
|
|
519
|
+
"Public"
|
|
520
|
+
],
|
|
521
|
+
"security": [],
|
|
522
|
+
"responses": {
|
|
523
|
+
"200": {
|
|
524
|
+
"description": "Set of jwks",
|
|
525
|
+
"content": {
|
|
526
|
+
"application/json": {
|
|
527
|
+
"schema": {
|
|
528
|
+
"type": "object",
|
|
529
|
+
"properties": {
|
|
530
|
+
"keys": {
|
|
531
|
+
"type": "array",
|
|
532
|
+
"items": {
|
|
533
|
+
"type": "object",
|
|
534
|
+
"properties": {
|
|
535
|
+
"alg": {
|
|
536
|
+
"type": "string",
|
|
537
|
+
"example": "RS256"
|
|
538
|
+
},
|
|
539
|
+
"e": {
|
|
540
|
+
"type": "string",
|
|
541
|
+
"example": "AQAB"
|
|
542
|
+
},
|
|
543
|
+
"kid": {
|
|
544
|
+
"type": "string",
|
|
545
|
+
"example": "tXWU5mPMbRPczpbQwi6vbhLF4GgF3wlMDSyqo7pfeiw="
|
|
546
|
+
},
|
|
547
|
+
"kty": {
|
|
548
|
+
"type": "string",
|
|
549
|
+
"example": "RSA"
|
|
550
|
+
},
|
|
551
|
+
"n": {
|
|
552
|
+
"type": "string",
|
|
553
|
+
"example": "h_QDoCjZ8W_trtYXaP7_S22wf5r5Wd9XBLED78oT44bJjQXn8ddcFV8Hik65_4IYXVX_hTTU4zpxe3H8vx2j7-Zz3O59mYMp5S0MzODNEdf5Y_2o19eis0brmAJniixsNlQ9LlYkdrVamrgaxHu3ZpP_99zkfFybYeuYoQNzb3PyrT8xVnz_USs_nlFMHpGUxvvz7gfKPqxcLvgLJr4cwI9yzaSY9CD4qW181QVcnL_WzpQ8xx6AuhhHZQ1l_3GG4InTk8ahE7U2ZHVu8RrX6d01pMgc3piEcet9RgFLnhbTg3YIiKGoAbN42wJn_x3lgIAC42T9mbmTsHyUdS6nUQ"
|
|
554
|
+
},
|
|
555
|
+
"use": {
|
|
556
|
+
"type": "string",
|
|
557
|
+
"example": "sig"
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
},
|
|
570
|
+
"/v1/access-tokens/contact-identification/.well-known/openid-configuration": {
|
|
571
|
+
"get": {
|
|
572
|
+
"operationId": "getContactIdentificationTokenOIDC",
|
|
573
|
+
"summary": "getContactIdentificationTokenOIDC",
|
|
574
|
+
"description": "OpenID Connect configuration for Access Token API as a contact identification identity provider\n\nNote: This API is not a fully compliant OAuth2.0 / OIDC identity provider, but this endpoint is useful to\nautomate the process of verifying JWT tokens.\n",
|
|
575
|
+
"tags": [
|
|
576
|
+
"Public"
|
|
577
|
+
],
|
|
578
|
+
"security": [],
|
|
579
|
+
"responses": {
|
|
580
|
+
"200": {
|
|
581
|
+
"description": "OpenID Configuration",
|
|
582
|
+
"content": {
|
|
583
|
+
"application/json": {
|
|
584
|
+
"schema": {
|
|
585
|
+
"type": "object",
|
|
586
|
+
"properties": {
|
|
587
|
+
"issuer": {
|
|
588
|
+
"type": "string",
|
|
589
|
+
"format": "uri",
|
|
590
|
+
"example": "https://access-token.sls.epilot.io/v1/access-tokens/contact-identification"
|
|
591
|
+
},
|
|
592
|
+
"jwks_uri": {
|
|
593
|
+
"type": "string",
|
|
594
|
+
"format": "uri",
|
|
595
|
+
"example": "https://access-token.sls.epilot.io/v1/access-tokens/contact-identification/.well-known/jwks.json"
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
}
|
|
498
604
|
}
|
|
499
605
|
},
|
|
500
606
|
"components": {
|
|
@@ -535,7 +641,8 @@
|
|
|
535
641
|
"portal",
|
|
536
642
|
"assume",
|
|
537
643
|
"app",
|
|
538
|
-
"portal_preview"
|
|
644
|
+
"portal_preview",
|
|
645
|
+
"contact_identification"
|
|
539
646
|
],
|
|
540
647
|
"description": "Access token type",
|
|
541
648
|
"example": "api"
|
|
@@ -552,6 +659,22 @@
|
|
|
552
659
|
"type": "string",
|
|
553
660
|
"description": "Portal User ID for access token type \"portal_preview\""
|
|
554
661
|
},
|
|
662
|
+
"ContactId": {
|
|
663
|
+
"type": "string",
|
|
664
|
+
"description": "Contact entity ID for access token type \"contact_identification\"",
|
|
665
|
+
"example": "5da0a718-c822-403d-9f5d-20d4584e0528"
|
|
666
|
+
},
|
|
667
|
+
"AllowedOperations": {
|
|
668
|
+
"type": "array",
|
|
669
|
+
"description": "openapi operationIds the token may call. Enforced by the API that consumes the token, which must additionally deny any operation not on this list. Baked into the token at issue time so widening the consumer's own allowlist later cannot retroactively widen a token that is already in circulation.",
|
|
670
|
+
"items": {
|
|
671
|
+
"type": "string"
|
|
672
|
+
},
|
|
673
|
+
"example": [
|
|
674
|
+
"getContact",
|
|
675
|
+
"getContracts"
|
|
676
|
+
]
|
|
677
|
+
},
|
|
555
678
|
"TokenParameters": {
|
|
556
679
|
"anyOf": [
|
|
557
680
|
{
|
|
@@ -571,6 +694,9 @@
|
|
|
571
694
|
},
|
|
572
695
|
{
|
|
573
696
|
"$ref": "#/components/schemas/PortalPreviewTokenParameters"
|
|
697
|
+
},
|
|
698
|
+
{
|
|
699
|
+
"$ref": "#/components/schemas/ContactIdentificationTokenParameters"
|
|
574
700
|
}
|
|
575
701
|
]
|
|
576
702
|
},
|
|
@@ -579,10 +705,10 @@
|
|
|
579
705
|
{
|
|
580
706
|
"type": "integer",
|
|
581
707
|
"format": "int32",
|
|
582
|
-
"description": "Expiration time in seconds",
|
|
708
|
+
"description": "Expiration time in seconds. api tokens may live up to 365 days (31536000); all other token types are capped at 7 days (604800) server-side.",
|
|
583
709
|
"example": 3600,
|
|
584
710
|
"minimum": 30,
|
|
585
|
-
"maximum":
|
|
711
|
+
"maximum": 31536000
|
|
586
712
|
},
|
|
587
713
|
{
|
|
588
714
|
"type": "string",
|
|
@@ -766,6 +892,58 @@
|
|
|
766
892
|
"portal_user_id"
|
|
767
893
|
]
|
|
768
894
|
},
|
|
895
|
+
"ContactIdentificationTokenParameters": {
|
|
896
|
+
"type": "object",
|
|
897
|
+
"additionalProperties": false,
|
|
898
|
+
"description": "A token that acts as one contact, issued after that contact was identified by a portal's registration identifiers rather than by logging in. Distinct from portal_preview, which impersonates an existing portal user for a 360 operator: this kind belongs to no user, is minted for an unauthenticated caller, and is therefore always short-lived and restricted to an explicit operation allowlist. Never stored, so it cannot be listed or revoked - keep expires_in short.",
|
|
899
|
+
"properties": {
|
|
900
|
+
"name": {
|
|
901
|
+
"$ref": "#/components/schemas/AccessTokenName"
|
|
902
|
+
},
|
|
903
|
+
"token_type": {
|
|
904
|
+
"type": "string",
|
|
905
|
+
"enum": [
|
|
906
|
+
"contact_identification"
|
|
907
|
+
]
|
|
908
|
+
},
|
|
909
|
+
"portal_id": {
|
|
910
|
+
"$ref": "#/components/schemas/PortalId"
|
|
911
|
+
},
|
|
912
|
+
"contact_id": {
|
|
913
|
+
"$ref": "#/components/schemas/ContactId"
|
|
914
|
+
},
|
|
915
|
+
"surface_id": {
|
|
916
|
+
"type": "string",
|
|
917
|
+
"minLength": 1,
|
|
918
|
+
"maxLength": 64,
|
|
919
|
+
"description": "Portal surface the token is issued for (see `surfaces` on the portal config in customer-portal-api). Carried as the `custom:surface_id` claim; the consuming API resolves the surface's data access from the portal config on every request.",
|
|
920
|
+
"example": "website-journeys"
|
|
921
|
+
},
|
|
922
|
+
"allowed_operations": {
|
|
923
|
+
"$ref": "#/components/schemas/AllowedOperations"
|
|
924
|
+
},
|
|
925
|
+
"expires_in": {
|
|
926
|
+
"type": "integer",
|
|
927
|
+
"format": "int32",
|
|
928
|
+
"minimum": 60,
|
|
929
|
+
"maximum": 900,
|
|
930
|
+
"description": "Lifetime in seconds. Integer only for this token type (no \"5m\" strings), and capped server-side by CONTACT_IDENTIFICATION_TOKEN_MAX_EXPIRATION_SECONDS - the value originates from portal configuration, so it is not trusted as-is.",
|
|
931
|
+
"example": 300
|
|
932
|
+
},
|
|
933
|
+
"email": {
|
|
934
|
+
"type": "string",
|
|
935
|
+
"description": "Optional. Carried as the `email` claim when the consumer needs it (e.g. to attribute an activity). Omit to keep the contact's email out of the token."
|
|
936
|
+
}
|
|
937
|
+
},
|
|
938
|
+
"required": [
|
|
939
|
+
"name",
|
|
940
|
+
"portal_id",
|
|
941
|
+
"contact_id",
|
|
942
|
+
"surface_id",
|
|
943
|
+
"allowed_operations",
|
|
944
|
+
"expires_in"
|
|
945
|
+
]
|
|
946
|
+
},
|
|
769
947
|
"AccessTokenItem": {
|
|
770
948
|
"type": "object",
|
|
771
949
|
"properties": {
|
|
@@ -791,6 +969,12 @@
|
|
|
791
969
|
"portal_user_id": {
|
|
792
970
|
"$ref": "#/components/schemas/PortalUserId"
|
|
793
971
|
},
|
|
972
|
+
"contact_id": {
|
|
973
|
+
"$ref": "#/components/schemas/ContactId"
|
|
974
|
+
},
|
|
975
|
+
"allowed_operations": {
|
|
976
|
+
"$ref": "#/components/schemas/AllowedOperations"
|
|
977
|
+
},
|
|
794
978
|
"assignments": {
|
|
795
979
|
"$ref": "#/components/schemas/Assignments"
|
|
796
980
|
},
|
|
@@ -805,6 +989,12 @@
|
|
|
805
989
|
"format": "date",
|
|
806
990
|
"description": "Last date the token was used (YYYY-MM-DD format, 1 day accuracy)",
|
|
807
991
|
"example": "2026-02-24"
|
|
992
|
+
},
|
|
993
|
+
"expires_at": {
|
|
994
|
+
"type": "string",
|
|
995
|
+
"format": "date-time",
|
|
996
|
+
"description": "Timestamp when the token expires and stops being accepted (only set for tokens created with expires_in)",
|
|
997
|
+
"example": "2026-03-01T12:00:00.000Z"
|
|
808
998
|
}
|
|
809
999
|
},
|
|
810
1000
|
"required": [
|
package/dist/bin/epilot.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
API_LIST
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-PZQM3BWY.js";
|
|
5
5
|
|
|
6
6
|
// bin/epilot.ts
|
|
7
7
|
import { runMain } from "citty";
|
|
@@ -11,7 +11,7 @@ import { defineCommand } from "citty";
|
|
|
11
11
|
var main = defineCommand({
|
|
12
12
|
meta: {
|
|
13
13
|
name: "epilot",
|
|
14
|
-
version: "0.1.
|
|
14
|
+
version: "0.1.156",
|
|
15
15
|
description: "CLI for epilot APIs"
|
|
16
16
|
},
|
|
17
17
|
args: {
|
|
@@ -30,8 +30,8 @@ var main = defineCommand({
|
|
|
30
30
|
auth: () => import("../auth-WMXFMPWE.js").then((m) => m.default),
|
|
31
31
|
profile: () => import("../profile-OZJL5ZPT.js").then((m) => m.default),
|
|
32
32
|
config: () => import("../config-DGZIMLZK.js").then((m) => m.default),
|
|
33
|
-
completion: () => import("../completion-
|
|
34
|
-
upgrade: () => import("../upgrade-
|
|
33
|
+
completion: () => import("../completion-6CAE47TY.js").then((m) => m.default),
|
|
34
|
+
upgrade: () => import("../upgrade-HYRPUAWP.js").then((m) => m.default),
|
|
35
35
|
"access-token": () => import("../access-token-WWE6BDJH.js").then((m) => m.default),
|
|
36
36
|
address: () => import("../address-EH3C4CVB.js").then((m) => m.default),
|
|
37
37
|
"address-suggestions": () => import("../address-suggestions-RRSLOBFW.js").then((m) => m.default),
|
|
@@ -134,13 +134,13 @@ process.stderr.on("error", (err) => {
|
|
|
134
134
|
if (err.code === "EPIPE") process.exit(0);
|
|
135
135
|
throw err;
|
|
136
136
|
});
|
|
137
|
-
var VERSION = true ? "0.1.
|
|
137
|
+
var VERSION = true ? "0.1.156" : (await null).default.version;
|
|
138
138
|
var reorderedArgv = hoistFlagsAfterSubcommand(process.argv.slice(2));
|
|
139
139
|
process.argv = [process.argv[0], process.argv[1], ...reorderedArgv];
|
|
140
140
|
var args = process.argv.slice(2);
|
|
141
141
|
var completionsIdx = args.indexOf("--_completions");
|
|
142
142
|
if (completionsIdx >= 0) {
|
|
143
|
-
const { handleCompletions } = await import("../completion-
|
|
143
|
+
const { handleCompletions } = await import("../completion-6CAE47TY.js");
|
|
144
144
|
handleCompletions(args[completionsIdx + 1], args[completionsIdx + 2]);
|
|
145
145
|
process.exit(0);
|
|
146
146
|
}
|
|
@@ -7,7 +7,7 @@ var API_LIST = [
|
|
|
7
7
|
kebabName: "access-token",
|
|
8
8
|
title: "Access Token API",
|
|
9
9
|
serverUrl: "https://access-token.sls.epilot.io",
|
|
10
|
-
operationCount:
|
|
10
|
+
operationCount: 11,
|
|
11
11
|
operationIds: [
|
|
12
12
|
"listAccessTokens",
|
|
13
13
|
"createAccessToken",
|
|
@@ -17,7 +17,9 @@ var API_LIST = [
|
|
|
17
17
|
"getPublicTokenJwks",
|
|
18
18
|
"getPortalPreviewTokenJwks",
|
|
19
19
|
"getPublicTokenOIDC",
|
|
20
|
-
"getPortalPreviewTokenOIDC"
|
|
20
|
+
"getPortalPreviewTokenOIDC",
|
|
21
|
+
"getContactIdentificationTokenJwks",
|
|
22
|
+
"getContactIdentificationTokenOIDC"
|
|
21
23
|
]
|
|
22
24
|
},
|
|
23
25
|
{
|
|
@@ -72,7 +72,7 @@ ${GREEN}${BOLD}Upgraded to @epilot/cli@${latest}${RESET}
|
|
|
72
72
|
}
|
|
73
73
|
});
|
|
74
74
|
var getCurrentVersion = () => {
|
|
75
|
-
if (true) return "0.1.
|
|
75
|
+
if (true) return "0.1.156";
|
|
76
76
|
try {
|
|
77
77
|
const output = execSync("npm ls -g @epilot/cli --depth=0 --json 2>/dev/null", {
|
|
78
78
|
encoding: "utf-8",
|