@feastalytics/cli 0.1.12 → 0.1.13
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/dist/cli.js +242 -60
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -8983,7 +8983,7 @@ var CLI_MANIFEST = {
|
|
|
8983
8983
|
{
|
|
8984
8984
|
"id": "applyFunnelTemplate",
|
|
8985
8985
|
"domain": "campaigns",
|
|
8986
|
-
"description": "Applies a funnel template to an existing campaign that has no funnel set up yet (override.initialScreenId is null). Pass a templateId from listFunnelTemplates: offer-basic (Sign Up routes straight to the offer wallet \u2014 no payment step; use this for offers redeemed in person), offer-prepay / offer-direct-prepay (Sign Up / landing routes to a Stripe payment screen), reservation-offer-basic (Sign Up routes to reservation-or-wallet), reservation-offer-prepay / reservation-offer-direct-prepay (payment then reservation), reservation-only. The promotion's canPrePay flag does NOT change what gets built \u2014 prepay templates always insert the payment screen, and are rejected unless the promotion has canPrePay: true and a price.
|
|
8986
|
+
"description": "Applies a funnel template to an existing campaign that has no funnel set up yet (override.initialScreenId is null). Pass a templateId from listFunnelTemplates: offer-basic (Sign Up routes straight to the offer wallet \u2014 no payment step; use this for offers redeemed in person), offer-prepay / offer-direct-prepay (Sign Up / landing routes to a Stripe payment screen), reservation-offer-basic (Sign Up routes to reservation-or-wallet), reservation-offer-prepay / reservation-offer-direct-prepay (payment then reservation), reservation-only. The promotion's canPrePay flag does NOT change what gets built \u2014 prepay templates always insert the payment screen, and are rejected unless the promotion has canPrePay: true and a price.",
|
|
8987
8987
|
"type": "mutation",
|
|
8988
8988
|
"path": [
|
|
8989
8989
|
"api",
|
|
@@ -8992,60 +8992,71 @@ var CLI_MANIFEST = {
|
|
|
8992
8992
|
"chooseFunnelTemplate"
|
|
8993
8993
|
],
|
|
8994
8994
|
"inputJsonSchema": {
|
|
8995
|
-
"
|
|
8996
|
-
|
|
8997
|
-
|
|
8998
|
-
"
|
|
8999
|
-
"campaignId": {
|
|
9000
|
-
"type": "string"
|
|
9001
|
-
},
|
|
9002
|
-
"templateId": {
|
|
9003
|
-
"type": "string",
|
|
9004
|
-
"enum": [
|
|
9005
|
-
"offer-basic",
|
|
9006
|
-
"offer-prepay",
|
|
9007
|
-
"offer-direct-prepay",
|
|
9008
|
-
"reservation-offer-basic",
|
|
9009
|
-
"reservation-offer-prepay",
|
|
9010
|
-
"reservation-offer-direct-prepay",
|
|
9011
|
-
"reservation-only"
|
|
9012
|
-
]
|
|
9013
|
-
}
|
|
9014
|
-
},
|
|
9015
|
-
"required": [
|
|
9016
|
-
"campaignId",
|
|
9017
|
-
"templateId"
|
|
9018
|
-
],
|
|
9019
|
-
"additionalProperties": false
|
|
8995
|
+
"type": "object",
|
|
8996
|
+
"properties": {
|
|
8997
|
+
"campaignId": {
|
|
8998
|
+
"type": "string"
|
|
9020
8999
|
},
|
|
9021
|
-
{
|
|
9022
|
-
"type": "
|
|
9023
|
-
"
|
|
9024
|
-
"
|
|
9025
|
-
|
|
9026
|
-
|
|
9027
|
-
"
|
|
9028
|
-
|
|
9029
|
-
|
|
9030
|
-
|
|
9031
|
-
|
|
9032
|
-
|
|
9033
|
-
|
|
9034
|
-
|
|
9035
|
-
|
|
9036
|
-
|
|
9037
|
-
|
|
9038
|
-
|
|
9039
|
-
|
|
9040
|
-
|
|
9041
|
-
|
|
9042
|
-
|
|
9043
|
-
|
|
9044
|
-
|
|
9045
|
-
|
|
9046
|
-
|
|
9000
|
+
"templateId": {
|
|
9001
|
+
"type": "string",
|
|
9002
|
+
"enum": [
|
|
9003
|
+
"offer-basic",
|
|
9004
|
+
"offer-prepay",
|
|
9005
|
+
"offer-direct-prepay",
|
|
9006
|
+
"reservation-offer-basic",
|
|
9007
|
+
"reservation-offer-prepay",
|
|
9008
|
+
"reservation-offer-direct-prepay",
|
|
9009
|
+
"reservation-only"
|
|
9010
|
+
]
|
|
9011
|
+
}
|
|
9012
|
+
},
|
|
9013
|
+
"required": [
|
|
9014
|
+
"campaignId",
|
|
9015
|
+
"templateId"
|
|
9016
|
+
],
|
|
9017
|
+
"additionalProperties": false,
|
|
9018
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
9019
|
+
}
|
|
9020
|
+
},
|
|
9021
|
+
{
|
|
9022
|
+
"id": "awardReward",
|
|
9023
|
+
"domain": "membersProgram",
|
|
9024
|
+
"description": "Give one member a reward they can redeem, the way the dashboard's Give Reward button does. This is a real grant that lands in the guest's wallet pass \u2014 it is not the same as createMembersProgramReward, which only defines a reward the program offers. serialNumber identifies the member (get one from searchUsers) and itemId the catalog item they get; both are checked against this organization and a wrong id is rejected rather than granted. Expiry is optional and a reward with none never expires: expiresInDays sets it to the end of that day in the restaurant's timezone, which is what a guest reads '14 days' to mean, and expiresAt takes an exact ISO 8601 instant \u2014 pass one or the other. locationId restricts redemption to one participating location and is otherwise left open. Awarding recomputes the member's progress, which also re-evaluates their automations, so a flow triggered by earning a reward will fire. There is no undo and no idempotency key, so a retried call grants a second reward.",
|
|
9025
|
+
"type": "mutation",
|
|
9026
|
+
"path": [
|
|
9027
|
+
"api",
|
|
9028
|
+
"membersProgram",
|
|
9029
|
+
"awardReward"
|
|
9030
|
+
],
|
|
9031
|
+
"inputJsonSchema": {
|
|
9032
|
+
"type": "object",
|
|
9033
|
+
"properties": {
|
|
9034
|
+
"serialNumber": {
|
|
9035
|
+
"type": "string",
|
|
9036
|
+
"minLength": 1
|
|
9037
|
+
},
|
|
9038
|
+
"itemId": {
|
|
9039
|
+
"type": "string",
|
|
9040
|
+
"minLength": 1
|
|
9041
|
+
},
|
|
9042
|
+
"locationId": {
|
|
9043
|
+
"type": "string",
|
|
9044
|
+
"minLength": 1
|
|
9045
|
+
},
|
|
9046
|
+
"expiresAt": {
|
|
9047
|
+
"type": "string",
|
|
9048
|
+
"format": "date-time"
|
|
9049
|
+
},
|
|
9050
|
+
"expiresInDays": {
|
|
9051
|
+
"type": "integer",
|
|
9052
|
+
"exclusiveMinimum": 0
|
|
9047
9053
|
}
|
|
9054
|
+
},
|
|
9055
|
+
"required": [
|
|
9056
|
+
"serialNumber",
|
|
9057
|
+
"itemId"
|
|
9048
9058
|
],
|
|
9059
|
+
"additionalProperties": false,
|
|
9049
9060
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
9050
9061
|
}
|
|
9051
9062
|
},
|
|
@@ -13610,7 +13621,8 @@ var CLI_MANIFEST = {
|
|
|
13610
13621
|
"organizationFilePublic",
|
|
13611
13622
|
"organizationFilePrivate",
|
|
13612
13623
|
"creativeLibrary",
|
|
13613
|
-
"creativeLibraryBroll"
|
|
13624
|
+
"creativeLibraryBroll",
|
|
13625
|
+
"creativeLibraryVoiceover"
|
|
13614
13626
|
]
|
|
13615
13627
|
},
|
|
13616
13628
|
"key": {
|
|
@@ -13980,7 +13992,8 @@ var CLI_MANIFEST = {
|
|
|
13980
13992
|
"organizationFilePublic",
|
|
13981
13993
|
"organizationFilePrivate",
|
|
13982
13994
|
"creativeLibrary",
|
|
13983
|
-
"creativeLibraryBroll"
|
|
13995
|
+
"creativeLibraryBroll",
|
|
13996
|
+
"creativeLibraryVoiceover"
|
|
13984
13997
|
]
|
|
13985
13998
|
},
|
|
13986
13999
|
"fileName": {
|
|
@@ -14469,7 +14482,7 @@ var CLI_MANIFEST = {
|
|
|
14469
14482
|
{
|
|
14470
14483
|
"id": "listCreatorApplications",
|
|
14471
14484
|
"domain": "creators",
|
|
14472
|
-
"description": "Creator applications waiting on an approve/deny decision, newest first, across every location. Each row carries the `eventId` for updateCreatorVisit plus who applied, where, when, and their handles and follower count. That follower count is usually the deciding factor and is not reachable through queryData, so start here rather than querying creatorVisitApplication when working the approval queue.",
|
|
14485
|
+
"description": "Creator applications waiting on an approve/deny decision, newest first, across every location. Each row carries the `eventId` for updateCreatorVisit plus who applied, where, when, and their handles and follower count. That follower count is usually the deciding factor and is not reachable through queryData, so start here rather than querying creatorVisitApplication when working the approval queue. Each row also carries the creative brief already assigned to that visit as `strategyId`/`strategyTitle` and its `campaignId`/`campaignName`, all null when no brief is assigned yet \u2014 assign one with assignVisitStrategy before approving, because the approval text links whatever brief the visit carries at that moment.",
|
|
14473
14486
|
"type": "query",
|
|
14474
14487
|
"path": [
|
|
14475
14488
|
"api",
|
|
@@ -14670,7 +14683,8 @@ var CLI_MANIFEST = {
|
|
|
14670
14683
|
"organizationFilePublic",
|
|
14671
14684
|
"organizationFilePrivate",
|
|
14672
14685
|
"creativeLibrary",
|
|
14673
|
-
"creativeLibraryBroll"
|
|
14686
|
+
"creativeLibraryBroll",
|
|
14687
|
+
"creativeLibraryVoiceover"
|
|
14674
14688
|
]
|
|
14675
14689
|
},
|
|
14676
14690
|
"minItems": 1
|
|
@@ -15444,7 +15458,7 @@ Example - opted-in members with more than 5 visits, newest first:
|
|
|
15444
15458
|
{
|
|
15445
15459
|
"id": "sendText",
|
|
15446
15460
|
"domain": "messaging",
|
|
15447
|
-
"description": "Send one SMS to one person from the organization's texting number \u2014 the reply you would otherwise type into the dashboard chat. `to` names who by id, never by phone number: {type:'creator', userId} for a creator, whose userId comes from listCreatorConversations or getCreatorConversation, or {type:'guest', serialNumber} for a loyalty member, whose serialNumber comes from searchUsers or getMemberConversation. The type is not cosmetic \u2014 the two are different people in different tables, and a creator who also holds a pass exists in both, so pass the type that matches the thread you are replying to. The third form, {type:'unknownSender', phoneNumber}, answers someone who texted in without being either \u2014 it is the only form that names a raw number, and it is refused unless that number has an inbound message to this organization on file. A creator must have a visit with this organization and a guest must belong to it, or the call is a 404 rather than a text to a stranger. Guest messages support the {{firstName}}-style handlebars text automations use and are rendered before sending; creator messages are sent verbatim. Sending as a creator's human handler also
|
|
15461
|
+
"description": "Send one SMS to one person from the organization's texting number \u2014 the reply you would otherwise type into the dashboard chat. `to` names who by id, never by phone number: {type:'creator', userId} for a creator, whose userId comes from listCreatorConversations or getCreatorConversation, or {type:'guest', serialNumber} for a loyalty member, whose serialNumber comes from searchUsers or getMemberConversation. The type is not cosmetic \u2014 the two are different people in different tables, and a creator who also holds a pass exists in both, so pass the type that matches the thread you are replying to. The third form, {type:'unknownSender', phoneNumber}, answers someone who texted in without being either \u2014 it is the only form that names a raw number, and it is refused unless that number has an inbound message to this organization on file. A creator must have a visit with this organization and a guest must belong to it, or the call is a 404 rather than a text to a stranger. Guest messages support the {{firstName}}-style handlebars text automations use and are rendered before sending; creator messages are sent verbatim. Sending as a creator's human handler also dismisses any reply the AI agent has staged for that creator and re-runs the agent with your message in context, so it never talks over you. High priority, sent immediately \u2014 there is no scheduling, no undo, and no bulk form: call it once per recipient.",
|
|
15448
15462
|
"type": "mutation",
|
|
15449
15463
|
"path": [
|
|
15450
15464
|
"api",
|
|
@@ -23005,7 +23019,7 @@ Example - opted-in members with more than 5 visits, newest first:
|
|
|
23005
23019
|
{
|
|
23006
23020
|
"id": "updateCreatorVisit",
|
|
23007
23021
|
"domain": "creators",
|
|
23008
|
-
"description": "Update one creator visit: change its time or record its outcome. `status` accepts approved, denied, pending_approval, confirmed, visited, missed, issue, cancelled. status: 'approved' runs the real approval \u2014 THIS TEXTS THE CREATOR IMMEDIATELY and consumes the location's monthly creator sourcing allowance, which auto-pauses recruitment once reached; 'denied' texts a decline and
|
|
23022
|
+
"description": "Update one creator visit: change its time or record its outcome. `status` accepts approved, denied, pending_approval, confirmed, visited, missed, issue, cancelled. status: 'approved' runs the real approval \u2014 THIS TEXTS THE CREATOR IMMEDIATELY and consumes the location's monthly creator sourcing allowance, which auto-pauses recruitment once reached; 'denied' texts a decline; approving a denied row reverses it \u2014 the creator gets a \"we changed our mind\" text and the scheduled texts are re-armed. Approving a row that is no longer actionable is a no-op and returns changed: false. Pass sideEffects: false to make any update silent \u2014 same field writes, but no creator text, no allowance spend, no post-approval automation. With sideEffects on (the default), setting startTime to a date texts the creator a confirmation and alerts the approver; setting startTime to null clears the time and texts the creator asking for a new one; of the remaining statuses only 'cancelled' texts the creator \u2014 the rest are plain record writes. Pass dryRun: true to get back the exact creator text(s) the same call would send \u2014 nothing is written or sent; use it to show the operator a preview before the real call. Get `eventId` from listCreatorApplications.",
|
|
23009
23023
|
"type": "mutation",
|
|
23010
23024
|
"path": [
|
|
23011
23025
|
"api",
|
|
@@ -23048,6 +23062,10 @@ Example - opted-in members with more than 5 visits, newest first:
|
|
|
23048
23062
|
"sideEffects": {
|
|
23049
23063
|
"type": "boolean",
|
|
23050
23064
|
"default": true
|
|
23065
|
+
},
|
|
23066
|
+
"dryRun": {
|
|
23067
|
+
"type": "boolean",
|
|
23068
|
+
"default": false
|
|
23051
23069
|
}
|
|
23052
23070
|
},
|
|
23053
23071
|
"required": [
|
|
@@ -23060,7 +23078,7 @@ Example - opted-in members with more than 5 visits, newest first:
|
|
|
23060
23078
|
{
|
|
23061
23079
|
"id": "updateInfluencerBoardConfig",
|
|
23062
23080
|
"domain": "creators",
|
|
23063
|
-
"description": "Create or update a location's creator program. This is an upsert \u2014 there is no separate create tool, and the config is keyed by locationId, one per location \u2014 so calling it for a location with no program creates one, seeding a 5000-cent dining credit and leaving landingPageConfirmed, calendarConfigured, passConfigured and reimbursementEnabled false. Omitted fields are left alone. reimbursementEnabled switches the board from comping the meal to reimbursing a meal the creator paid for, and foodCreditAmountCents becomes the reimbursement cap rather than a dining credit \u2014 it changes what creators are promised on the landing page, brief and rights agreement, so never set it without the client asking for it. schedulingMode gets no default, so set it on the first call or the Design creator program task stays incomplete: self_schedule_approval lets approved creators book themselves, apply_only collects applications for you to schedule. Note the launch check is looser than the task check \u2014 launchInfluencerCampaign only requires landingPageConfirmed and a positive credit, so a program can go live while its setup task still reads incomplete.",
|
|
23081
|
+
"description": "Create or update a location's creator program. This is an upsert \u2014 there is no separate create tool, and the config is keyed by locationId, one per location \u2014 so calling it for a location with no program creates one, seeding a 5000-cent dining credit and leaving landingPageConfirmed, calendarConfigured, passConfigured and reimbursementEnabled false. Omitted fields are left alone. reimbursementEnabled switches the board from comping the meal to reimbursing a meal the creator paid for, and foodCreditAmountCents becomes the reimbursement cap rather than a dining credit \u2014 it changes what creators are promised on the landing page, brief and rights agreement, so never set it without the client asking for it. schedulingMode gets no default, so set it on the first call or the Design creator program task stays incomplete: self_schedule_approval lets approved creators book themselves, apply_only collects applications for you to schedule. Note the launch check is looser than the task check \u2014 launchInfluencerCampaign only requires landingPageConfirmed and a positive credit, so a program can go live while its setup task still reads incomplete. maxCreatorsPerMonth caps how many creators the location's recruitment ads source each calendar month; when the cap is reached every recruitment campaign at the location pauses automatically until the 1st of the next month, and changing or clearing the cap reconciles the campaigns immediately.",
|
|
23064
23082
|
"type": "mutation",
|
|
23065
23083
|
"path": [
|
|
23066
23084
|
"api",
|
|
@@ -23075,7 +23093,7 @@ Example - opted-in members with more than 5 visits, newest first:
|
|
|
23075
23093
|
},
|
|
23076
23094
|
"foodCreditAmountCents": {
|
|
23077
23095
|
"type": "integer",
|
|
23078
|
-
"minimum":
|
|
23096
|
+
"minimum": 2500
|
|
23079
23097
|
},
|
|
23080
23098
|
"landingPageConfirmed": {
|
|
23081
23099
|
"type": "boolean"
|
|
@@ -23193,6 +23211,17 @@ Example - opted-in members with more than 5 visits, newest first:
|
|
|
23193
23211
|
},
|
|
23194
23212
|
"reimbursementEnabled": {
|
|
23195
23213
|
"type": "boolean"
|
|
23214
|
+
},
|
|
23215
|
+
"maxCreatorsPerMonth": {
|
|
23216
|
+
"anyOf": [
|
|
23217
|
+
{
|
|
23218
|
+
"type": "integer",
|
|
23219
|
+
"exclusiveMinimum": 0
|
|
23220
|
+
},
|
|
23221
|
+
{
|
|
23222
|
+
"type": "null"
|
|
23223
|
+
}
|
|
23224
|
+
]
|
|
23196
23225
|
}
|
|
23197
23226
|
},
|
|
23198
23227
|
"required": [
|
|
@@ -23604,6 +23633,153 @@ Example - opted-in members with more than 5 visits, newest first:
|
|
|
23604
23633
|
},
|
|
23605
23634
|
"additionalProperties": false
|
|
23606
23635
|
},
|
|
23636
|
+
"dataAudit": {
|
|
23637
|
+
"type": "object",
|
|
23638
|
+
"properties": {
|
|
23639
|
+
"pos": {
|
|
23640
|
+
"type": "object",
|
|
23641
|
+
"properties": {
|
|
23642
|
+
"type": {
|
|
23643
|
+
"type": "string",
|
|
23644
|
+
"enum": [
|
|
23645
|
+
"square",
|
|
23646
|
+
"toast-api",
|
|
23647
|
+
"toast-csv"
|
|
23648
|
+
]
|
|
23649
|
+
},
|
|
23650
|
+
"isComplete": {
|
|
23651
|
+
"type": "boolean"
|
|
23652
|
+
},
|
|
23653
|
+
"toastCsv": {
|
|
23654
|
+
"type": "object",
|
|
23655
|
+
"properties": {
|
|
23656
|
+
"fileName": {
|
|
23657
|
+
"type": "string"
|
|
23658
|
+
},
|
|
23659
|
+
"key": {
|
|
23660
|
+
"type": "string"
|
|
23661
|
+
},
|
|
23662
|
+
"uploadedAt": {
|
|
23663
|
+
"type": "string"
|
|
23664
|
+
},
|
|
23665
|
+
"firstDate": {
|
|
23666
|
+
"type": "string"
|
|
23667
|
+
},
|
|
23668
|
+
"lastDate": {
|
|
23669
|
+
"type": "string"
|
|
23670
|
+
},
|
|
23671
|
+
"dayCount": {
|
|
23672
|
+
"type": "number"
|
|
23673
|
+
},
|
|
23674
|
+
"missingNetSalesCents": {
|
|
23675
|
+
"type": "number"
|
|
23676
|
+
}
|
|
23677
|
+
},
|
|
23678
|
+
"required": [
|
|
23679
|
+
"fileName",
|
|
23680
|
+
"key",
|
|
23681
|
+
"uploadedAt"
|
|
23682
|
+
],
|
|
23683
|
+
"additionalProperties": false
|
|
23684
|
+
},
|
|
23685
|
+
"toastCsvs": {
|
|
23686
|
+
"type": "array",
|
|
23687
|
+
"items": {
|
|
23688
|
+
"$ref": "#/properties/dataAudit/properties/pos/properties/toastCsv"
|
|
23689
|
+
}
|
|
23690
|
+
},
|
|
23691
|
+
"salesCoverage": {
|
|
23692
|
+
"type": "object",
|
|
23693
|
+
"properties": {
|
|
23694
|
+
"firstDate": {
|
|
23695
|
+
"type": "string"
|
|
23696
|
+
},
|
|
23697
|
+
"lastDate": {
|
|
23698
|
+
"type": "string"
|
|
23699
|
+
},
|
|
23700
|
+
"dayCount": {
|
|
23701
|
+
"type": "number"
|
|
23702
|
+
},
|
|
23703
|
+
"gaps": {
|
|
23704
|
+
"type": "array",
|
|
23705
|
+
"items": {
|
|
23706
|
+
"type": "object",
|
|
23707
|
+
"properties": {
|
|
23708
|
+
"start": {
|
|
23709
|
+
"type": "string"
|
|
23710
|
+
},
|
|
23711
|
+
"end": {
|
|
23712
|
+
"type": "string"
|
|
23713
|
+
},
|
|
23714
|
+
"days": {
|
|
23715
|
+
"type": "number"
|
|
23716
|
+
}
|
|
23717
|
+
},
|
|
23718
|
+
"required": [
|
|
23719
|
+
"start",
|
|
23720
|
+
"end",
|
|
23721
|
+
"days"
|
|
23722
|
+
],
|
|
23723
|
+
"additionalProperties": false
|
|
23724
|
+
}
|
|
23725
|
+
},
|
|
23726
|
+
"years": {
|
|
23727
|
+
"type": "array",
|
|
23728
|
+
"items": {
|
|
23729
|
+
"type": "object",
|
|
23730
|
+
"properties": {
|
|
23731
|
+
"year": {
|
|
23732
|
+
"type": "number"
|
|
23733
|
+
},
|
|
23734
|
+
"dayCount": {
|
|
23735
|
+
"type": "number"
|
|
23736
|
+
},
|
|
23737
|
+
"months": {
|
|
23738
|
+
"type": "array",
|
|
23739
|
+
"items": {
|
|
23740
|
+
"type": "boolean"
|
|
23741
|
+
}
|
|
23742
|
+
}
|
|
23743
|
+
},
|
|
23744
|
+
"required": [
|
|
23745
|
+
"year",
|
|
23746
|
+
"dayCount",
|
|
23747
|
+
"months"
|
|
23748
|
+
],
|
|
23749
|
+
"additionalProperties": false
|
|
23750
|
+
}
|
|
23751
|
+
}
|
|
23752
|
+
},
|
|
23753
|
+
"required": [
|
|
23754
|
+
"firstDate",
|
|
23755
|
+
"lastDate",
|
|
23756
|
+
"dayCount",
|
|
23757
|
+
"gaps",
|
|
23758
|
+
"years"
|
|
23759
|
+
],
|
|
23760
|
+
"additionalProperties": false
|
|
23761
|
+
}
|
|
23762
|
+
},
|
|
23763
|
+
"required": [
|
|
23764
|
+
"type"
|
|
23765
|
+
],
|
|
23766
|
+
"additionalProperties": false
|
|
23767
|
+
},
|
|
23768
|
+
"resultsCall": {
|
|
23769
|
+
"type": "object",
|
|
23770
|
+
"properties": {
|
|
23771
|
+
"isComplete": {
|
|
23772
|
+
"type": "boolean"
|
|
23773
|
+
},
|
|
23774
|
+
"firstBookedAt": {
|
|
23775
|
+
"type": "string"
|
|
23776
|
+
}
|
|
23777
|
+
},
|
|
23778
|
+
"additionalProperties": false
|
|
23779
|
+
}
|
|
23780
|
+
},
|
|
23781
|
+
"additionalProperties": false
|
|
23782
|
+
},
|
|
23607
23783
|
"staffTraining": {
|
|
23608
23784
|
"type": "object",
|
|
23609
23785
|
"properties": {
|
|
@@ -25017,6 +25193,12 @@ Example - opted-in members with more than 5 visits, newest first:
|
|
|
25017
25193
|
"$ref": "#/properties/sections/properties/headerFields/items"
|
|
25018
25194
|
}
|
|
25019
25195
|
},
|
|
25196
|
+
"backFields": {
|
|
25197
|
+
"type": "array",
|
|
25198
|
+
"items": {
|
|
25199
|
+
"$ref": "#/properties/sections/properties/headerFields/items"
|
|
25200
|
+
}
|
|
25201
|
+
},
|
|
25020
25202
|
"logoFile": {
|
|
25021
25203
|
"type": "object",
|
|
25022
25204
|
"properties": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@feastalytics/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.13",
|
|
4
4
|
"description": "Command-line client for the Feastalytics platform — list, create, and update campaigns, automations, offers, and members-program rewards from the terminal.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|