openapi: 3.0.1 info: title: Mama Earth API version: "1.0" paths: /auth/info: get: operationId: getInfoOrStartSession parameters: - name: requestSession in: query schema: nullable: true allOf: - $ref: '#/components/schemas/DatabaseSession' - name: originPath in: query schema: type: string nullable: true - name: utmSource in: query schema: type: string nullable: true - name: utmMedium in: query schema: type: string nullable: true - name: utmCampaign in: query schema: type: string nullable: true responses: "200": description: getInfoOrStartSession 200 response content: application/json: schema: $ref: '#/components/schemas/FcfAuthentication' /bag-contents/upload: post: operationId: upload parameters: - name: params in: query required: true schema: $ref: '#/components/schemas/BagContentsCsvProcessor.Params' requestBody: content: multipart/form-data: schema: type: object properties: csvFile: type: string format: binary required: true responses: "200": description: upload 200 response content: text/plain: schema: type: string /bag-substitution-rules/upload: post: operationId: upload_1 parameters: - name: params in: query required: true schema: $ref: '#/components/schemas/BagSubstitutionRuleCsvProcessor.Params' requestBody: content: multipart/form-data: schema: type: object properties: csvFile: type: string format: binary required: true responses: "200": description: upload_1 200 response content: text/plain: schema: type: string /bag-substitution-rules/{date}.csv: get: operationId: download parameters: - name: date in: path required: true schema: type: string format: date responses: "200": description: download 200 response content: text/csv: schema: type: string /bags: get: operationId: getPublishedBags parameters: - name: shoppingDate in: query required: true schema: type: string format: date responses: "200": description: getPublishedBags 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/Bag' /bags.csv: get: operationId: downloadPublishedBagProperties responses: "200": description: downloadPublishedBagProperties 200 response content: text/plain: schema: type: string post: operationId: updatePublishedBagProperties requestBody: content: multipart/form-data: schema: type: object properties: csvFile: type: string format: binary required: true responses: "200": description: updatePublishedBagProperties 200 response content: text/plain: schema: type: string /bags/all/contents/{date}: get: operationId: getAllBagDefaultContents parameters: - name: date in: path required: true schema: type: string format: date responses: "200": description: getAllBagDefaultContents 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/BagWithItems' /bags/all/contents/{date}.csv: get: operationId: downloadBagContents parameters: - name: date in: path required: true schema: type: string format: date responses: "200": description: downloadBagContents 200 response content: text/csv: schema: type: string /bags/all/contents/{date}/publish: post: operationId: publishBagContents parameters: - name: date in: path required: true schema: type: string format: date requestBody: content: application/json: schema: type: object properties: includeUserCustomizedBags: type: boolean nullable: true required: true responses: "200": description: publishBagContents 200 response content: application/json: schema: $ref: '#/components/schemas/BagPublishDetails' /bags/all/publish-details: get: operationId: getBagPublishDetails parameters: - name: startDate in: query required: true schema: type: string format: date - name: endDate in: query required: true schema: type: string format: date responses: "200": description: getBagPublishDetails 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/BagPublishDetails' /bags/search: get: operationId: search parameters: - name: sort in: query required: true schema: $ref: '#/components/schemas/BagSearchSort' - name: shoppingDate in: query required: true schema: type: string format: date responses: "200": description: search 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/Bag' /bags/{bagId}: get: operationId: getBagWithItemsById parameters: - name: bagId in: path required: true schema: minimum: 0 type: integer format: int64 - name: date in: query required: true schema: type: string format: date responses: "200": description: getBagWithItemsById 200 response content: application/json: schema: type: object /bags/{bagId}/contents/{date}: get: operationId: getBagDefaultContents parameters: - name: bagId in: path required: true schema: minimum: 0 type: integer format: int64 - name: date in: path required: true schema: type: string format: date - name: includeUnpublished in: query schema: type: boolean nullable: true responses: "200": description: getBagDefaultContents 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/BagItem.NewBagItem' /bags/{bagId}/customization-product-filters: get: operationId: filters parameters: - name: bagId in: path required: true schema: minimum: 0 type: integer format: int64 responses: "200": description: filters 200 response content: application/json: schema: $ref: '#/components/schemas/BagCustomizationProductFilters' /bags/{bagId}/latest-contents/{day}: get: operationId: getLatestBagDefaultContentsByDay parameters: - name: bagId in: path required: true schema: minimum: 0 type: integer format: int64 - name: day in: path required: true schema: $ref: '#/components/schemas/DayId' responses: "200": description: getLatestBagDefaultContentsByDay 200 response content: application/json: schema: $ref: '#/components/schemas/DefaultBagContentsWithDate' /batch-email-tasks: get: operationId: getAllEmailTemplatePendingTasks responses: "200": description: getAllEmailTemplatePendingTasks 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/BatchModularEmailTasksController.PendingBatchEmailTask' post: operationId: scheduleEmailTemplatePendingTask requestBody: content: application/json: schema: required: - emailKey - endDate - executionTime - startDate - userIds type: object properties: emailKey: minLength: 1 type: string executionTime: type: string format: date-time userIds: minItems: 1 type: array items: type: integer format: int64 startDate: type: string format: date endDate: type: string format: date required: true responses: "200": description: scheduleEmailTemplatePendingTask 200 response /batch-email-tasks/{taskName}/instance/{taskInstance}: delete: operationId: deleteEmailTemplatePendingTask parameters: - name: taskName in: path required: true schema: minLength: 1 type: string - name: taskInstance in: path required: true schema: minLength: 1 type: string responses: "200": description: deleteEmailTemplatePendingTask 200 response /bin-dispatch-stats: get: operationId: getDispatchStats parameters: - name: date in: query required: true schema: type: string format: date responses: "200": description: getDispatchStats 200 response content: application/json: schema: $ref: '#/components/schemas/BinDispatchStats' /bin-receive-stats: get: operationId: getReceiveStats parameters: - name: date in: query required: true schema: type: string format: date responses: "200": description: getReceiveStats 200 response content: application/json: schema: $ref: '#/components/schemas/BinReceiveStats' /bins: get: operationId: getBins parameters: - name: keyset in: query required: true schema: $ref: '#/components/schemas/BinKeyset' - name: filter in: query required: true schema: $ref: '#/components/schemas/BinFilter' responses: "200": description: getBins 200 response content: application/json: schema: $ref: '#/components/schemas/KeysetPage_Bin.BinKeyset_' /bins/initialize: post: operationId: initializeBins requestBody: content: application/json: schema: required: - count type: object properties: count: maximum: 1000 minimum: 0 type: integer format: int32 required: true responses: "200": description: initializeBins 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/Bin' /bins/received-assignments: get: operationId: getReceivedBinAssignments parameters: - name: keyset in: query required: true schema: $ref: '#/components/schemas/BinAssignmentKeyset' - name: date in: query required: true schema: type: string format: date responses: "200": description: getReceivedBinAssignments 200 response content: application/json: schema: $ref: '#/components/schemas/KeysetPage_BinAssignment.ReusableBinAssignment.BinAssignmentKeyset_' /bins/{barcode}: get: operationId: getBin parameters: - name: barcode in: path required: true schema: $ref: '#/components/schemas/BinBarcode' responses: "200": description: getBin 200 response content: application/json: schema: $ref: '#/components/schemas/Bin' /bins/{barcode}.svg: get: operationId: getBarcodeSVG parameters: - name: barcode in: path required: true schema: $ref: '#/components/schemas/BinBarcode' responses: "200": description: getBarcodeSVG 200 response content: image/svg+xml: schema: type: string /bins/{barcode}/active: post: operationId: updateBinActiveStatus parameters: - name: barcode in: path required: true schema: $ref: '#/components/schemas/BinBarcode' requestBody: content: application/json: schema: required: - active type: object properties: active: type: boolean reason: nullable: true allOf: - $ref: '#/components/schemas/BinRetirementReason' note: type: string nullable: true required: true responses: "200": description: updateBinActiveStatus 200 response content: application/json: schema: $ref: '#/components/schemas/Bin' /bins/{barcode}/assignments: get: operationId: getBinAssignments parameters: - name: barcode in: path required: true schema: $ref: '#/components/schemas/BinBarcode' - name: keyset in: query required: true schema: $ref: '#/components/schemas/BinAssignmentKeyset' responses: "200": description: getBinAssignments 200 response content: application/json: schema: $ref: '#/components/schemas/KeysetPage_BinAssignment.ReusableBinAssignment.BinAssignmentKeyset_' post: operationId: createBinAssignment parameters: - name: barcode in: path required: true schema: $ref: '#/components/schemas/BinBarcode' requestBody: content: application/json: schema: required: - orderId type: object properties: orderId: type: integer format: int64 required: true responses: "200": description: createBinAssignment 200 response content: application/json: schema: $ref: '#/components/schemas/BinAssignment' /bins/{barcode}/assignments/current/receive: put: summary: Receive the current bin assignment of the provided bin. description: |- Receive the current bin assignment of the provided bin. We use "current" and not "{id}" here because the receiver scans a bin without knowing its current assignment. operationId: receiveCurrentBinAssignment parameters: - name: barcode in: path required: true schema: $ref: '#/components/schemas/BinBarcode' responses: "200": description: receiveCurrentBinAssignment 200 response content: application/json: schema: $ref: '#/components/schemas/BinAssignment.ReusableBinAssignment' /bins/{barcode}/assignments/{assignmentId}/charge: post: summary: Charge for an overdue bin assignment. description: Charge for an overdue bin assignment. operationId: chargeBinAssignment parameters: - name: barcode in: path required: true schema: $ref: '#/components/schemas/BinBarcode' - name: assignmentId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - reason type: object properties: reason: $ref: '#/components/schemas/BinRetirementReason' note: type: string nullable: true required: true responses: "200": description: chargeBinAssignment 200 response /bins/{barcode}/assignments/{assignmentId}/postpone: post: summary: Postpone the due date of a bin assignment. description: Postpone the due date of a bin assignment. operationId: postponeBinAssignment parameters: - name: barcode in: path required: true schema: $ref: '#/components/schemas/BinBarcode' - name: assignmentId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - date type: object properties: date: type: string format: date required: true responses: "200": description: postponeBinAssignment 200 response content: application/json: schema: $ref: '#/components/schemas/Bin' /bins/{barcode}/assignments/{assignmentId}/refund: post: summary: Refund a bin assignment. description: Refund a bin assignment. operationId: refundBinAssignment parameters: - name: barcode in: path required: true schema: $ref: '#/components/schemas/BinBarcode' - name: assignmentId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: type: object properties: activate: type: boolean nullable: true required: true responses: "200": description: refundBinAssignment 200 response content: application/json: schema: type: object /bins/{barcode}/assignments/{id}: delete: operationId: deleteBinAssignment parameters: - name: barcode in: path required: true schema: $ref: '#/components/schemas/BinBarcode' - name: id in: path required: true schema: type: integer format: int64 responses: "200": description: deleteBinAssignment 200 response /bins/{barcode}/assignments/{id}/receive/cancel: put: operationId: cancelReceiveCurrentBinAssignment parameters: - name: barcode in: path required: true schema: $ref: '#/components/schemas/BinBarcode' - name: id in: path required: true schema: type: integer format: int64 responses: "200": description: cancelReceiveCurrentBinAssignment 200 response /bulkmodification.csv: post: operationId: bulkModification parameters: - name: mode in: query required: true schema: $ref: '#/components/schemas/BulkModificationCsvController.Mode' requestBody: content: multipart/form-data: schema: type: object properties: csvFile: type: string format: binary required: true responses: "200": description: bulkModification 200 response content: text/plain: schema: type: string /bulkmodificationtool/cart/search: get: operationId: getCartSearchResults parameters: - name: productId in: query required: true schema: type: integer format: int64 - name: boxIds in: query schema: type: array nullable: true items: type: integer format: int64 default: - "[]" - name: dayIds in: query schema: type: array nullable: true items: $ref: '#/components/schemas/DayId' default: - "[]" - name: startDate in: query required: true schema: type: string format: date - name: endDate in: query required: true schema: type: string format: date - name: nextOccurrenceOnly in: query required: true schema: type: boolean - name: includeDIY in: query required: true schema: type: boolean - name: substitutions in: query schema: type: boolean nullable: true - name: isMember in: query schema: type: boolean nullable: true - name: isEISHCustomer in: query schema: type: boolean nullable: true responses: "200": description: getCartSearchResults 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/CartSearchResultWithDetails' /bulkmodificationtool/cart/update: post: operationId: updateCarts requestBody: content: application/json: schema: required: - addons - notifyUsers - operation type: object properties: addons: type: array items: $ref: '#/components/schemas/CartItemForUpdate' operation: $ref: '#/components/schemas/BulkModificationOperation' newItems: type: array items: $ref: '#/components/schemas/BulkModificationItem' startDate: type: string format: date endDate: type: string format: date internalReason: nullable: true allOf: - $ref: '#/components/schemas/BulkModificationInternalReason' internalReasonNote: type: string nullable: true notifyUsers: $ref: '#/components/schemas/BulkModificationNotificationMode' nextOccurrenceOnly: type: boolean required: true responses: "200": description: updateCarts 200 response content: application/json: schema: $ref: '#/components/schemas/BulkModificationUpdateResult' /bulkmodificationtool/order/search: get: operationId: getOrderSearchResults parameters: - name: productId in: query required: true schema: type: integer format: int64 - name: boxIds in: query required: true schema: type: array items: type: integer format: int64 - name: startDate in: query required: true schema: type: string format: date - name: endDate in: query required: true schema: type: string format: date - name: includeDIY in: query required: true schema: type: boolean - name: substitutions in: query schema: type: boolean nullable: true - name: isMember in: query schema: type: boolean nullable: true - name: isEISHCustomer in: query schema: type: boolean nullable: true responses: "200": description: getOrderSearchResults 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/OrderSearchResult' /bulkmodificationtool/order/update: post: operationId: updateOrders requestBody: content: application/json: schema: required: - endDate - notifyUsers - operation - startDate type: object properties: addons: type: array nullable: true items: $ref: '#/components/schemas/OrderItemForUpdate' bagItems: type: array nullable: true items: $ref: '#/components/schemas/OrderItemForUpdate' operation: $ref: '#/components/schemas/BulkModificationOperation' newItems: type: array items: $ref: '#/components/schemas/BulkModificationItem' startDate: type: string format: date endDate: type: string format: date applyProductCredit: type: boolean applyGoodWillCredit: type: boolean goodWillCreditAmount: type: number nullable: true creditReason: nullable: true allOf: - $ref: '#/components/schemas/CreditReason' internalReason: nullable: true allOf: - $ref: '#/components/schemas/BulkModificationInternalReason' internalReasonNote: type: string nullable: true notifyUsers: $ref: '#/components/schemas/BulkModificationNotificationMode' required: true responses: "200": description: updateOrders 200 response content: application/json: schema: $ref: '#/components/schemas/BulkModificationUpdateResult' /bundle-products: get: operationId: getBundles parameters: - name: date in: query required: true schema: type: string format: date responses: "200": description: getBundles 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/BundleProductController.BundleProduct' /bundles.csv: get: operationId: downloadBundleConfig responses: "200": description: downloadBundleConfig 200 response content: text/plain: schema: type: string post: operationId: updateBundleConfig requestBody: content: multipart/form-data: schema: type: object properties: csvFile: type: string format: binary required: true responses: "200": description: updateBundleConfig 200 response content: text/plain: schema: type: string /categories/by-uri/{uri}: get: operationId: getCategoryByUri parameters: - name: uri in: path required: true schema: minLength: 1 type: string responses: "200": description: getCategoryByUri 200 response content: application/json: schema: $ref: '#/components/schemas/Category' /categories/search: get: operationId: search_1 parameters: - name: query in: query required: true schema: maxLength: 256 minLength: 0 type: string - name: limit in: query schema: maximum: 250 minimum: 0 type: integer format: int32 nullable: true - name: offset in: query schema: minimum: 0 type: integer format: int32 nullable: true responses: "200": description: search_1 200 response content: application/json: schema: $ref: '#/components/schemas/SearchResultDto' /categories/search/start-indexing: post: operationId: startIndexing parameters: - name: recreateDocuments in: query required: true schema: type: boolean default: false requestBody: content: application/json: schema: required: - categoryIds type: object properties: categoryIds: minItems: 1 type: array items: type: integer format: int64 required: true responses: "200": description: startIndexing 200 response /category-hierarchies/FCWEB.csv: get: operationId: downloadCategoryHierarchies responses: "200": description: downloadCategoryHierarchies 200 response content: text/plain: schema: type: string post: operationId: updateCategoryHierarchies requestBody: content: multipart/form-data: schema: type: object properties: csvFile: type: string format: binary required: true responses: "200": description: updateCategoryHierarchies 200 response content: text/plain: schema: type: string /category-hierarchies/fcweb: get: operationId: getFcwebCategoryHierarchyNodes parameters: - name: depth in: query required: true schema: minimum: 0 type: integer format: int32 default: 0 responses: "200": description: getFcwebCategoryHierarchyNodes 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/Tree.Node_CategoryHierarchyNode_' /cdn/public/upload: post: operationId: upload_2 requestBody: content: multipart/form-data: schema: type: object properties: file: type: string format: binary required: true responses: "200": description: upload_2 200 response content: application/json: schema: $ref: '#/components/schemas/CdnObject' /cloudfront/cookies: get: operationId: refresh responses: "200": description: refresh 200 response content: application/json: schema: type: object /content-pages: get: operationId: getContentPages responses: "200": description: getContentPages 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/ContentPage' post: operationId: createContentPage requestBody: content: application/json: schema: $ref: '#/components/schemas/ContentPage' required: true responses: "200": description: createContentPage 200 response content: application/json: schema: $ref: '#/components/schemas/ContentPage' /content-pages/{uri}: get: operationId: getContentPage parameters: - name: uri in: path required: true schema: type: string responses: "200": description: getContentPage 200 response content: application/json: schema: $ref: '#/components/schemas/ContentPage' put: operationId: updateContentPage parameters: - name: uri in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ContentPage' required: true responses: "200": description: updateContentPage 200 response content: application/json: schema: $ref: '#/components/schemas/ContentPage' delete: operationId: deleteContentPage parameters: - name: uri in: path required: true schema: type: string responses: "200": description: deleteContentPage 200 response /content-pages/{uri}/preview: get: operationId: getRenderedContentPagePreview parameters: - name: userId in: query schema: type: integer format: int64 nullable: true - name: date in: query schema: type: string format: date nullable: true - name: featureFlagAssignmentKeys in: query schema: type: array nullable: true items: $ref: '#/components/schemas/FeatureFlagAssignmentKey' default: - "[]" - name: uri in: path required: true schema: type: string responses: "200": description: getRenderedContentPagePreview 200 response content: application/json: schema: $ref: '#/components/schemas/RenderedContentPage' /content-pages/{uri}/rendered: get: operationId: getRenderedContentPage parameters: - name: guest in: query schema: nullable: true allOf: - $ref: '#/components/schemas/Guest' - name: guestFeatureFlagAssignments in: query schema: nullable: true allOf: - $ref: '#/components/schemas/GuestFeatureFlagAssignments' - name: sessionFeatureFlagContext in: query required: true schema: $ref: '#/components/schemas/SessionFeatureFlagContext' - name: date in: query schema: type: string format: date nullable: true - name: uri in: path required: true schema: type: string responses: "200": description: getRenderedContentPage 200 response content: application/json: schema: $ref: '#/components/schemas/RenderedContentPage' /coupons/{code}: get: operationId: getCoupon parameters: - name: code in: path required: true schema: type: string - name: includeUnpublished in: query required: true schema: type: boolean default: false responses: "200": description: getCoupon 200 response content: application/json: schema: $ref: '#/components/schemas/Coupon' /delivery-days/bulk-update-by-user: post: operationId: upload_3 requestBody: content: multipart/form-data: schema: type: object properties: csvFile: type: string format: binary enforceOrderLimits: type: boolean enforceInventory: type: boolean required: true responses: "200": description: upload_3 200 response content: text/plain: schema: type: string /delivery-providers: get: operationId: getDeliveryProviders responses: "200": description: getDeliveryProviders 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/DeliveryProvider' /delivery-providers/unassigned/batch-summaries/{date}: get: operationId: getUnassignedBatchSummariesByDate parameters: - name: date in: path required: true schema: type: string format: date responses: "200": description: getUnassignedBatchSummariesByDate 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/DeliveryRoutingBatchSummary.UnassignedDeliveryRoutingBatchSummary' /delivery-providers/{providerCode}/batch-summaries/{date}: get: operationId: getBatchSummariesByProviderAndDate parameters: - name: providerCode in: path required: true schema: type: string - name: date in: path required: true schema: type: string format: date responses: "200": description: getBatchSummariesByProviderAndDate 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/DeliveryRoutingBatchSummary.AssignedDeliveryRoutingBatchSummary' /delivery-providers/{providerCode}/eta-email/{date}: post: operationId: scheduleDeliveryEtaEmail parameters: - name: providerCode in: path required: true schema: type: string - name: date in: path required: true schema: type: string format: date responses: "200": description: scheduleDeliveryEtaEmail 200 response content: application/json: schema: type: string /delivery-routing.csv: post: operationId: upload_4 parameters: - name: mode in: query required: true schema: $ref: '#/components/schemas/DeliveryRouteCsvController.Mode' - name: date in: query required: true schema: type: string format: date requestBody: content: multipart/form-data: schema: type: object properties: csvFile: type: string format: binary required: true responses: "200": description: upload_4 200 response content: text/plain: schema: type: string /delivery-zones/by-fsa/{fsa}: get: operationId: getDeliveryZoneByFsa parameters: - name: fsa in: path required: true schema: type: string responses: "200": description: getDeliveryZoneByFsa 200 response content: application/json: schema: $ref: '#/components/schemas/OndDeliveryZone' /delivery-zones/next-available-dates: get: operationId: getNextAvailableDates responses: "200": description: getNextAvailableDates 200 response content: application/json: schema: type: object additionalProperties: type: string format: date /delivery-zones/{zoneId}: get: operationId: getDeliveryZoneById parameters: - name: zoneId in: path required: true schema: type: integer format: int64 responses: "200": description: getDeliveryZoneById 200 response content: application/json: schema: $ref: '#/components/schemas/OndDeliveryZone' /delivery-zones/{zoneId}/delivery-dates: get: operationId: getDeliveryDatesByZone parameters: - name: zoneId in: path required: true schema: type: integer format: int64 - name: start in: query required: true schema: type: string format: date - name: end in: query required: true schema: type: string format: date - name: limit in: query required: true schema: maximum: 50 type: integer format: int64 default: 20 responses: "200": description: getDeliveryDatesByZone 200 response content: application/json: schema: type: array items: type: string format: date /delivery-zones/{zoneId}/timeslots: get: operationId: getTimeslotsByZone parameters: - name: zoneId in: path required: true schema: type: integer format: int64 - name: day in: query required: true schema: $ref: '#/components/schemas/DayId' responses: "200": description: getTimeslotsByZone 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/OndTimeslot' /driver-sheets/{date}: get: operationId: renderSheetsByDate parameters: - name: date in: path required: true schema: type: string format: date responses: "200": description: renderSheetsByDate 200 response content: text/html: schema: type: string /email-templates: get: operationId: getAllEmailTemplateConfigurations responses: "200": description: getAllEmailTemplateConfigurations 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/ModularEmailTemplateDefinition' /email-templates/{emailKey}/configuration: put: operationId: upsertEmailTemplateConfiguration parameters: - name: emailKey in: path required: true schema: minLength: 1 type: string requestBody: content: application/json: schema: minItems: 1 required: - previewText - queryParameters - subject type: object properties: subject: $ref: '#/components/schemas/TemplateString_BaseTemplateStringContext_' previewText: $ref: '#/components/schemas/TemplateString_BaseTemplateStringContext_' queryParameters: type: object additionalProperties: type: string additionalProperties: true required: true responses: "200": description: upsertEmailTemplateConfiguration 200 response content: application/json: schema: $ref: '#/components/schemas/ModularEmailTemplateDefinition' delete: operationId: deleteEmailTemplateConfiguration parameters: - name: emailKey in: path required: true schema: minLength: 1 type: string responses: "200": description: deleteEmailTemplateConfiguration 200 response /email-templates/{emailKey}/preview.html: get: operationId: getEmailTemplatePreview parameters: - name: emailKey in: path required: true schema: minLength: 1 type: string - name: userId in: query schema: minimum: 0 type: integer format: int64 nullable: true - name: userEmail in: query schema: type: string nullable: true - name: startDate in: query required: true schema: type: string format: date - name: endDate in: query required: true schema: type: string format: date responses: "200": description: getEmailTemplatePreview 200 response content: text/html: schema: type: string /email-templates/{emailKey}/random.html: get: operationId: getEmailTemplatePreview_1 parameters: - name: emailKey in: path required: true schema: minLength: 1 type: string - name: startDate in: query required: true schema: type: string format: date - name: endDate in: query required: true schema: type: string format: date responses: "200": description: getEmailTemplatePreview_1 200 response content: application/json: schema: type: object /email-templates/{emailKey}/schema: get: operationId: getEmailTemplateSchema parameters: - name: emailKey in: path required: true schema: minLength: 1 type: string responses: "200": description: getEmailTemplateSchema 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/BlockSchema' /erp-sales-orders/{date}/{type}/start-sync: post: operationId: scheduleSync parameters: - name: date in: path required: true schema: type: string format: date - name: type in: path required: true schema: $ref: '#/components/schemas/SalesOrderType' - name: finalize in: query required: true schema: type: boolean responses: "200": description: scheduleSync 200 response /feature-flag-variants: get: operationId: getAllFeatureAndVariantNames responses: "200": description: getAllFeatureAndVariantNames 200 response content: application/json: schema: type: object additionalProperties: type: array items: type: string /gift-cards: post: operationId: createGiftCard requestBody: content: application/json: schema: required: - amount - description - message type: object properties: amount: minimum: 0 type: number description: maxLength: 255 minLength: 1 type: string message: maxLength: 255 minLength: 1 type: string to: nullable: true allOf: - $ref: '#/components/schemas/GiftCardController.EmailContact' required: true responses: "200": description: createGiftCard 200 response content: application/json: schema: $ref: '#/components/schemas/GiftCard' /gift-cards/purchase: post: operationId: createAndPurchaseGiftCard requestBody: content: application/json: schema: required: - amount - from - message - stripeToken - to type: object properties: amount: minimum: 0 type: number to: $ref: '#/components/schemas/GiftCardController.EmailContact' from: $ref: '#/components/schemas/GiftCardController.EmailContact' message: minLength: 1 type: string stripeToken: minLength: 1 type: string required: true responses: "200": description: createAndPurchaseGiftCard 200 response /gift-cards/{code}/erp: get: operationId: getErpGiftCard parameters: - name: code in: path required: true schema: type: string responses: "200": description: getErpGiftCard 200 response content: application/json: schema: $ref: '#/components/schemas/ErpGiftCard' /gift-cards/{code}/erp-transactions: get: operationId: getErpTransactions parameters: - name: code in: path required: true schema: type: string responses: "200": description: getErpTransactions 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/ErpGiftCardTransaction' /gift-cards/{code}/sync: post: operationId: syncGiftCardFromErp parameters: - name: code in: path required: true schema: type: string responses: "200": description: syncGiftCardFromErp 200 response /gift-cards/{code}/void: post: operationId: voidGiftCard parameters: - name: code in: path required: true schema: minLength: 1 type: string requestBody: content: application/json: schema: required: - note type: object properties: note: maxLength: 255 minLength: 1 type: string required: true responses: "200": description: voidGiftCard 200 response /guest/bags: post: operationId: addBag requestBody: content: application/json: schema: required: - bagId - interval - quantity type: object properties: guestCart: $ref: '#/components/schemas/GuestShoppingCart' bagId: type: integer format: int64 interval: maximum: 4 minimum: 1 type: integer format: int32 quantity: minimum: 0 type: integer format: int32 required: true responses: "200": description: addBag 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartItem.BagShoppingCartItem' /guest/bags/{itemId}: delete: operationId: deleteBag parameters: - name: itemId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: type: object properties: guestCart: $ref: '#/components/schemas/GuestShoppingCart' required: true responses: "200": description: deleteBag 200 response /guest/bags/{itemId}/interval: put: operationId: updateBagInterval parameters: - name: itemId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - interval type: object properties: guestCart: $ref: '#/components/schemas/GuestShoppingCart' interval: minimum: 0 type: integer format: int32 required: true responses: "200": description: updateBagInterval 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartItem.BagShoppingCartItem' /guest/bags/{itemId}/quantity: put: operationId: updateBagQuantity parameters: - name: itemId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - quantity type: object properties: guestCart: $ref: '#/components/schemas/GuestShoppingCart' quantity: minimum: 0 type: integer format: int32 required: true responses: "200": description: updateBagQuantity 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartItem.BagShoppingCartItem' /guest/coupon/{code}: post: operationId: setGuestCartCoupon parameters: - name: code in: path required: true schema: type: string requestBody: content: application/json: schema: type: object properties: guestCart: $ref: '#/components/schemas/GuestShoppingCart' required: true responses: "200": description: setGuestCartCoupon 200 response content: application/json: schema: $ref: '#/components/schemas/Coupon' /guest/day-id: put: operationId: changeDayId requestBody: content: application/json: schema: required: - dayId type: object properties: guestCart: $ref: '#/components/schemas/GuestShoppingCart' dayId: $ref: '#/components/schemas/DayId' required: true responses: "200": description: changeDayId 200 response /guest/feature-flags: get: operationId: getAndAssignGuestFeatureFlags parameters: - name: guestAssignments in: query required: true schema: $ref: '#/components/schemas/GuestFeatureFlagAssignments' - name: sessionFeatureFlagContext in: query required: true schema: $ref: '#/components/schemas/SessionFeatureFlagContext' responses: "200": description: getAndAssignGuestFeatureFlags 200 response content: application/json: schema: $ref: '#/components/schemas/FeatureFlagController.FeatureFlagsResponse' /guest/items: get: operationId: getItems parameters: - name: guestCart in: query required: true schema: $ref: '#/components/schemas/GuestShoppingCart' responses: "200": description: getItems 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/ShoppingCartItem' /guest/products: post: operationId: addProduct requestBody: content: application/json: schema: required: - day - interval - productId - quantity type: object properties: guestCart: $ref: '#/components/schemas/GuestShoppingCart' productId: type: integer format: int64 day: $ref: '#/components/schemas/DayId' interval: maximum: 4 minimum: 0 type: integer format: int32 quantity: minimum: 0 type: integer format: int32 required: true responses: "200": description: addProduct 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartItem.ProductShoppingCartItem' /guest/products/{itemId}: delete: operationId: deleteProduct parameters: - name: itemId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: type: object properties: guestCart: $ref: '#/components/schemas/GuestShoppingCart' required: true responses: "200": description: deleteProduct 200 response /guest/products/{itemId}/interval: put: operationId: updateProductInterval parameters: - name: itemId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - interval type: object properties: guestCart: $ref: '#/components/schemas/GuestShoppingCart' interval: minimum: 0 type: integer format: int32 required: true responses: "200": description: updateProductInterval 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartItem.ProductShoppingCartItem' /guest/products/{itemId}/quantity: put: operationId: updateProductQuantity parameters: - name: itemId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - quantity type: object properties: guestCart: $ref: '#/components/schemas/GuestShoppingCart' quantity: minimum: 0 type: integer format: int32 required: true responses: "200": description: updateProductQuantity 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartItem.ProductShoppingCartItem' /guest/transfer-cart: post: operationId: transferGuestCartToCustomer requestBody: content: application/json: schema: type: object properties: guestCart: $ref: '#/components/schemas/GuestShoppingCart' required: true responses: "200": description: transferGuestCartToCustomer 200 response content: application/json: schema: $ref: '#/components/schemas/TransferGuestCartResult' /guest/upcoming-orders: get: operationId: getUpcomingOrders parameters: - name: guestCart in: query required: true schema: $ref: '#/components/schemas/GuestShoppingCart' responses: "200": description: getUpcomingOrders 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/UpcomingOrder' /inventory-rules: get: operationId: getPaginatedRules parameters: - name: productId in: query required: true schema: type: integer format: int64 - name: withDemand in: query schema: type: boolean nullable: true - name: keyset in: query required: true schema: $ref: '#/components/schemas/InventoryRuleKeyset' responses: "200": description: getPaginatedRules 200 response content: application/json: schema: $ref: '#/components/schemas/KeysetPage_Object.InventoryRuleKeyset_' /inventory-rules.csv: get: operationId: getRulesCsv parameters: - name: productId in: query schema: minimum: 0 type: integer format: int64 nullable: true - name: download in: query schema: type: boolean nullable: true responses: "200": description: getRulesCsv 200 response content: text/plain: schema: type: string post: operationId: uploadRulesCsv requestBody: content: multipart/form-data: schema: type: object properties: csvFile: type: string format: binary background: type: boolean nullable: true required: true responses: "200": description: uploadRulesCsv 200 response content: text/plain: schema: type: string /items/upload: post: operationId: upload_5 requestBody: content: multipart/form-data: schema: type: object properties: csvFile: type: string format: binary enforceOrderLimits: type: boolean enforceInventory: type: boolean required: true responses: "200": description: upload_5 200 response content: text/plain: schema: type: string /klaviyo/flows/subscription-changed: post: operationId: handleEmailWebhook parameters: - name: X-API-Key in: header required: true schema: type: string - name: X-Klaviyo-Flow-ID in: header required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/KlaviyoSubscriptionWebhookRequest' required: true responses: "200": description: handleEmailWebhook 200 response /logistics-stop-requests: post: operationId: scheduleBinPickup requestBody: content: application/json: schema: required: - autoCancel - scheduleByDate - userId type: object properties: userId: type: integer format: int64 scheduleByDate: type: string format: date autoCancel: type: boolean required: true responses: "200": description: scheduleBinPickup 200 response /logistics-stop-requests/{stopRequestId}: patch: operationId: updateBinPickup parameters: - name: stopRequestId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - scheduleByDate type: object properties: scheduleByDate: type: string format: date required: true responses: "200": description: updateBinPickup 200 response /logistics-stop-requests/{stopRequestId}/cancel: patch: operationId: cancelBinPickup parameters: - name: stopRequestId in: path required: true schema: type: integer format: int64 responses: "200": description: cancelBinPickup 200 response /marketing-subscriptions/email: post: operationId: subscribe requestBody: content: application/json: schema: required: - email type: object properties: email: type: string format: email required: true responses: "200": description: subscribe 200 response /meta.html: get: summary: "Gets an HTML snippet including meta tags for SEO, customized for this\ \ product or bag." description: |- Gets an HTML snippet including meta tags for SEO, customized for this product or bag. To use this functionality, embed the result of this response into the of an HTML page (e.g. using nginx SSI). operationId: getHtmlMeta parameters: - name: productId in: query schema: type: integer format: int64 nullable: true - name: bagId in: query schema: type: integer format: int64 nullable: true - name: contentPageUri in: query schema: type: string nullable: true responses: "200": description: getHtmlMeta 200 response content: text/html: schema: $ref: '#/components/schemas/HtmlMetaController.HtmlMetaContext' /neversends: get: operationId: getAll responses: "200": description: getAll 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/Neversend' /ond/orders/by-date/{date}/update-items: post: operationId: updateItems parameters: - name: date in: path required: true schema: type: string format: date requestBody: content: application/json: schema: required: - productId - properties type: object properties: productId: type: integer format: int64 properties: $ref: '#/components/schemas/OrderUpdateItemProperties' required: true responses: "200": description: updateItems 200 response content: application/json: schema: $ref: '#/components/schemas/OndOrderController.ItemsUpdateDetails' /ond/orders/{id}: get: operationId: getOrder parameters: - name: id in: path required: true schema: type: integer format: int64 responses: "200": description: getOrder 200 response content: application/json: schema: $ref: '#/components/schemas/OndOrder' /ond/signup: post: operationId: signup requestBody: content: application/json: schema: allOf: - $ref: '#/components/schemas/GuestRegistrationInfo' - properties: guest: nullable: true allOf: - $ref: '#/components/schemas/Guest' guestCart: nullable: true allOf: - $ref: '#/components/schemas/GuestShoppingCart' guestAssignments: $ref: '#/components/schemas/GuestFeatureFlagAssignments' guestFacts: $ref: '#/components/schemas/GuestCustomerFacts' guestRegistrationInfoStorage: $ref: '#/components/schemas/GuestRegistrationInfoStorage' required: true responses: "200": description: signup 200 response content: application/json: schema: $ref: '#/components/schemas/User.Customer' /ond/signup/apply-preselections: post: summary: Applies registration products to the guest's cart based on the passed URIs. description: Applies registration products to the guest's cart based on the passed URIs. Products are preselected and added based on the guest's household size. operationId: applyPreselections requestBody: description: "URIs to preselect products from, and product IDs to skip" content: application/json: schema: allOf: - $ref: '#/components/schemas/RegistrationProductsController.PreselectionsRequest' - properties: guestCart: $ref: '#/components/schemas/GuestShoppingCart' guestFacts: $ref: '#/components/schemas/GuestCustomerFacts' required: true responses: "200": description: applyPreselections 200 response /ond/signup/customer-facts: get: operationId: getAllFacts parameters: - name: customerFacts in: query required: true schema: $ref: '#/components/schemas/GuestCustomerFacts' responses: "200": description: getAllFacts 200 response content: application/json: schema: type: object additionalProperties: true put: operationId: saveAllFacts requestBody: content: application/json: schema: type: object properties: customerFacts: $ref: '#/components/schemas/GuestCustomerFacts' additionalProperties: true required: true responses: "200": description: saveAllFacts 200 response content: application/json: schema: type: object additionalProperties: true /ond/signup/info: get: operationId: getGuestRegistrationInfo parameters: - name: guestRegistrationInfoStorage in: query required: true schema: $ref: '#/components/schemas/GuestRegistrationInfoStorage' responses: "200": description: getGuestRegistrationInfo 200 response content: application/json: schema: $ref: '#/components/schemas/GuestRegistrationInfo' post: operationId: saveGuestRegistrationInfo requestBody: content: application/json: schema: allOf: - $ref: '#/components/schemas/GuestRegistrationInfo' - properties: guest: $ref: '#/components/schemas/Guest' guestCart: $ref: '#/components/schemas/GuestShoppingCart' guestRegistrationInfoStorage: $ref: '#/components/schemas/GuestRegistrationInfoStorage' state: $ref: '#/components/schemas/GuestRegistrationInfo.State' required: true responses: "200": description: saveGuestRegistrationInfo 200 response /ond/signup/registration-products: get: summary: Returns a list of products that a guest can select during registration. description: |- Returns a list of products that a guest can select during registration. Follows these rules: * If a registration product is already in the guest's cart, always return it, regardless of household size (i.e. if the guest changed their household after items were already added to their cart). * Otherwise, only return products that are visible for the guest's current household size. operationId: getRegistrationProducts parameters: - name: uris in: query required: true schema: type: array items: type: string - name: guestCart in: query required: true schema: $ref: '#/components/schemas/GuestShoppingCart' - name: customerFacts in: query required: true schema: $ref: '#/components/schemas/GuestCustomerFacts' responses: "200": description: getRegistrationProducts 200 response content: application/json: schema: type: object additionalProperties: type: array items: $ref: '#/components/schemas/Product' /ond/signup/remove-preselections: delete: summary: Removes registration products from the guest's cart based on the passed URIs. description: Removes registration products from the guest's cart based on the passed URIs. operationId: removePreselections requestBody: description: "URIs to remove products from, and product IDs to skip" content: application/json: schema: allOf: - $ref: '#/components/schemas/RegistrationProductsController.PreselectionsRequest' - properties: guestCart: $ref: '#/components/schemas/GuestShoppingCart' required: true responses: "200": description: removePreselections 200 response /order-limits/by-day: get: operationId: getDailyLimits responses: "200": description: getDailyLimits 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/DailyOrderLimit' put: operationId: setDailyLimit requestBody: content: application/json: schema: required: - day - orderLimit type: object properties: day: $ref: '#/components/schemas/DayId' orderLimit: minimum: 0 type: integer format: int32 required: true responses: "200": description: setDailyLimit 200 response /order-limits/utilization: get: operationId: getOrderLimitUtilization responses: "200": description: getOrderLimitUtilization 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/OrderLimitUtilization' /orders/{id}/bin-assignments: get: operationId: getBinAssignments_1 parameters: - name: id in: path required: true schema: type: integer format: int64 responses: "200": description: getBinAssignments_1 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/BinAssignment' /orders/{orderId}/packing-slips: get: operationId: renderSlipToHtml parameters: - name: orderId in: path required: true schema: type: integer format: int64 responses: "200": description: renderSlipToHtml 200 response content: text/html: schema: type: string /packaging-transactions/inbound: get: operationId: getInboundPackagingTransactions parameters: - name: packagingType in: query required: true schema: $ref: '#/components/schemas/PackagingType_1' - name: date in: query required: true schema: type: string format: date responses: "200": description: getInboundPackagingTransactions 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/PackagingTransaction' post: operationId: createPackagingInboundTransaction requestBody: content: application/json: schema: required: - packagingType - quantity type: object properties: packagingType: $ref: '#/components/schemas/PackagingType_3' quantity: minimum: 0 type: integer format: int32 required: true responses: "200": description: createPackagingInboundTransaction 200 response content: application/json: schema: $ref: '#/components/schemas/PackagingTransaction.InboundPackagingTransaction' /packaging-transactions/outbound: get: operationId: getOutboundPackagingTransactions parameters: - name: packagingType in: query required: true schema: $ref: '#/components/schemas/PackagingType_2' - name: orderId in: query required: true schema: minimum: 0 type: integer format: int64 responses: "200": description: getOutboundPackagingTransactions 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/PackagingTransaction' post: operationId: createPackagingOutboundTransaction requestBody: content: application/json: schema: required: - orderId - packagingType - quantity type: object properties: packagingType: $ref: '#/components/schemas/PackagingType_4' quantity: minimum: 0 type: integer format: int32 orderId: minimum: 0 type: integer format: int64 required: true responses: "200": description: createPackagingOutboundTransaction 200 response content: application/json: schema: $ref: '#/components/schemas/PackagingTransaction.OutboundPackagingTransaction' /packaging-transactions/{transactionType}/{id}: delete: operationId: deletePackagingTransaction parameters: - name: id in: path required: true schema: minimum: 0 type: integer format: int64 - name: transactionType in: path required: true schema: $ref: '#/components/schemas/PackagingTransactionType' responses: "200": description: deletePackagingTransaction 200 response content: application/json: schema: type: boolean /packing-slips/{date}: get: summary: "{station} expects a comma separated list of packing station codes:\ \ A,B,C" description: "{station} expects a comma separated list of packing station codes:\ \ A,B,C" operationId: renderSlipsByDate parameters: - name: date in: path required: true schema: type: string format: date - name: stations in: query schema: type: array nullable: true items: $ref: '#/components/schemas/PackingStationCode' - name: fastTrack in: query schema: type: boolean nullable: true responses: "200": description: renderSlipsByDate 200 response content: text/html: schema: type: string /password-reset-tokens: get: operationId: getPasswordResetTokenByUserIdAndToken parameters: - name: userId in: query required: true schema: type: integer format: int64 - name: token in: query required: true schema: minLength: 1 type: string responses: "200": description: getPasswordResetTokenByUserIdAndToken 200 response post: operationId: createAndEmailPasswordResetToken requestBody: content: application/json: schema: type: object properties: email: type: string required: true responses: "200": description: createAndEmailPasswordResetToken 200 response /pickup-locations/{locationId}/delivery-dates: get: operationId: getDeliveryDatesByLocation parameters: - name: locationId in: path required: true schema: type: integer format: int64 - name: start in: query required: true schema: type: string format: date - name: end in: query required: true schema: type: string format: date - name: limit in: query required: true schema: maximum: 50 type: integer format: int64 default: 20 responses: "200": description: getDeliveryDatesByLocation 200 response content: application/json: schema: type: array items: type: string format: date /producers/by-uri/{uri}: get: operationId: getProducerByUri parameters: - name: uri in: path required: true schema: minLength: 1 type: string responses: "200": description: getProducerByUri 200 response content: application/json: schema: $ref: '#/components/schemas/ProducerDetailed' /producers/search: get: operationId: search_2 parameters: - name: query in: query required: true schema: maxLength: 256 minLength: 0 type: string - name: limit in: query schema: maximum: 250 minimum: 0 type: integer format: int32 nullable: true - name: offset in: query schema: minimum: 0 type: integer format: int32 nullable: true responses: "200": description: search_2 200 response content: application/json: schema: $ref: '#/components/schemas/SearchResultDto' /producers/search/start-indexing: post: operationId: startIndexing_1 parameters: - name: recreateDocuments in: query required: true schema: type: boolean default: false requestBody: content: application/json: schema: required: - producerIds type: object properties: producerIds: minItems: 1 type: array items: type: integer format: int64 required: true responses: "200": description: startIndexing_1 200 response /products: get: operationId: getProductsByIds parameters: - name: ids in: query required: true schema: maxItems: 50 minItems: 0 type: array items: type: integer format: int64 responses: "200": description: getProductsByIds 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/Product' /products.csv: get: operationId: exportProducts parameters: - name: mode in: query required: true schema: $ref: '#/components/schemas/ProductCsvProcessor.Mode' - name: productId in: query schema: type: integer format: int64 nullable: true - name: publishedOnly in: query schema: type: boolean nullable: true - name: omitLongTextColumns in: query schema: type: boolean nullable: true - name: forceOverrideDates in: query schema: type: boolean nullable: true - name: includeSetColumns in: query schema: type: boolean nullable: true responses: "200": description: exportProducts 200 response content: text/csv: schema: type: string post: operationId: importProducts parameters: - name: mode in: query required: true schema: $ref: '#/components/schemas/ProductCsvProcessor.Mode' requestBody: content: multipart/form-data: schema: type: object properties: csvFile: type: string format: binary required: true responses: "200": description: importProducts 200 response content: text/plain: schema: type: string /products/by-sku/{sku}: get: operationId: getProductBySku parameters: - name: sku in: path required: true schema: type: string - name: date in: query schema: type: string format: date nullable: true - name: includeUnpublished in: query schema: type: boolean nullable: true responses: "200": description: getProductBySku 200 response content: application/json: schema: $ref: '#/components/schemas/ProductWithDetails' /products/demand.csv: get: operationId: getDemandCsv parameters: - name: inventoryControlledOnly in: query required: true schema: type: boolean default: false responses: "200": description: getDemandCsv 200 response content: text/csv: schema: type: string /products/search: get: operationId: search_3 parameters: - name: query in: query required: true schema: maxLength: 256 minLength: 0 type: string - name: limit in: query required: true schema: maximum: 250 minimum: 0 type: integer format: int32 - name: offset in: query required: true schema: minimum: 0 type: integer format: int32 - name: sort in: query required: true schema: $ref: '#/components/schemas/ProductSearchSort' - name: facets in: query required: true schema: $ref: '#/components/schemas/ProductSearchFacet' - name: productId in: query required: true schema: type: integer format: int64 - name: categoryId in: query required: true schema: type: integer format: int64 - name: categoryCodes in: query required: true schema: type: array items: type: string - name: categoryName in: query required: true schema: type: string - name: categoryUri in: query required: true schema: type: string - name: producerId in: query required: true schema: type: integer format: int64 - name: producerName in: query required: true schema: type: string - name: producerUri in: query required: true schema: type: string - name: isAvailableStore in: query required: true schema: type: boolean - name: hasBagPoints in: query required: true schema: type: boolean - name: bagPointLimit in: query required: true schema: type: integer format: int32 - name: shoppingDate in: query required: true schema: type: string format: date - name: inStockOnly in: query required: true schema: type: boolean - name: displayOutOfStock in: query required: true schema: type: boolean - name: allowedInBagTypes in: query required: true schema: type: array items: $ref: '#/components/schemas/BagType' - name: tag in: query required: true schema: type: array items: type: string - name: includeUnpublished in: query required: true schema: type: boolean - name: isCanadian in: query required: true schema: type: boolean - name: isDeleted in: query required: true schema: type: boolean responses: "200": description: search_3 200 response content: application/json: schema: $ref: '#/components/schemas/SearchResultDto' /products/search/start-indexing: post: operationId: startIndexing_2 parameters: - name: recreateDocuments in: query required: true schema: type: boolean default: false requestBody: content: application/json: schema: required: - productIds type: object properties: productIds: minItems: 1 type: array items: type: integer format: int64 required: true responses: "200": description: startIndexing_2 200 response /products/{productId}: get: operationId: getProductById parameters: - name: productId in: path required: true schema: type: integer format: int64 - name: date in: query schema: type: string format: date nullable: true - name: includeUnpublished in: query schema: type: boolean nullable: true responses: "200": description: getProductById 200 response content: application/json: schema: $ref: '#/components/schemas/ProductWithDetails' /products/{productId}/daily-demand: get: operationId: getCurrentDailyDemandByProduct parameters: - name: productId in: path required: true schema: type: integer format: int64 responses: "200": description: getCurrentDailyDemandByProduct 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/ProductDemandWithDate' /products/{productId}/images: get: operationId: getProductImages parameters: - name: productId in: path required: true schema: type: integer format: int64 responses: "200": description: getProductImages 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/ProductImage' /referral-methods: get: operationId: fetchReferralMethods responses: "200": description: fetchReferralMethods 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/ReferralMethod' /schedules/{day}/{interval}/dates: get: operationId: getScheduleDates parameters: - name: day in: path required: true schema: $ref: '#/components/schemas/DayId' - name: interval in: path required: true schema: maximum: 4 minimum: 0 type: integer format: int32 - name: hold in: query schema: minimum: 0 type: integer format: int32 nullable: true responses: "200": description: getScheduleDates 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/ScheduleController.ScheduleDate' /short-urls: get: operationId: getAllShortUrls responses: "200": description: getAllShortUrls 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/ShortUrl' post: operationId: createShortUrl requestBody: content: application/json: schema: required: - code - url type: object properties: code: type: string url: type: string note: type: string nullable: true required: true responses: "200": description: createShortUrl 200 response content: application/json: schema: $ref: '#/components/schemas/ShortUrl' /short-urls/{code}: get: operationId: getShortUrl parameters: - name: code in: path required: true schema: type: string responses: "200": description: getShortUrl 200 response content: application/json: schema: $ref: '#/components/schemas/ShortUrl' delete: operationId: deleteShortUrl parameters: - name: code in: path required: true schema: type: string responses: "200": description: deleteShortUrl 200 response /short-urls/{currentCode}: put: operationId: updateShortUrl parameters: - name: currentCode in: path required: true schema: type: string requestBody: content: application/json: schema: required: - code - url type: object properties: code: type: string url: type: string note: type: string nullable: true required: true responses: "200": description: updateShortUrl 200 response content: application/json: schema: $ref: '#/components/schemas/ShortUrl' /signup-products.csv: get: operationId: exportSignupProducts responses: "200": description: exportSignupProducts 200 response content: text/csv: schema: type: string post: operationId: importSignupProducts requestBody: content: multipart/form-data: schema: type: object properties: csvFile: type: string format: binary required: true responses: "200": description: importSignupProducts 200 response content: text/plain: schema: type: string /sitemap.xml: get: operationId: getSiteMap responses: "200": description: getSiteMap 200 response content: text/xml: schema: type: string /social-proof: get: operationId: getSocialProof responses: "200": description: getSocialProof 200 response content: application/json: schema: $ref: '#/components/schemas/SocialProof' /timeslots/bulk-update-by-user: post: operationId: upload_6 requestBody: content: multipart/form-data: schema: type: object properties: csvFile: type: string format: binary required: true responses: "200": description: upload_6 200 response content: text/plain: schema: type: string /trexity/parcel-events: post: operationId: handleParcelEvent parameters: - name: X-Trexity-Signature in: header required: true schema: type: string - name: X-Trexity-Event-Name in: header required: true schema: type: string requestBody: content: application/json: schema: type: string required: true responses: "200": description: handleParcelEvent 200 response /trexity/shipment-events: post: operationId: handleShipmentEvent parameters: - name: X-Trexity-Signature in: header required: true schema: type: string - name: X-Trexity-Event-Name in: header required: true schema: type: string requestBody: content: application/json: schema: type: string required: true responses: "200": description: handleShipmentEvent 200 response /trexity/sync: post: operationId: syncDeliveryProvider requestBody: content: application/json: schema: required: - date type: object properties: date: type: string format: date required: true responses: "200": description: syncDeliveryProvider 200 response /twilio/sms: post: operationId: handleSmsWebhook requestBody: content: application/x-www-form-urlencoded: schema: type: object properties: twilioRequest: $ref: '#/components/schemas/TwilioSmsWebhookRequest' required: true responses: "200": description: handleSmsWebhook 200 response content: application/xml: schema: type: string /users/{userId}: get: operationId: getUserById parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 responses: "200": description: getUserById 200 response content: application/json: schema: $ref: '#/components/schemas/User' /users/{userId}/addresses: get: operationId: getCustomerAddresses parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 responses: "200": description: getCustomerAddresses 200 response content: application/json: schema: $ref: '#/components/schemas/UserDeliveryAndBillingAddress' /users/{userId}/addresses/billing: put: operationId: updateBillingAddress parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 requestBody: content: application/json: schema: allOf: - $ref: '#/components/schemas/NewBillingAddressDto' - properties: sameAsDelivery: type: boolean required: true responses: "200": description: updateBillingAddress 200 response content: application/json: schema: $ref: '#/components/schemas/UserStreetAddress' delete: operationId: removeBillingAddress parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 responses: "200": description: removeBillingAddress 200 response /users/{userId}/addresses/delivery: put: operationId: updateDeliveryAddress parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 requestBody: content: application/json: schema: allOf: - $ref: '#/components/schemas/NewStreetAddressDto' - required: - defaultDayId properties: defaultDayId: $ref: '#/components/schemas/DayId' required: true responses: "200": description: updateDeliveryAddress 200 response content: application/json: schema: $ref: '#/components/schemas/UserStreetAddress' /users/{userId}/bags: post: operationId: addBag_1 parameters: - name: userId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - bagId - day - interval - quantity type: object properties: bagId: type: integer format: int64 day: $ref: '#/components/schemas/DayId' interval: minimum: 0 type: integer format: int32 quantity: minimum: 0 type: integer format: int32 numCycles: minimum: 0 type: integer format: int32 nullable: true required: true responses: "200": description: addBag_1 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.BagShoppingCartItem.StoredBagShoppingCartItem_' /users/{userId}/bags/{itemId}: delete: operationId: deleteBag_1 parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: itemId in: path required: true schema: type: integer format: int64 responses: "200": description: deleteBag_1 200 response /users/{userId}/bags/{itemId}/apply-customization-fee: put: operationId: setBagApplyCustomizationFee parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: itemId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - value type: object properties: value: type: boolean required: true responses: "200": description: setBagApplyCustomizationFee 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.BagShoppingCartItem_' /users/{userId}/bags/{itemId}/bag: put: operationId: changeBag parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: itemId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - bagId type: object properties: bagId: type: integer format: int64 required: true responses: "200": description: changeBag 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.BagShoppingCartItem.StoredBagShoppingCartItem_' /users/{userId}/bags/{itemId}/contents: put: operationId: setBagContents parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: itemId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - contents type: object properties: contents: minItems: 1 type: array items: $ref: '#/components/schemas/ShoppingCartController.BagProductSelection' applyCustomizationFee: type: boolean nullable: true extraBagPointsOverride: type: integer format: int32 nullable: true required: true responses: "200": description: setBagContents 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.BagShoppingCartItem.StoredBagShoppingCartItem_' /users/{userId}/bags/{itemId}/hold: put: operationId: updateBagHold parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: itemId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - hold type: object properties: hold: type: boolean required: true responses: "200": description: updateBagHold 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.BagShoppingCartItem.StoredBagShoppingCartItem_' /users/{userId}/bags/{itemId}/interval: put: operationId: updateBagInterval_1 parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: itemId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - interval type: object properties: interval: minimum: 0 type: integer format: int32 required: true responses: "200": description: updateBagInterval_1 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.BagShoppingCartItem.StoredBagShoppingCartItem_' /users/{userId}/bags/{itemId}/numCycles: put: operationId: updateBagCycle parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: itemId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - numCycles type: object properties: numCycles: minimum: 0 type: integer format: int32 required: true responses: "200": description: updateBagCycle 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.BagShoppingCartItem.StoredBagShoppingCartItem_' /users/{userId}/bags/{itemId}/quantity: put: operationId: updateBagQuantity_1 parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: itemId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - quantity type: object properties: quantity: minimum: 0 type: integer format: int32 required: true responses: "200": description: updateBagQuantity_1 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.BagShoppingCartItem.StoredBagShoppingCartItem_' /users/{userId}/balance: get: operationId: getAccountBalance parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 responses: "200": description: getAccountBalance 200 response content: application/json: schema: $ref: '#/components/schemas/AccountBalance' /users/{userId}/charge: post: operationId: chargeCustomer parameters: - name: userId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: type: object properties: amount: type: number reason: type: string note: type: string required: true responses: "200": description: chargeCustomer 200 response /users/{userId}/contacts: get: operationId: getCustomerContacts parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 responses: "200": description: getCustomerContacts 200 response content: application/json: schema: $ref: '#/components/schemas/CustomerContacts' /users/{userId}/contacts/primary: put: operationId: updatePrimaryContact parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 requestBody: content: application/json: schema: $ref: '#/components/schemas/CustomerContact' required: true responses: "200": description: updatePrimaryContact 200 response content: application/json: schema: $ref: '#/components/schemas/CustomerContact' /users/{userId}/contacts/secondary: put: operationId: updateSecondaryContact parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 requestBody: content: application/json: schema: $ref: '#/components/schemas/CustomerContact' required: true responses: "200": description: updateSecondaryContact 200 response content: application/json: schema: $ref: '#/components/schemas/CustomerContact' /users/{userId}/coupons: get: operationId: getCustomerCoupons parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 - name: includeInactive in: query schema: type: boolean nullable: true responses: "200": description: getCustomerCoupons 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/UserCoupon' post: operationId: addCustomerCoupon parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 requestBody: content: application/json: schema: required: - code type: object properties: code: minLength: 1 type: string required: true responses: "200": description: addCustomerCoupon 200 response content: application/json: schema: $ref: '#/components/schemas/UserCoupon' /users/{userId}/default-payment-method: get: operationId: getDefaultPaymentMethod parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 responses: "200": description: getDefaultPaymentMethod 200 response content: application/json: schema: $ref: '#/components/schemas/Card' put: operationId: setDefaultPaymentMethod parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 requestBody: content: application/json: schema: type: object properties: source: $ref: '#/components/schemas/StripeSource' required: true responses: "200": description: setDefaultPaymentMethod 200 response content: application/json: schema: $ref: '#/components/schemas/Card' /users/{userId}/delivery-holds: get: operationId: getDeliveryHolds parameters: - name: userId in: path required: true schema: type: integer format: int64 responses: "200": description: getDeliveryHolds 200 response content: application/json: schema: type: array items: type: string format: date post: operationId: addDeliveryHold parameters: - name: userId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - date type: object properties: date: type: string format: date required: true responses: "200": description: addDeliveryHold 200 response /users/{userId}/delivery-holds/{date}: delete: operationId: deleteDeliveryHold parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: date in: path required: true schema: type: string format: date responses: "200": description: deleteDeliveryHold 200 response /users/{userId}/delivery-zone: get: operationId: getDeliveryZoneByUserId parameters: - name: userId in: path required: true schema: type: integer format: int64 responses: "200": description: getDeliveryZoneByUserId 200 response content: application/json: schema: $ref: '#/components/schemas/OndDeliveryZone' /users/{userId}/favourite-products: get: operationId: getUserFavourites parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: shoppingDate in: query schema: type: string format: date nullable: true responses: "200": description: getUserFavourites 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/Product' post: operationId: addUserFavourite parameters: - name: userId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - productId type: object properties: productId: type: integer format: int64 required: true responses: "200": description: addUserFavourite 200 response /users/{userId}/favourite-products/ids: get: operationId: getUserFavouriteIds parameters: - name: userId in: path required: true schema: type: integer format: int64 responses: "200": description: getUserFavouriteIds 200 response content: application/json: schema: type: array items: type: integer format: int64 /users/{userId}/favourite-products/{productId}: delete: operationId: removeUserFavourite parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: productId in: path required: true schema: type: integer format: int64 responses: "200": description: removeUserFavourite 200 response /users/{userId}/feature-flags: get: operationId: getAndAssignFeatureFlags parameters: - name: sessionFeatureFlagContext in: query required: true schema: $ref: '#/components/schemas/SessionFeatureFlagContext' - name: userId in: path required: true schema: type: integer format: int64 responses: "200": description: getAndAssignFeatureFlags 200 response content: application/json: schema: $ref: '#/components/schemas/FeatureFlagController.FeatureFlagsResponse' /users/{userId}/gift-cards: post: operationId: applyGiftCard parameters: - name: userId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - code type: object properties: code: type: string required: true responses: "200": description: applyGiftCard 200 response content: application/json: schema: $ref: '#/components/schemas/UserGiftCardController.ApplyGiftCardResult' /users/{userId}/invoices: get: operationId: getInvoices parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 - name: keyset in: query required: true schema: $ref: '#/components/schemas/InvoicesController.OrderInvoiceKeyset' - name: before in: query schema: type: string format: date nullable: true responses: "200": description: getInvoices 200 response content: application/json: schema: $ref: '#/components/schemas/KeysetPage_OrderInvoice.InvoicesController.OrderInvoiceKeyset_' /users/{userId}/invoices/{id}.html: get: operationId: getInvoice parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 - name: id in: path required: true schema: minimum: 0 type: integer format: int64 responses: "200": description: getInvoice 200 response content: application/json: schema: type: object /users/{userId}/items: get: operationId: getItems_1 parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: day in: query schema: nullable: true allOf: - $ref: '#/components/schemas/DayId' - name: subscriptionsOnly in: query schema: type: boolean nullable: true default: false responses: "200": description: getItems_1 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.StoredShoppingCartItem_' /users/{userId}/items/shift: patch: operationId: shiftCartItems parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 requestBody: content: application/json: schema: required: - day - itemIds type: object properties: itemIds: type: array items: type: integer format: int64 day: $ref: '#/components/schemas/DayId' required: true responses: "200": description: shiftCartItems 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartManager.ShiftCartItemsResult' /users/{userId}/membership-trial-prompt: get: operationId: createUserMessage parameters: - name: userId in: path required: true schema: type: integer format: int64 responses: "200": description: createUserMessage 200 response content: application/json: schema: $ref: '#/components/schemas/UserMessage' /users/{userId}/memberships: post: operationId: addMembership parameters: - name: userId in: path required: true schema: type: integer format: int64 responses: "200": description: addMembership 200 response content: application/json: schema: $ref: '#/components/schemas/UserMembership' /users/{userId}/memberships/{membershipId}: patch: operationId: modifyMembership parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: membershipId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: type: object properties: autoRenew: type: boolean nullable: true endDate: type: string format: date nullable: true required: true responses: "200": description: modifyMembership 200 response /users/{userId}/messages: get: operationId: getUserMessages parameters: - name: userId in: path required: true schema: type: integer format: int64 responses: "200": description: getUserMessages 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/UserMessage' /users/{userId}/messages/{messageId}: post: operationId: respondToMessage parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: messageId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - action type: object properties: properties: maxLength: 1024 type: string nullable: true action: $ref: '#/components/schemas/UserMessageResponseAction' required: true responses: "200": description: respondToMessage 200 response /users/{userId}/neversends: get: operationId: getNeversendsByUser parameters: - name: userId in: path required: true schema: type: integer format: int64 responses: "200": description: getNeversendsByUser 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/Neversend' post: operationId: addUserNeversend parameters: - name: userId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - neversendId type: object properties: neversendId: type: integer format: int64 required: true responses: "200": description: addUserNeversend 200 response content: application/json: schema: $ref: '#/components/schemas/Neversend' delete: operationId: removeAllNeversendsByUser parameters: - name: userId in: path required: true schema: type: integer format: int64 responses: "200": description: removeAllNeversendsByUser 200 response /users/{userId}/neversends/{neversendId}: delete: operationId: deleteUserNeversend parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: neversendId in: path required: true schema: type: integer format: int64 responses: "200": description: deleteUserNeversend 200 response /users/{userId}/password: put: operationId: changePassword parameters: - name: userId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - newPassword - password type: object properties: password: minLength: 1 type: string newPassword: minLength: 1 type: string required: true responses: "200": description: changePassword 200 response /users/{userId}/products: post: operationId: addProduct_1 parameters: - name: userId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - day - interval - productId - quantity type: object properties: productId: type: integer format: int64 day: $ref: '#/components/schemas/DayId' interval: maximum: 4 minimum: 0 type: integer format: int32 quantity: minimum: 0 type: integer format: int32 hold: type: boolean nullable: true numCycles: minimum: 0 type: integer format: int32 nullable: true required: true responses: "200": description: addProduct_1 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.ProductShoppingCartItem.StoredProductShoppingCartItem_' /users/{userId}/products/{itemId}: delete: operationId: deleteProduct_1 parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: itemId in: path required: true schema: type: integer format: int64 responses: "200": description: deleteProduct_1 200 response /users/{userId}/products/{itemId}/hold: put: operationId: updateProductHold parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: itemId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - hold type: object properties: hold: type: boolean required: true responses: "200": description: updateProductHold 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.ProductShoppingCartItem_' /users/{userId}/products/{itemId}/interval: put: operationId: updateProductInterval_1 parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: itemId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - interval type: object properties: interval: minimum: 0 type: integer format: int32 required: true responses: "200": description: updateProductInterval_1 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.ProductShoppingCartItem_' /users/{userId}/products/{itemId}/numCycles: put: operationId: updateProductCycle parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: itemId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - numCycles type: object properties: numCycles: minimum: 0 type: integer format: int32 required: true responses: "200": description: updateProductCycle 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.ProductShoppingCartItem.StoredProductShoppingCartItem_' /users/{userId}/products/{itemId}/quantity: put: operationId: updateProductQuantity_1 parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: itemId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - quantity type: object properties: quantity: minimum: 0 type: integer format: int32 required: true responses: "200": description: updateProductQuantity_1 200 response content: application/json: schema: $ref: '#/components/schemas/ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.ProductShoppingCartItem_' /users/{userId}/recently-ordered-products: get: operationId: getRecentlyOrderedProducts parameters: - name: userId in: path required: true schema: type: integer format: int64 - name: query in: query required: true schema: maxLength: 256 minLength: 0 type: string - name: shoppingDate in: query required: true schema: type: string format: date - name: limit in: query required: true schema: maximum: 50 minimum: 0 type: integer format: int32 responses: "200": description: getRecentlyOrderedProducts 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/Product' /users/{userId}/reset-password: post: operationId: resetPassword parameters: - name: userId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: required: - password - token type: object properties: token: minLength: 1 type: string password: minLength: 1 type: string required: true responses: "200": description: resetPassword 200 response /users/{userId}/settings: get: operationId: getCustomerSettings parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 responses: "200": description: getCustomerSettings 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/UserSetting_Object_' put: operationId: updateUserSetting parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 requestBody: content: application/json: schema: required: - key - value type: object properties: key: $ref: '#/components/schemas/UserSettingKey' value: type: string required: true responses: "200": description: updateUserSetting 200 response content: application/json: schema: $ref: '#/components/schemas/UserSetting_Object_' /users/{userId}/timeslots: post: operationId: setSelectedTimeslotByDay parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 requestBody: content: application/json: schema: required: - timeslotId type: object properties: timeslotId: minimum: 0 type: integer format: int64 required: true responses: "200": description: setSelectedTimeslotByDay 200 response content: application/json: schema: $ref: '#/components/schemas/OndTimeslot' /users/{userId}/timeslots/by-day/{day}: get: operationId: getSelectedTimeslotByDay parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 - name: day in: path required: true schema: $ref: '#/components/schemas/DayId' responses: "200": description: getSelectedTimeslotByDay 200 response content: application/json: schema: $ref: '#/components/schemas/OndTimeslot' /users/{userId}/transactions: get: operationId: getCharges parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 - name: keyset in: query required: true schema: $ref: '#/components/schemas/PaymentController.ChargeKeyset' responses: "200": description: getCharges 200 response content: application/json: schema: $ref: '#/components/schemas/KeysetPage_PaymentController.Charge.PaymentController.ChargeKeyset_' /users/{userId}/upcoming-orders: get: operationId: getUpcomingOrders_1 parameters: - name: userId in: path required: true schema: minimum: 0 type: integer format: int64 responses: "200": description: getUpcomingOrders_1 200 response content: application/json: schema: type: array items: $ref: '#/components/schemas/UpcomingOrder' components: schemas: AccountBalance: required: - freeOfChargeCreditBalance - giftCardBalance - paidCreditBalance - totalBalance type: object properties: totalBalance: type: number paidCreditBalance: type: number freeOfChargeCreditBalance: type: number giftCardBalance: type: number AppliedDiscount: required: - amount type: object properties: isMembershipDiscount: type: boolean isSubscriptionDiscount: type: boolean isCouponDiscount: type: boolean amount: type: number Authentication: type: object allOf: - $ref: '#/components/schemas/Principal' - required: - attributes - roles properties: attributes: type: object additionalProperties: true roles: type: array items: type: string Bag: required: - allowExtraItems - allowedCategoryCodes - allowedIntervals - bagType - contentsDescription - contentsProfile - customizationFee - description - erpItemId - extraBagPointPrice - id - imageUrl - immutable - isDIY - isFeatured - isOrganic - name - points - portionSize - portionText - price - published - shortDescription - shortName - uri type: object properties: id: type: integer format: int64 erpItemId: type: integer format: int64 name: type: string shortName: type: string bagType: $ref: '#/components/schemas/BagType' description: type: string shortDescription: type: string contentsProfile: type: string contentsDescription: type: string portionText: type: string portionSize: type: integer format: int32 uri: type: string imageUrl: type: string price: $ref: '#/components/schemas/Price' customizationFee: type: number points: type: integer format: int32 nullable: true allowExtraItems: type: boolean extraBagPointPrice: type: number published: type: boolean immutable: type: boolean allowedIntervals: type: array items: type: integer format: int32 allowedCategoryCodes: type: array items: type: string isDIY: type: boolean isFeatured: type: boolean isOrganic: type: boolean BagContentsCsvProcessor.Params: required: - endDate - startDate type: object properties: startDate: type: string format: date endDate: type: string format: date BagCustomizationProductFilters: required: - categories - tags type: object properties: categories: type: array items: $ref: '#/components/schemas/Category' tags: type: array items: $ref: '#/components/schemas/ProductTag.Tag' BagCustomizedBy: type: string description: Corresponds to the \`customized_by\` column in users_subscriptions enum: - SYSTEM - CUSTOMER - ADMIN BagItem: type: object BagItem.NewBagItem: type: object BagItemNeversendResult: type: object discriminator: propertyName: status mapping: FAILED: '#/components/schemas/BagItemNeversendResult.Failed' SUBSTITUTED: '#/components/schemas/BagItemNeversendResult.Success' oneOf: - $ref: '#/components/schemas/BagItemNeversendResult.Success' - $ref: '#/components/schemas/BagItemNeversendResult.Failed' BagItemNeversendResult.Failed: type: object BagItemNeversendResult.Success: required: - substitutedProductId - substitutedProductName - substitutedProductQuantity type: object properties: substitutedProductId: type: integer format: int64 substitutedProductName: type: string substitutedProductQuantity: type: integer format: int32 status: type: string BagPublishDetails: required: - canPublish - date - hasContents - published type: object properties: date: type: string format: date hasContents: type: boolean published: type: boolean canPublish: type: boolean description: Provides summary info about bag contents publish status BagSearchSort: type: string enum: - NAME_ASC - NAME_DESC - PRICE_ASC - PRICE_DESC - SORT_ORDER_ASC - SORT_ORDER_DESC BagSubstitutionRuleCsvProcessor.Params: required: - endDate - startDate type: object properties: startDate: type: string format: date endDate: type: string format: date BagType: type: string enum: - REGULAR - VALUE BagWithItems: required: - allowExtraItems - allowedCategoryCodes - allowedIntervals - bagType - contentsDescription - contentsProfile - customizationFee - description - erpItemId - extraBagPointPrice - id - imageUrl - immutable - isDIY - isFeatured - isOrganic - items - name - points - portionSize - portionText - price - published - shortDescription - shortName - uri type: object properties: id: type: integer format: int64 erpItemId: type: integer format: int64 name: type: string shortName: type: string bagType: $ref: '#/components/schemas/BagType' description: type: string shortDescription: type: string contentsProfile: type: string contentsDescription: type: string portionText: type: string portionSize: type: integer format: int32 uri: type: string imageUrl: type: string price: $ref: '#/components/schemas/Price' customizationFee: type: number points: type: integer format: int32 nullable: true allowExtraItems: type: boolean extraBagPointPrice: type: number published: type: boolean immutable: type: boolean allowedIntervals: type: array items: type: integer format: int32 allowedCategoryCodes: type: array items: type: string isDIY: type: boolean isFeatured: type: boolean isOrganic: type: boolean items: type: array items: $ref: '#/components/schemas/BagItem' BatchModularEmailTasksController.PendingBatchEmailTask: required: - adminId - emailTemplateKey - executionTime - status - taskInstance - taskName - userCount type: object properties: emailTemplateKey: type: string taskName: type: string taskInstance: type: string executionTime: type: string format: date-time adminId: type: integer format: int64 userCount: type: integer format: int32 status: $ref: '#/components/schemas/BatchModularEmailTasksController.PendingBatchEmailTask.Status' BatchModularEmailTasksController.PendingBatchEmailTask.Status: type: string enum: - PENDING - RUNNING Bin: required: - assignment - created - id - pickup - retirement - status type: object properties: id: $ref: '#/components/schemas/BinBarcode' status: $ref: '#/components/schemas/BinStatus' created: type: string format: date-time assignment: nullable: true allOf: - $ref: '#/components/schemas/BinAssignment.ReusableBinAssignment' pickup: nullable: true allOf: - $ref: '#/components/schemas/ScheduledBinPickup' retirement: nullable: true allOf: - $ref: '#/components/schemas/BinRetirement' BinAssignment: type: object description: |- Describes actions associated with assigning a bin to an order, such as dispatching, receiving, charging, and refunding a bin. The underlying bin may be reusable, in which case ReusableBinAssignment is used, or single use, in which case SingleUseBinAssignment is used. BinAssignment.ReusableBinAssignment: required: - binId - charge - chargeAt - chargeAttempts - dispatch - dueAt - id - orderId - receipt - refund - user type: object properties: id: type: integer format: int64 binId: $ref: '#/components/schemas/BinBarcode' orderId: type: integer format: int64 user: $ref: '#/components/schemas/UserBasic' dispatch: $ref: '#/components/schemas/BinScan' dueAt: type: string format: date-time chargeAt: type: string format: date-time chargeAttempts: nullable: true allOf: - $ref: '#/components/schemas/BinChargeAttempts' receipt: nullable: true allOf: - $ref: '#/components/schemas/BinScan' charge: nullable: true allOf: - $ref: '#/components/schemas/BinCharge' refund: nullable: true allOf: - $ref: '#/components/schemas/BinCharge' description: "An assignment to a reusable bin, modeled by Bin" BinAssignmentKeyset: type: object properties: seek: nullable: true allOf: - $ref: '#/components/schemas/KeysetSeek' size: maximum: 150 minimum: 0 type: integer format: int32 nullable: true dateField: nullable: true allOf: - $ref: '#/components/schemas/BinAssignmentKeyset.DateField' id: minimum: 0 type: integer format: int64 nullable: true date: minimum: 0 type: string format: date-time nullable: true description: Defines keyset for paginating BinAssignments. BinAssignmentKeyset.DateField: type: string description: Defines which datetime field the keyset corresponds to. enum: - RECEIVED_AT BinBarcode: type: object properties: orderBarcode: type: boolean description: "We reserve the prefix 90 for order barcodes, so that we are\ \ able to distinguish an order from bin barcodes without doing an API\ \ or DB lookup." singleUseBinBarcode: type: boolean description: Checks if this barcode is a single-use bin barcode. packagingBarcode: type: boolean description: |- Represents a UPC-A barcode of 11 digits. The checksum is not stored, it should be generated when needed, and otherwise not sent by clients during API calls. BinCharge: required: - admin - amount - id - paymentMethod - timestamp type: object properties: id: type: integer description: The id of the charge format: int64 admin: nullable: true allOf: - $ref: '#/components/schemas/UserBasic' timestamp: type: string description: The date time at which the charge occurred. format: date-time amount: type: number description: The amount charged. paymentMethod: $ref: '#/components/schemas/PaymentMethod' description: "Describes charging a customer for a bin, for example because it\ \ was lost or broken." BinChargeAttempts: required: - count - lastAttemptedAt - lastErrorMessage type: object properties: count: type: integer format: int32 lastAttemptedAt: type: string format: date-time lastErrorMessage: type: string BinDispatchStats: required: - bins - foilBags - orders - routes type: object properties: orders: $ref: '#/components/schemas/ProgressValue' routes: $ref: '#/components/schemas/ProgressValue' bins: $ref: '#/components/schemas/ProgressValue' foilBags: $ref: '#/components/schemas/ProgressValue' BinFilter: type: object properties: status: nullable: true allOf: - $ref: '#/components/schemas/BinStatus' startDate: type: string format: date nullable: true endDate: type: string format: date nullable: true assignedUserId: type: integer format: int64 nullable: true assignedOrderId: type: integer format: int64 nullable: true includeSingleUse: type: boolean nullable: true description: |- Describes a set of filters to apply to a bin query. Note that the field referred to by `startDate` and `endDate` must be specified elsewhere, e.g. in BinKeyset. BinKeyset: type: object properties: seek: nullable: true allOf: - $ref: '#/components/schemas/KeysetSeek' size: maximum: 150 minimum: 0 type: integer format: int32 nullable: true dateField: nullable: true allOf: - $ref: '#/components/schemas/BinKeyset.DateField' binId: minimum: 0 type: integer format: int64 nullable: true date: minimum: 0 type: string format: date-time nullable: true description: "Defines keyset for paginating Bins. The keyset should always use\ \ the `binId` as the second argument for ordering and paging, however, different\ \ dates may be used depending on the query. This is specified by DateField" BinKeyset.DateField: type: string description: Defines which datetime field the keyset corresponds to. enum: - CHARGED_AT - DISPATCHED_AT - DUE_AT - RECEIVED_AT - REFUNDED_AT - RETIRED_AT BinReceiveStats: required: - bins - foilBags type: object properties: bins: $ref: '#/components/schemas/ProgressValue' foilBags: $ref: '#/components/schemas/ProgressValue' BinRetirement: required: - admin - reason - timestamp type: object properties: admin: nullable: true allOf: - $ref: '#/components/schemas/UserBasic' timestamp: type: string description: The date time at which the charge occurred. format: date-time reason: $ref: '#/components/schemas/BinRetirementReason' description: Describes a bin being retired. BinRetirementReason: type: string enum: - NOT_READY - BASE_DAMAGE - LID_DAMAGE - ENVIRONMENTAL_DAMAGE - BARCODE_DAMAGE - OTHER_DAMAGE - MISSING_CUSTOMER - MISSING_CUSTOMER_GOODWILL - MISSING_LOGISTICS - WORN_OUT BinScan: required: - admin - timestamp type: object properties: admin: nullable: true allOf: - $ref: '#/components/schemas/UserBasic' timestamp: type: string description: The date time at which the scan occurred. format: date-time description: "Describes a bin being scanned, either to dispatch or to receive\ \ it." BinStatus: type: string enum: - IN_STOCK - DISPATCHED - RETIRED BlockSchema: required: - description - fields - hint - isFirst - isRequired - limit - type type: object properties: type: $ref: '#/components/schemas/ModularEmailTemplateBlockType' description: type: string hint: type: string limit: type: integer format: int32 isRequired: type: boolean isFirst: type: boolean fields: type: array items: $ref: '#/components/schemas/SchemaField' description: |- Defines a schema for configuring ModularEmailTemplateBlocks. **WARNING:** Changes to any of the classes involved in schema generation is error-prone. These classes work together to implement a reflection-based solution in BlockSchemaHelper. Changes will cause callers which depend on this schema to break (i.e. the admin interface). BulkModificationCsvController.Mode: type: string enum: - CARTS - ORDERS BulkModificationInternalReason: type: string enum: - VENDOR - CUSTOMER - BUSINESS_PROCESS - PICK_PACK - PURCHASING - EXPECTED - OTHER BulkModificationItem: required: - productId - quantity type: object properties: productId: type: integer format: int64 quantity: type: integer format: int32 BulkModificationNotificationMode: type: string enum: - IMMEDIATE - BATCH - NONE BulkModificationOperation: type: string enum: - ADD - CHANGE_QUANTITY - DELETE - SUBSTITUTE - CREDIT_ONLY BulkModificationUpdateResult: required: - addonsAffected - progressLink type: object properties: addonsAffected: type: integer format: int64 progressLink: $ref: '#/components/schemas/NamedUrl' BundleProductController.BundleProduct: required: - allowedInBagTypes - availableDates - bagPoints - categoryCode - displayOutOfStock - earlyOrderDeadline - excludedDays - id - imageUrl - inventoryPeriods - isAvailableOneOff - isAvailableStore - isAvailableSubscription - isDeleted - items - maxQuantityPerOrder - name - packingOrder - packingStationCode - price - producers - published - sku - sortOrder - subscriptionDiscount - tags - taxRate - unit - uri - volume type: object properties: id: type: integer format: int64 name: type: string sku: type: string uri: type: string imageUrl: type: string categoryCode: type: string producers: type: array items: $ref: '#/components/schemas/ProducerBasic' unit: $ref: '#/components/schemas/UnitOfMeasurement' taxRate: type: number price: $ref: '#/components/schemas/Price' subscriptionDiscount: type: number nullable: true bagPoints: type: integer format: int32 nullable: true volume: type: number format: double nullable: true sortOrder: type: integer format: int32 packingOrder: type: integer format: int32 nullable: true packingStationCode: $ref: '#/components/schemas/PackingStationCode' published: type: boolean isAvailableOneOff: type: boolean isAvailableSubscription: type: boolean isAvailableStore: type: boolean allowedInBagTypes: type: array items: $ref: '#/components/schemas/BagType' isDeleted: type: boolean maxQuantityPerOrder: type: integer format: int32 nullable: true displayOutOfStock: type: boolean availableDates: nullable: true allOf: - $ref: '#/components/schemas/ProductAvailableDates' earlyOrderDeadline: type: boolean excludedDays: type: array items: $ref: '#/components/schemas/DayId' tags: type: array items: $ref: '#/components/schemas/ProductTag' inventoryPeriods: type: array items: $ref: '#/components/schemas/InventoryPeriod' items: type: array items: $ref: '#/components/schemas/ProductWithQuantity' Card: required: - brand - expMonth - expYear - last4 - name - paymentMethodId type: object properties: name: type: string brand: type: string last4: type: string expMonth: type: integer format: int64 expYear: type: integer format: int64 paymentMethodId: type: string nullable: true description: "To prevent sensitive information from being leaked, @JsonIgnoreProperties\ \ is used to exclude paymentMethodId from all JSON output, so it will not\ \ be returned by API GET requests." CartItemForUpdate: required: - id - quantity type: object properties: id: type: integer format: int64 quantity: type: integer format: int32 CartSearchResult: required: - addonId - bag - bagPoints - coupon - customizedBy - isEISHCustomer - isMember - productId - productPrice - productQuantity - schedule - substitutions - user type: object properties: addonId: type: integer format: int64 productId: type: integer format: int64 user: $ref: '#/components/schemas/UserBasic' bag: nullable: true allOf: - $ref: '#/components/schemas/Bag' customizedBy: nullable: true allOf: - $ref: '#/components/schemas/BagCustomizedBy' schedule: $ref: '#/components/schemas/Schedule' productPrice: type: number productQuantity: type: integer format: int32 bagPoints: type: integer format: int32 nullable: true coupon: nullable: true allOf: - $ref: '#/components/schemas/Coupon' substitutions: type: boolean isMember: type: boolean isEISHCustomer: type: boolean CartSearchResultWithDetails: required: - addonId - bag - bagPoints - coupon - customizedBy - deliveryDate - isEISHCustomer - isMember - productId - productPrice - productQuantity - schedule - selectedQuantity - substitutions - user type: object properties: addonId: type: integer format: int64 productId: type: integer format: int64 user: $ref: '#/components/schemas/UserBasic' bag: nullable: true allOf: - $ref: '#/components/schemas/Bag' customizedBy: nullable: true allOf: - $ref: '#/components/schemas/BagCustomizedBy' schedule: $ref: '#/components/schemas/Schedule' productPrice: type: number productQuantity: type: integer format: int32 bagPoints: type: integer format: int32 nullable: true coupon: nullable: true allOf: - $ref: '#/components/schemas/Coupon' substitutions: type: boolean isMember: type: boolean isEISHCustomer: type: boolean selectedQuantity: type: integer format: int32 deliveryDate: type: string format: date Category: type: object properties: isAlcohol: type: boolean isMeat: type: boolean isDonation: type: boolean CategoryBasic: required: - id - isAlcohol - name - uri type: object properties: id: type: integer format: int64 name: type: string uri: type: string isAlcohol: type: boolean CategoryHierarchyNode: required: - category - hierarchyCode - hierarchyId - id - level - parentId - sortOrder type: object properties: id: type: integer format: int64 hierarchyId: type: integer format: int64 parentId: type: integer format: int64 hierarchyCode: type: string sortOrder: type: integer format: int32 level: type: integer format: int32 category: $ref: '#/components/schemas/Category' CdnObject: required: - cdnUrl - objectUrl type: object properties: objectUrl: type: string cdnUrl: type: string ChargeType: type: string enum: - ADD_CREDITS - CREDIT_CARD_CHARGE - REFUND - USE_COUPON - USE_CREDITS ContentBlock: required: - header - properties type: object properties: header: $ref: '#/components/schemas/ContentBlockHeader' properties: $ref: '#/components/schemas/ContentBlockProperties' ContentBlockDefinition: required: - header - properties type: object properties: header: $ref: '#/components/schemas/ContentBlockHeader' properties: $ref: '#/components/schemas/ContentBlockDefinitionProperties' ContentBlockDefinitionProperties: type: object ContentBlockHeader: required: - id - modified - sortOrder - type type: object properties: id: type: integer format: int64 modified: type: string format: date-time type: $ref: '#/components/schemas/ContentBlockType' sortOrder: minimum: 0 type: integer format: int32 ContentBlockProperties: type: object ContentBlockType: type: string enum: - CARD_SET - LINK_SET - BAG_SELECTION - PRODUCT_SELECTION - REORDER - SOCIAL_PROOF - HTML ContentPage: required: - blockDefinitions - description - headingFont - id - isLandingPage - isPublished - isSystem - previewImageUrl - signupQueryParameters - subtitle - title - type - uri type: object properties: id: type: integer format: int64 type: $ref: '#/components/schemas/ContentPageType' uri: minLength: 1 pattern: "^[a-zA-Z0-9-]+$" type: string title: minLength: 1 type: string subtitle: type: string description: minLength: 1 type: string signupQueryParameters: type: object additionalProperties: type: string previewImageUrl: type: string headingFont: $ref: '#/components/schemas/ContentPageHeadingFont' isSystem: type: boolean isLandingPage: type: boolean isPublished: type: boolean blockDefinitions: type: array items: $ref: '#/components/schemas/ContentBlockDefinition' ContentPageHeadingFont: type: string enum: - FUN - NORMAL ContentPageType: type: string enum: - INFO - LEGAL - MARKETING Coupon: type: object CreditReason: type: string enum: - COUPONS - CANCELLED_ORDER - EMPLOYEE_CREDIT - FRIEND_REFERRAL - GIFT_CARD - GOOD_WILL_CREDIT - LOGISTICS - MARKETING - MISSING_ORDER - MISSING_ITEM - ORDER_ADJUSTMENT - OUT_OF_STOCK - PACKING_ERROR - PAYMENT_ON_ACCOUNT - PRODUCT_QUALITY - STAFF_EP_DISCOUNT - SYSTEM_ERROR - MEO_IMPORT - BIN_RETURN CustomerContact: required: - email - firstName - lastName - telephone - telephoneStatus type: object properties: firstName: maxLength: 255 minLength: 1 type: string lastName: maxLength: 255 minLength: 1 type: string email: minLength: 1 type: string format: email telephone: $ref: '#/components/schemas/PhoneNumberService.NormalizedPhoneNumber.NormalizedE164PhoneNumber' telephoneStatus: $ref: '#/components/schemas/TelephoneStatus' CustomerContacts: required: - primary - secondary type: object properties: primary: $ref: '#/components/schemas/CustomerContact' secondary: nullable: true allOf: - $ref: '#/components/schemas/CustomerContact' CustomerFactValue: type: object CustomerTier: type: string enum: - A_LA_CARTE - PRODUCT_SUBSCRIBER - BAG_SUBSCRIBER - MEMBER DailyOrderLimit: required: - day - orderLimit type: object properties: day: $ref: '#/components/schemas/DayId' orderLimit: type: integer format: int32 DatabaseSession: type: object properties: authentication: nullable: true allOf: - $ref: '#/components/schemas/FcfAuthentication' id: type: string creationTime: type: string format: date-time expires: type: string format: date-time expired: type: boolean lastAccessedTime: type: string format: date-time maxInactiveInterval: $ref: '#/components/schemas/Duration' new: type: boolean modified: type: boolean modifiedTime: type: string format: date-time DayId: type: integer description: Represents the days of the week starting with Sunday as 1. enum: - 1 - 2 - 3 - 4 - 5 - 6 - 7 DefaultBagContentsWithDate: required: - contents - date type: object properties: date: type: string format: date contents: type: array items: $ref: '#/components/schemas/BagItem.NewBagItem' description: A simple container type to return the date along with the bag contents for situations where we are fetching bag contents without knowing their date (e.g. get the latest contents for a particular day). DeliveryDriver: required: - displayName - externalId type: object properties: externalId: type: string displayName: type: string DeliveryProvider: required: - code - name type: object properties: code: type: string name: type: string DeliveryRouteCsvController.Mode: type: string enum: - MANUAL - TREXITY DeliveryRouteInfo: required: - barcode - code - date - driver - provider - routeSequence - stopSequence type: object properties: date: type: string format: date code: type: string routeSequence: type: integer format: int32 stopSequence: type: integer format: int32 barcode: type: string provider: $ref: '#/components/schemas/DeliveryProvider' driver: $ref: '#/components/schemas/DeliveryDriver' DeliveryRoutingBatch: required: - id - name - parameters - provider - published type: object properties: id: type: integer format: int64 name: type: string published: type: boolean provider: $ref: '#/components/schemas/DeliveryProvider' parameters: type: object additionalProperties: true DeliveryRoutingBatchSummary.AssignedDeliveryRoutingBatchSummary: required: - batch - date - orderCountByFsa - orderCountByTimeslot - pickupCountByFsa type: object properties: date: type: string format: date batch: $ref: '#/components/schemas/DeliveryRoutingBatch' orderCountByFsa: type: object additionalProperties: $ref: '#/components/schemas/DeliveryRoutingBatchSummary.AssignedDeliveryRoutingBatchSummaryCount' pickupCountByFsa: type: object additionalProperties: $ref: '#/components/schemas/DeliveryRoutingBatchSummary.AssignedDeliveryRoutingBatchSummaryCount' orderCountByTimeslot: type: object additionalProperties: $ref: '#/components/schemas/DeliveryRoutingBatchSummary.AssignedDeliveryRoutingBatchSummaryCount' DeliveryRoutingBatchSummary.AssignedDeliveryRoutingBatchSummaryCount: required: - assigned - routed type: object properties: assigned: type: integer format: int32 routed: type: integer format: int32 DeliveryRoutingBatchSummary.UnassignedDeliveryRoutingBatchSummary: required: - date - orderCountByFsa - orderCountByTimeslot type: object properties: date: type: string format: date orderCountByFsa: type: object additionalProperties: type: integer format: int32 orderCountByTimeslot: type: object additionalProperties: type: integer format: int32 Duration: type: object properties: units: type: array items: $ref: '#/components/schemas/TemporalUnit' positive: type: boolean zero: type: boolean negative: type: boolean seconds: type: integer format: int64 nano: type: integer format: int32 ErpGiftCard: required: - amount - amountRemaining - applied - appliedByReceipt - code - contact - created - createdByReceipt - createdByStore - expiry - isApplied type: object properties: code: type: string amount: type: number amountRemaining: type: number created: type: string format: date createdByStore: type: string createdByReceipt: type: string expiry: type: string format: date nullable: true applied: type: string format: date nullable: true appliedByReceipt: type: string nullable: true isApplied: type: boolean contact: type: string description: Represents a gift card in our ERP system. ErpGiftCardTransaction: required: - amount - amountRemaining - date - lineNumber - pos - receiptId - store - type - unposted - voided type: object properties: lineNumber: type: integer format: int32 receiptId: type: string type: type: string store: type: string pos: type: string date: type: string format: date-time amount: type: number amountRemaining: type: number unposted: type: boolean voided: type: boolean FcfAuthentication: type: object description: An interface extending Authentication providing some additional functionality common to all FCF authentication instances. allOf: - $ref: '#/components/schemas/Authentication' - $ref: '#/components/schemas/Principal' FeatureFlag: required: - data - id type: object properties: id: type: string data: type: object additionalProperties: true FeatureFlagAssignmentKey: required: - featureId - variantName type: object properties: featureId: type: string variantName: type: string FeatureFlagController.FeatureFlagsResponse: required: - flags type: object properties: flags: type: object additionalProperties: type: object additionalProperties: true Fee_Discount.FeeDiscount_: type: object description: "Describes all possible fees for an order. Note this is a class\ \ hierarchy where all subtypes are interfaces so that they can support both\ \ the regular fee \"Impl\" variant, and the applyDiscount() method and \"\ Disc\" variant. This is important so that we are able to get the discount\ \ in the response. The discount and discountValue can be accessed by checking\ \ whether the object is and instanceof Discounted." Function1_Integer.Tree.Node_CategoryHierarchyNode__: type: object properties: memoized: type: boolean GiftCard: type: object description: |- A gift card can be redeemed online for credits or at a retail store as a form of payment. It can be in one of the following states: 1. **pending**: This occurs before a gift card's payment has been captured and before it has been synchronized to the ERP system. We separate this step from the gift card creation so that we don't charge a customer's credit card, then fail to record this detail in the database. 2. **active**: This gift card is ready to be applied (or "claimed"), and has been synchronized to the ERP system. 3. **applied**: This gift card has been applied to a user account and recorded in their AccountBalance. 4. **voided**: The gift card has been voided and is no longer usable. The ERP system is the source of truth for gift cards, so any operations affecting a gift cards status or balance should first confirm the operation with the ERP. GiftCardController.EmailContact: required: - email - name type: object properties: name: maxLength: 100 type: string email: type: string format: email GoogleRecaptchaService.RecaptchaTypes: type: string enum: - V3 - V2 Guest: required: - sessionId type: object properties: sessionId: type: string GuestCustomerFacts: type: object properties: sessionId: type: string description: Returns the session ID. facts: type: object additionalProperties: $ref: '#/components/schemas/CustomerFactValue' description: Returns all customer facts stored in the session. GuestFeatureFlagAssignments: type: object properties: sessionId: type: string description: Returns the session ID. assignments: type: object additionalProperties: type: object additionalProperties: true description: Returns the current feature flag assignments from the session by feature ID. GuestRegistrationInfo: required: - billingAddress - captchaToken - captchaType - couponCode - deliveryAddress - deliveryDay - email - firstName - isBillingAddressSameAsDelivery - lastName - password - phone - properties - referralMethodId - stripeToken - subscribeToMarketingEmail - subscribeToMarketingSms type: object properties: deliveryAddress: $ref: '#/components/schemas/NewStreetAddressDto' billingAddress: $ref: '#/components/schemas/NewStreetAddressDto' isBillingAddressSameAsDelivery: type: boolean deliveryDay: $ref: '#/components/schemas/DayId' firstName: minLength: 1 type: string lastName: minLength: 1 type: string email: minLength: 1 type: string phone: $ref: '#/components/schemas/PhoneNumberService.NormalizedPhoneNumber.NormalizedE164PhoneNumber' password: minLength: 1 type: string stripeToken: minLength: 1 type: string captchaToken: minLength: 1 type: string captchaType: $ref: '#/components/schemas/GoogleRecaptchaService.RecaptchaTypes' couponCode: type: string referralMethodId: type: integer format: int64 subscribeToMarketingEmail: type: boolean subscribeToMarketingSms: type: boolean properties: $ref: '#/components/schemas/RegistrationProperties' description: "This class is used to receive registration information from the\ \ frontend and save it in the session. To prevent sensitive information from\ \ being leaked, @JsonIgnoreProperties is used to exclude password and stripeToken\ \ from all JSON output, so they are not saved in the session and are only\ \ available when the request is received." GuestRegistrationInfo.State: type: string enum: - EMAIL - CONTACT - DELIVERY GuestRegistrationInfoStorage: type: object properties: sessionId: type: string description: Returns the session ID. guestRegistrationInfo: description: Returns guest registration information. allOf: - $ref: '#/components/schemas/GuestRegistrationInfo' GuestShoppingCart: type: object properties: sessionId: type: string description: Get the the sessionId date: type: string description: Get the current date they are shopping for format: date items: type: array description: Get the shopping cart items for the current guest. items: $ref: '#/components/schemas/ShoppingCartItem' itemsSubtotal: type: number description: Returns the subtotal of current cart items. coupon: description: Get the Coupon for the current guest. nullable: true allOf: - $ref: '#/components/schemas/Coupon' preselectedCartItems: type: array description: Get the preselected shopping cart items for the current guest. items: $ref: '#/components/schemas/ShoppingCartItem' HtmlFormattingFeature: type: string description: Defines features and their associated sets of HTML tags. enum: - IMAGE - LAYOUT - LINK - LIST - SWIPER - VIDEO_EMBED - TEXT_STRUCTURE - TEXT_STYLE - STYLE HtmlMetaController.HtmlMetaContext: required: - currentLocalDateTime - description - imageUrl - selfUrl - title type: object properties: currentLocalDateTime: type: string format: date-time title: type: string description: type: string selfUrl: type: string imageUrl: type: string InventoryPeriod: required: - endDate - startDate - unitsAvailable type: object properties: startDate: type: string format: date endDate: type: string format: date unitsAvailable: type: integer format: int64 description: Represents the number of units available during a specific date range. InventoryRuleKeyset: type: object properties: seek: nullable: true allOf: - $ref: '#/components/schemas/KeysetSeek' size: maximum: 50 minimum: 0 type: integer format: int32 nullable: true ruleId: type: integer format: int64 nullable: true endDate: type: string format: date nullable: true InvoicesController.OrderInvoiceKeyset: type: object properties: seek: nullable: true allOf: - $ref: '#/components/schemas/KeysetSeek' size: maximum: 50 minimum: 0 type: integer format: int32 nullable: true invoiceId: minimum: 0 type: integer format: int64 nullable: true date: minimum: 0 type: string format: date nullable: true KeysetPage_Bin.BinKeyset_: required: - data - nextKeyset - previousKeyset type: object properties: data: type: array items: $ref: '#/components/schemas/Bin' previousKeyset: nullable: true allOf: - $ref: '#/components/schemas/BinKeyset' nextKeyset: nullable: true allOf: - $ref: '#/components/schemas/BinKeyset' description: Represents a page paginated by a keyset. KeysetPage_BinAssignment.ReusableBinAssignment.BinAssignmentKeyset_: required: - data - nextKeyset - previousKeyset type: object properties: data: type: array items: $ref: '#/components/schemas/BinAssignment.ReusableBinAssignment' previousKeyset: nullable: true allOf: - $ref: '#/components/schemas/BinAssignmentKeyset' nextKeyset: nullable: true allOf: - $ref: '#/components/schemas/BinAssignmentKeyset' description: Represents a page paginated by a keyset. KeysetPage_Object.InventoryRuleKeyset_: required: - data - nextKeyset - previousKeyset type: object properties: data: type: array items: type: object previousKeyset: nullable: true allOf: - $ref: '#/components/schemas/InventoryRuleKeyset' nextKeyset: nullable: true allOf: - $ref: '#/components/schemas/InventoryRuleKeyset' description: Represents a page paginated by a keyset. KeysetPage_OrderInvoice.InvoicesController.OrderInvoiceKeyset_: required: - data - nextKeyset - previousKeyset type: object properties: data: type: array items: $ref: '#/components/schemas/OrderInvoice' previousKeyset: nullable: true allOf: - $ref: '#/components/schemas/InvoicesController.OrderInvoiceKeyset' nextKeyset: nullable: true allOf: - $ref: '#/components/schemas/InvoicesController.OrderInvoiceKeyset' description: Represents a page paginated by a keyset. KeysetPage_PaymentController.Charge.PaymentController.ChargeKeyset_: required: - data - nextKeyset - previousKeyset type: object properties: data: type: array items: $ref: '#/components/schemas/PaymentController.Charge' previousKeyset: nullable: true allOf: - $ref: '#/components/schemas/PaymentController.ChargeKeyset' nextKeyset: nullable: true allOf: - $ref: '#/components/schemas/PaymentController.ChargeKeyset' description: Represents a page paginated by a keyset. KeysetSeek: type: string description: Whether the page referred to by this keyset comes before or after those values. enum: - BEFORE - AFTER KlaviyoSubscriptionWebhookRequest: required: - external_id - type - value type: object properties: external_id: type: integer format: int64 type: $ref: '#/components/schemas/KlaviyoSubscriptionWebhookRequest.KlaviyoSubscriptionWebhookUpdateType' value: type: boolean KlaviyoSubscriptionWebhookRequest.KlaviyoSubscriptionWebhookUpdateType: type: string enum: - EMAIL - SMS LinearSeq_Tree.Node_CategoryHierarchyNode__: type: object allOf: - $ref: '#/components/schemas/Seq_Tree.Node_CategoryHierarchyNode__' - $ref: '#/components/schemas/Traversable_Tree.Node_CategoryHierarchyNode__' - $ref: '#/components/schemas/Value_Tree.Node_CategoryHierarchyNode__' - $ref: '#/components/schemas/PartialFunction_Integer.Tree.Node_CategoryHierarchyNode__' - $ref: '#/components/schemas/Function1_Integer.Tree.Node_CategoryHierarchyNode__' List_Tree.Node_CategoryHierarchyNode__: type: object allOf: - $ref: '#/components/schemas/LinearSeq_Tree.Node_CategoryHierarchyNode__' - $ref: '#/components/schemas/Seq_Tree.Node_CategoryHierarchyNode__' - $ref: '#/components/schemas/Traversable_Tree.Node_CategoryHierarchyNode__' - $ref: '#/components/schemas/Value_Tree.Node_CategoryHierarchyNode__' - $ref: '#/components/schemas/PartialFunction_Integer.Tree.Node_CategoryHierarchyNode__' - $ref: '#/components/schemas/Function1_Integer.Tree.Node_CategoryHierarchyNode__' - properties: async: type: boolean empty: type: boolean lazy: type: boolean traversableAgain: type: boolean ModularEmailTemplateBlockDefinition: type: object description: Interface containing records for email template block definitions which are configurable in the admin interface. These records contain dynamic templates and variables used to build ModularEmailTemplateBlocks for modular emails. ModularEmailTemplateBlockType: type: string enum: - HEADER - TEXT - CARD - ORDER_SUMMARY - PRODUCTS - REFERRAL ModularEmailTemplateDefinition: required: - blockDefinitions - created - id - isSystem - key - modified - previewText - queryParameters - subject type: object properties: id: type: integer format: int64 key: type: string modified: type: string format: date-time created: type: string format: date-time isSystem: type: boolean subject: type: string previewText: type: string blockDefinitions: type: array items: $ref: '#/components/schemas/ModularEmailTemplateBlockDefinition' queryParameters: type: object additionalProperties: type: string description: |- Defines how a modular email is assembled but does not include data with which it could be directly rendered. In particular, #blockDefinitions must be converted to ModularEmailTemplateBlocks. NamedUrl: required: - name - url type: object properties: name: minLength: 1 type: string url: minLength: 1 type: string Neversend: required: - id - name - published - sortOrder type: object properties: id: type: integer format: int64 name: type: string sortOrder: type: integer format: int32 published: type: boolean NeversendBasic: type: object NewBillingAddressDto: required: - city - line1 - name - postalCode - province type: object properties: name: maxLength: 255 minLength: 1 type: string line1: maxLength: 255 minLength: 1 type: string line2: maxLength: 255 type: string city: maxLength: 255 minLength: 1 type: string province: maxLength: 2 minLength: 2 type: string postalCode: maxLength: 6 minLength: 6 pattern: "^[A-Z]\\d[A-Z]\\d[A-Z]\\d$" type: string NewStreetAddress: required: - buildingType - city - instructions - latitude - line1 - line2 - longitude - name - postalCode - province - telephone - type type: object properties: type: $ref: '#/components/schemas/StreetAddressType' name: type: string line1: type: string line2: type: string city: type: string province: $ref: '#/components/schemas/Province' postalCode: type: string telephone: $ref: '#/components/schemas/PhoneNumberService.NormalizedPhoneNumber.NormalizedE164PhoneNumber' instructions: type: string buildingType: type: integer format: int32 latitude: type: number format: double longitude: type: number format: double NewStreetAddressDto: required: - city - line1 - name - postalCode - province - telephone type: object properties: name: maxLength: 255 minLength: 1 type: string line1: maxLength: 255 minLength: 1 type: string line2: maxLength: 255 type: string city: maxLength: 255 minLength: 1 type: string province: maxLength: 2 minLength: 2 type: string postalCode: maxLength: 6 minLength: 6 pattern: "^[A-Z]\\d[A-Z]\\d[A-Z]\\d$" type: string telephone: $ref: '#/components/schemas/PhoneNumberService.NormalizedPhoneNumber.NormalizedE164PhoneNumber' instructions: maxLength: 255 type: string buildingType: type: integer format: int32 location: $ref: '#/components/schemas/Point' OndDeliveryPreferences: required: - callAhead - keyId type: object properties: callAhead: type: boolean keyId: type: string nullable: true OndDeliveryZone: required: - days - deliveryFee - fsa - id - name type: object properties: id: type: integer format: int64 name: type: string fsa: type: string deliveryFee: type: number days: type: array items: $ref: '#/components/schemas/DayId' OndOrder: required: - created - date - deliveryAddress - deliveryPreferences - estimatedBinsRequired - estimatedBinsReturned - hasAlcohol - id - isPrime - isSubstitutionAllowed - modified - ordinality - packagingType - routeInfo - tier - timeslot - totals - user - visitedAt type: object properties: id: type: integer format: int64 date: type: string format: date created: type: string format: date-time modified: type: string format: date-time visitedAt: type: string format: date-time user: $ref: '#/components/schemas/UserBasic' deliveryAddress: $ref: '#/components/schemas/StreetAddress' timeslot: nullable: true allOf: - $ref: '#/components/schemas/OndOrderTimeslot' deliveryPreferences: $ref: '#/components/schemas/OndDeliveryPreferences' totals: $ref: '#/components/schemas/Totals' packagingType: $ref: '#/components/schemas/PackagingType' isPrime: type: boolean isSubstitutionAllowed: type: boolean hasAlcohol: type: boolean estimatedBinsRequired: type: integer format: int64 estimatedBinsReturned: type: integer format: int64 routeInfo: nullable: true allOf: - $ref: '#/components/schemas/DeliveryRouteInfo' ordinality: type: integer format: int32 tier: nullable: true allOf: - $ref: '#/components/schemas/CustomerTier' OndOrderController.ItemsUpdateDetails: required: - countUpdated type: object properties: countUpdated: type: integer format: int32 OndOrderStatus: type: string enum: - PROCESSING - PROCESSED - FAILED_PAYMENT - OTHER_FAILURE OndOrderTimeslot: required: - end - name - start type: object properties: name: type: string start: type: string format: partial-time end: type: string format: partial-time OndTimeslot: required: - active - dayId - deliveryFee - endTime - id - isAllDay - name - orderLimit - sortOrder - startTime type: object properties: id: type: integer format: int64 name: type: string sortOrder: type: integer format: int32 orderLimit: type: integer format: int32 dayId: $ref: '#/components/schemas/DayId' startTime: type: string format: partial-time endTime: type: string format: partial-time deliveryFee: type: number active: type: boolean isAllDay: type: boolean OrderInvoice: required: - date - id - status - total - type - url type: object properties: id: type: integer format: int64 type: $ref: '#/components/schemas/OrderInvoice.InvoiceType' status: $ref: '#/components/schemas/OndOrderStatus' total: type: number date: type: string format: date url: type: string OrderInvoice.InvoiceType: type: string enum: - FCF - MEO OrderItemForUpdate: required: - id - quantity - unitPrice type: object properties: id: type: integer format: int64 quantity: type: integer format: int32 unitPrice: type: number OrderLimitUtilization: type: object properties: overLimit: type: boolean description: Provides info about order limits and their current counts. OrderSearchResult: required: - addonId - bag - bagPoints - coupon - isEISHCustomer - isMember - oneOff - order - productPrice - productQuantity - substitutions type: object properties: addonId: type: integer format: int64 order: $ref: '#/components/schemas/OndOrder' bag: $ref: '#/components/schemas/Bag' productPrice: type: number productQuantity: type: integer format: int32 bagPoints: type: integer format: int32 nullable: true coupon: nullable: true allOf: - $ref: '#/components/schemas/Coupon' substitutions: type: boolean oneOff: type: boolean isMember: type: boolean isEISHCustomer: type: boolean OrderUpdateItemProperties: required: - displayUnit - packingOrder type: object properties: displayUnit: $ref: '#/components/schemas/OrderUpdateValue_String_' packingOrder: $ref: '#/components/schemas/OrderUpdateValue_Integer_' OrderUpdateValue_Integer_: required: - value type: object properties: value: type: integer format: int32 description: |- A generic wrapper that represents an updated value. The primary purpose of this class is to distinguish between three different states of a property: * Property not provided * Property explicitly set to `null` * Property provided with a non-null value OrderUpdateValue_String_: required: - value type: object properties: value: type: string description: |- A generic wrapper that represents an updated value. The primary purpose of this class is to distinguish between three different states of a property: * Property not provided * Property explicitly set to `null` * Property provided with a non-null value OriginPlatform: required: - id - name type: object properties: id: type: integer format: int64 name: type: string PackagingTransaction: type: object description: An assignment to reusable packaging (foil bags). PackagingTransaction.InboundPackagingTransaction: type: object PackagingTransaction.OutboundPackagingTransaction: type: object PackagingTransactionType: type: string enum: - INBOUND - OUTBOUND PackagingType: type: string enum: - SINGLE_USE - REUSABLE PackagingType_1: type: string enum: - FOIL_BAG PackagingType_2: type: string enum: - FOIL_BAG PackagingType_3: type: string enum: - FOIL_BAG PackagingType_4: type: string enum: - FOIL_BAG PackingStationCode: type: string enum: - A - B - C - E - F - G - H - I - J - K - X - Z PartialFunction_Integer.Tree.Node_CategoryHierarchyNode__: type: object allOf: - $ref: '#/components/schemas/Function1_Integer.Tree.Node_CategoryHierarchyNode__' PaymentController.Charge: required: - amount - created - description - id - type - userId type: object properties: id: type: integer format: int64 userId: type: integer format: int64 type: $ref: '#/components/schemas/ChargeType' description: type: string amount: type: number format: double created: type: string format: date-time PaymentController.ChargeKeyset: type: object properties: seek: nullable: true allOf: - $ref: '#/components/schemas/KeysetSeek' size: maximum: 50 minimum: 0 type: integer format: int32 nullable: true chargeId: minimum: 0 type: integer format: int64 nullable: true created: minimum: 0 type: string format: date-time nullable: true PaymentMethod: type: string description: Describes how a payment was made. enum: - CREDIT_CARD - ACCOUNT_CREDITS PhoneNumberService.NormalizedPhoneNumber.NormalizedE164PhoneNumber: required: - value type: object properties: value: type: string Point: required: - latitude - longitude type: object properties: latitude: type: number format: double longitude: type: number format: double Price: required: - originalValue - promo - value type: object properties: promo: type: boolean value: type: number originalValue: type: number nullable: true availability: nullable: true allOf: - $ref: '#/components/schemas/Price.Availability' Price.Availability: required: - endDate - startDate type: object properties: startDate: type: string format: date endDate: type: string format: date Principal: type: object properties: name: type: string ProducerBasic: required: - id - name - shortName - uri type: object properties: id: type: integer format: int64 name: type: string shortName: type: string nullable: true uri: type: string ProducerDetailed: required: - description - id - imageUrl - name - published - shortName - uri type: object properties: id: type: integer format: int64 name: type: string shortName: type: string nullable: true description: type: string uri: type: string imageUrl: type: string published: type: boolean Product: required: - allowedInBagTypes - availableDates - bagPoints - categoryCode - displayOutOfStock - earlyOrderDeadline - excludedDays - id - imageUrl - inventoryPeriods - isAvailableOneOff - isAvailableStore - isAvailableSubscription - isDeleted - maxQuantityPerOrder - name - packingOrder - packingStationCode - price - producers - published - sku - sortOrder - subscriptionDiscount - tags - taxRate - unit - uri - volume type: object properties: id: type: integer format: int64 name: type: string sku: type: string uri: type: string imageUrl: type: string categoryCode: type: string producers: type: array items: $ref: '#/components/schemas/ProducerBasic' unit: $ref: '#/components/schemas/UnitOfMeasurement' taxRate: type: number price: $ref: '#/components/schemas/Price' subscriptionDiscount: type: number nullable: true bagPoints: type: integer format: int32 nullable: true volume: type: number format: double nullable: true sortOrder: type: integer format: int32 packingOrder: type: integer format: int32 nullable: true packingStationCode: $ref: '#/components/schemas/PackingStationCode' published: type: boolean isAvailableOneOff: type: boolean isAvailableSubscription: type: boolean isAvailableStore: type: boolean allowedInBagTypes: type: array items: $ref: '#/components/schemas/BagType' isDeleted: type: boolean maxQuantityPerOrder: type: integer format: int32 nullable: true displayOutOfStock: type: boolean availableDates: nullable: true allOf: - $ref: '#/components/schemas/ProductAvailableDates' earlyOrderDeadline: type: boolean excludedDays: type: array items: $ref: '#/components/schemas/DayId' tags: type: array items: $ref: '#/components/schemas/ProductTag' inventoryPeriods: type: array items: $ref: '#/components/schemas/InventoryPeriod' ProductAvailableDates: required: - from - to type: object properties: from: type: string format: date to: type: string format: date ProductCsvProcessor.Mode: type: string description: The mode the import is running in. enum: - DEFAULTS - OVERRIDES ProductDemandWithDate: required: - date type: object properties: date: type: string format: date description: The Demand for a particular date. ProductImage: required: - id - imageUrl - isDefault type: object properties: id: type: integer format: int64 imageUrl: type: string isDefault: type: boolean ProductLabelPosition: type: string enum: - TOP_LEFT - BOTTOM_RIGHT ProductSearchFacet: type: string enum: - TAG_NAME - TAG_PATH - PRODUCER_NAME ProductSearchSort: type: string enum: - NAME_ASC - NAME_DESC - PRICE_ASC - PRICE_DESC - SORT_ORDER_ASC - SORT_ORDER_DESC ProductTag: type: object properties: featured: type: boolean description: Marking a Tag as "featured" indicates to the client that it should be rendered differently. description: This represents a type hierarchy of product tags. discriminator: propertyName: type mapping: LABEL: '#/components/schemas/ProductTag.Label' TAG: '#/components/schemas/ProductTag.Tag' TRAIT: '#/components/schemas/ProductTag.Trait' TRAIT_LABEL: '#/components/schemas/ProductTag.TraitLabel' oneOf: - $ref: '#/components/schemas/ProductTag.Tag' - $ref: '#/components/schemas/ProductTag.Trait' - $ref: '#/components/schemas/ProductTag.Label' - $ref: '#/components/schemas/ProductTag.TraitLabel' ProductTag.Label: required: - backgroundColor - borderColor - isFeatured - isSeo - name - path - position - shortName - sortOrder - textColor type: object properties: name: type: string path: type: string shortName: type: string nullable: true textColor: type: string borderColor: type: string backgroundColor: type: string position: $ref: '#/components/schemas/ProductLabelPosition' sortOrder: type: integer format: int32 isFeatured: type: boolean isSeo: type: boolean type: type: string description: "Represents a tag which applies operational messaging around availability\ \ or promotions. e.g. On Sale, New" ProductTag.Tag: required: - isFeatured - name - path - shortName type: object properties: name: type: string path: type: string shortName: type: string nullable: true isFeatured: type: boolean type: type: string description: A basic tag with no additional context attached to it. ProductTag.Trait: required: - borderColor - iconLabel - isFeatured - name - path - shortName - textColor type: object properties: name: type: string path: type: string shortName: type: string nullable: true iconLabel: type: string textColor: type: string borderColor: type: string isFeatured: type: boolean type: type: string description: "Represents a tag which indicates product-driven certifications\ \ or locality. e.g. Organic, Vegetarian, Local, Gluten-Free" ProductTag.TraitLabel: required: - backgroundColor - borderColor - iconLabel - isFeatured - isSeo - name - path - position - shortName - sortOrder - textColor type: object properties: name: type: string path: type: string shortName: type: string nullable: true iconLabel: type: string textColor: type: string borderColor: type: string backgroundColor: type: string position: $ref: '#/components/schemas/ProductLabelPosition' sortOrder: type: integer format: int32 isFeatured: type: boolean isSeo: type: boolean type: type: string description: Represents a tag which is both a Trait and a Label. ProductWithDetails: required: - allowedInBagTypes - availableDates - bagPoints - categories - categoryCode - description - displayOutOfStock - earlyOrderDeadline - excludedDays - id - imageUrl - internalName - inventoryPeriods - isAvailableOneOff - isAvailableStore - isAvailableSubscription - isDeleted - keywords - maxQuantityPerOrder - name - neversends - outOfStockDates - packingOrder - packingStationCode - price - producers - published - servingDetails - sku - sortOrder - subscriptionDiscount - tags - taxRate - unit - uri - volume type: object properties: id: type: integer format: int64 name: type: string sku: type: string uri: type: string imageUrl: type: string categoryCode: type: string producers: type: array items: $ref: '#/components/schemas/ProducerBasic' unit: $ref: '#/components/schemas/UnitOfMeasurement' taxRate: type: number price: $ref: '#/components/schemas/Price' subscriptionDiscount: type: number nullable: true bagPoints: type: integer format: int32 nullable: true volume: type: number format: double nullable: true sortOrder: type: integer format: int32 packingOrder: type: integer format: int32 nullable: true packingStationCode: $ref: '#/components/schemas/PackingStationCode' published: type: boolean isAvailableOneOff: type: boolean isAvailableSubscription: type: boolean isAvailableStore: type: boolean allowedInBagTypes: type: array items: $ref: '#/components/schemas/BagType' isDeleted: type: boolean maxQuantityPerOrder: type: integer format: int32 nullable: true displayOutOfStock: type: boolean availableDates: nullable: true allOf: - $ref: '#/components/schemas/ProductAvailableDates' earlyOrderDeadline: type: boolean excludedDays: type: array items: $ref: '#/components/schemas/DayId' tags: type: array items: $ref: '#/components/schemas/ProductTag' inventoryPeriods: type: array items: $ref: '#/components/schemas/InventoryPeriod' internalName: type: string keywords: type: array items: type: string categories: type: array items: $ref: '#/components/schemas/CategoryBasic' description: type: string servingDetails: type: string neversends: type: array items: $ref: '#/components/schemas/NeversendBasic' outOfStockDates: type: array items: type: string format: date ProductWithQuantity: required: - product - quantity type: object properties: product: $ref: '#/components/schemas/Product' quantity: type: number ProgressValue: required: - completed - total type: object properties: completed: type: integer format: int32 total: type: integer format: int32 nullable: true Province: type: string enum: - ALBERTA - BRITISH_COLUMBIA - MANITOBA - NEW_BRUNSWICK - NEWFOUNDLAND_AND_LABRADOR - NORTHWEST_TERRITORIES - NOVA_SCOTIA - NUNAVUT - ONTARIO - PRINCE_EDWARD_ISLAND - QUEBEC - SASKATCHEWAN - YUKON_TERRITORY ReferralMethod: required: - id - name - sortOrder type: object properties: id: type: integer format: int64 name: type: string sortOrder: type: integer format: int32 RegistrationProductsController.PreselectionsRequest: required: - ignoreProductIds - uris type: object properties: uris: type: array items: type: string ignoreProductIds: type: array items: type: integer format: int64 RegistrationProperties: required: - conversionLandingPage - couponCode - featureFlags - hasBagSubscription - hasProductSubscription - initialLandingPage - ipv4Address - onboardingItems - preselectedItems type: object properties: initialLandingPage: type: string nullable: true conversionLandingPage: type: string nullable: true hasBagSubscription: type: boolean hasProductSubscription: type: boolean preselectedItems: type: array items: $ref: '#/components/schemas/RegistrationProperties.OnboardingItem' onboardingItems: type: array items: $ref: '#/components/schemas/RegistrationProperties.OnboardingItem' ipv4Address: type: string featureFlags: type: array nullable: true items: $ref: '#/components/schemas/FeatureFlag' couponCode: type: string nullable: true RegistrationProperties.OnboardingItem: type: object RenderedContentPage: required: - blocks - description - headingFont - id - isLandingPage - isPublished - isSystem - signupQueryParameters - subtitle - title - uri type: object properties: id: type: integer format: int64 uri: type: string title: type: string subtitle: type: string description: type: string signupQueryParameters: type: object additionalProperties: type: string headingFont: $ref: '#/components/schemas/ContentPageHeadingFont' isSystem: type: boolean isLandingPage: type: boolean isPublished: type: boolean blocks: type: array items: $ref: '#/components/schemas/ContentBlock' SalesOrderType: type: string enum: - B2C - B2B - WB2C - WB2B Schedule: required: - day - hold - interval - numCycles type: object properties: day: $ref: '#/components/schemas/DayId' interval: type: integer format: int32 numCycles: type: integer format: int32 hold: type: integer format: int32 ScheduleController.ScheduleDate: required: - date - numCycles type: object properties: date: type: string format: date numCycles: type: integer format: int32 ScheduledBinPickup: required: - scheduleByDate - stopRequestId type: object properties: stopRequestId: type: integer format: int64 scheduleByDate: type: string format: date SchemaField: required: - allowedFileTypes - allowedFormattingFeatures - description - fields - hint - isRequired - placeholderVariables - property - type type: object properties: type: $ref: '#/components/schemas/SchemaFieldType' property: type: string description: type: string hint: type: string isRequired: type: boolean placeholderVariables: type: array items: type: string allowedFormattingFeatures: $ref: '#/components/schemas/HtmlFormattingFeature' allowedFileTypes: type: array items: type: string fields: type: array items: $ref: '#/components/schemas/SchemaField' description: |- A field in the BlockSchema **Important:** please read warning on BlockSchema before working with this class. SchemaFieldType: type: string description: Defines the type of value allowed in SchemaField. enum: - PLAINTEXT - HTML - URL - CDN_URL - PRODUCT_IDS - FIELD_COLLECTION SearchResultDto: required: - estimatedTotalHits - facetDistribution - hits type: object properties: hits: type: array items: type: object additionalProperties: true estimatedTotalHits: type: integer format: int32 facetDistribution: type: object Seq_Tree.Node_CategoryHierarchyNode__: type: object allOf: - $ref: '#/components/schemas/Traversable_Tree.Node_CategoryHierarchyNode__' - $ref: '#/components/schemas/Value_Tree.Node_CategoryHierarchyNode__' - $ref: '#/components/schemas/PartialFunction_Integer.Tree.Node_CategoryHierarchyNode__' - $ref: '#/components/schemas/Function1_Integer.Tree.Node_CategoryHierarchyNode__' - properties: sequential: type: boolean SessionFeatureFlagContext: type: object properties: initialLandingPagePath: type: string description: "Landing page path, including leading slash." nullable: true utmSource: type: string description: UTM source. nullable: true utmCampaign: type: string description: UTM campaign. nullable: true utmMedium: type: string description: UTM medium. nullable: true ShoppingCartController.BagProductSelection: required: - productId - quantity type: object properties: productId: type: integer format: int64 quantity: minimum: 0 type: integer format: int32 neversendResult: nullable: true allOf: - $ref: '#/components/schemas/BagItemNeversendResult' ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.BagShoppingCartItem.StoredBagShoppingCartItem_: required: - nextDate type: object properties: nextDate: type: string format: date ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.BagShoppingCartItem_: required: - nextDate type: object properties: nextDate: type: string format: date ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.ProductShoppingCartItem.StoredProductShoppingCartItem_: required: - nextDate type: object properties: nextDate: type: string format: date ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.ProductShoppingCartItem_: required: - nextDate type: object properties: nextDate: type: string format: date ShoppingCartController.ShoppingCartItemWithNextDate_ShoppingCartItem.StoredShoppingCartItem_: required: - nextDate type: object properties: nextDate: type: string format: date ShoppingCartItem: type: object ShoppingCartItem.BagShoppingCartItem: type: object ShoppingCartItem.ProductShoppingCartItem: type: object ShoppingCartItem.ProductShoppingCartItem.StoredProductShoppingCartItem: type: object ShoppingCartManager.ShiftCartItemsResult: required: - heldItems - removedItems type: object properties: heldItems: type: array items: $ref: '#/components/schemas/ShoppingCartItem.ProductShoppingCartItem.StoredProductShoppingCartItem' removedItems: type: array items: $ref: '#/components/schemas/ShoppingCartItem.ProductShoppingCartItem.StoredProductShoppingCartItem' ShortUrl: required: - code - id - isSystem - note - url type: object properties: id: type: integer format: int64 code: type: string url: type: string note: type: string isSystem: type: boolean SocialProof: type: object properties: google: nullable: true allOf: - $ref: '#/components/schemas/SocialProof.Google' SocialProof.Google: required: - rating - reviewCount type: object properties: rating: type: number format: double reviewCount: type: integer format: int32 StreetAddress: type: object allOf: - $ref: '#/components/schemas/NewStreetAddress' - properties: id: type: integer format: int64 StreetAddressType: type: string enum: - USER - GUEST - STORE StripeSource: required: - value type: object properties: value: maxLength: 255 minLength: 1 type: string description: Represents a String value that can be used as a Stripe payment source. This can be a token or a card ID. TelephoneStatus: required: - consecutiveSmsFailures - hasSmsOptOut - isSmsUnreachable type: object properties: consecutiveSmsFailures: type: integer format: int32 hasSmsOptOut: type: boolean isSmsUnreachable: type: boolean TemplateString_BaseTemplateStringContext_: type: object description: Represents a template string which contains placeholder variables that can be applied by a specific class T. TemporalUnit: type: object properties: duration: $ref: '#/components/schemas/Duration' durationEstimated: type: boolean dateBased: type: boolean timeBased: type: boolean Totals: required: - amountBelowMinimumOrderValue - credits - discounts - fees - grandTotal - potentialMembershipDiscount - potentialSubscriptionDiscount - subtotal - totalDiscount - totalFees - totalMembershipDiscount - totalSubscriptionDiscount - totalTax - warnings type: object properties: amountBelowMinimumOrderValue: type: number subtotal: type: number totalDiscount: type: number credits: type: number totalSubscriptionDiscount: type: number potentialSubscriptionDiscount: type: number totalMembershipDiscount: type: number potentialMembershipDiscount: type: number totalFees: type: number totalTax: type: number grandTotal: type: number fees: type: array items: $ref: '#/components/schemas/Fee_Discount.FeeDiscount_' discounts: type: array items: $ref: '#/components/schemas/AppliedDiscount' warnings: type: array items: $ref: '#/components/schemas/Totals.TotalWarning' Totals.TotalWarning: required: - details - title type: object properties: title: type: string details: type: string TransferGuestCartResult: required: - duplicatedItems - outOfStockItems - unavailableItems type: object properties: outOfStockItems: type: array items: $ref: '#/components/schemas/ShoppingCartItem.ProductShoppingCartItem' duplicatedItems: type: array items: $ref: '#/components/schemas/ShoppingCartItem.ProductShoppingCartItem' unavailableItems: type: array items: $ref: '#/components/schemas/ShoppingCartItem.ProductShoppingCartItem' Traversable_Tree.Node_CategoryHierarchyNode__: type: object allOf: - $ref: '#/components/schemas/Value_Tree.Node_CategoryHierarchyNode__' - properties: distinct: type: boolean empty: type: boolean ordered: type: boolean sequential: type: boolean singleValued: type: boolean traversableAgain: type: boolean Tree.Node_CategoryHierarchyNode_: required: - children - value type: object properties: children: $ref: '#/components/schemas/List_Tree.Node_CategoryHierarchyNode__' value: $ref: '#/components/schemas/CategoryHierarchyNode' empty: type: boolean leaf: type: boolean TrexityController.ParcelEventData: required: - deliveryIndex - orderUuid - parcel - shipmentId type: object properties: shipmentId: type: string deliveryIndex: type: integer format: int32 orderUuid: type: string parcel: $ref: '#/components/schemas/TrexityParcel' TrexityParcel: required: - arrivedAt - containsAlcohol - deliveredAt - deliveryAddress - deliveryAddressCity - deliveryAddressCountry - deliveryAddressLocation - deliveryAddressNotes - deliveryAddressProvince - deliveryAddressServiceCity - deliveryEmail - deliveryInstructions - deliveryName - deliveryPhone - description - externalId - id - isDelivered - load - metadata - numLabels - orderId - parcelValue - requiresPersonHandoff - scanId - secondsFromPickupToDelivery - sequence - shipmentId - sortOrder - trackingNumber type: object properties: id: type: string numLabels: type: integer format: int32 sortOrder: type: integer format: int32 sequence: type: integer format: int32 shipmentId: type: string deliveryAddress: type: string deliveryAddressLocation: $ref: '#/components/schemas/TrexityParcel.Location' deliveryAddressProvince: type: string deliveryAddressCountry: type: string deliveryAddressCity: type: string deliveryAddressServiceCity: type: string deliveryAddressNotes: type: string deliveryInstructions: type: string deliveryName: type: string deliveryEmail: type: string deliveryPhone: type: string description: type: string orderId: type: string parcelValue: type: number format: double requiresPersonHandoff: type: boolean containsAlcohol: type: boolean externalId: type: string scanId: type: string load: $ref: '#/components/schemas/TrexityParcel.Load' metadata: type: object additionalProperties: true arrivedAt: type: string format: date-time deliveredAt: type: string format: date-time isDelivered: type: boolean secondsFromPickupToDelivery: type: integer format: int32 trackingNumber: type: string TrexityParcel.Load: required: - height - length - weight - width type: object properties: length: type: integer format: int32 width: type: integer format: int32 height: type: integer format: int32 weight: type: integer format: int32 description: Defines the dimensions and weight of a parcel. TrexityParcel.Location: required: - latitude - longitude type: object properties: latitude: type: number format: double longitude: type: number format: double TrexityShipment: required: - archived - cachedDriverName - cachedMerchantAddress - cachedTaxes - cachedTotal - cachedTotalRouteDistance - cachedTotalRouteDuration - cachedTotalWithoutTaxes - cancellationAcknowledgedByDriver - createdAt - currentDriverEstimatedSecondsToPickup - currentStatus - deliverEndAt - deliverStartAt - driverAcceptedAt - driverArrivedPickupAt - driverId - driverPickedUpAt - driverStartedAt - driverTimeToPickup - gdprRedacted - id - lastBroadcastedAt - linkedParentShipment - merchantEmail - merchantId - merchantName - merchantPhone - merchantPpid - parcels - pickupAddress - pickupAddressCity - pickupAddressCountry - pickupAddressLocation - pickupAddressNotes - pickupAddressProvince - pickupAddressServiceCity - pickupEndAt - pickupInstructions - pickupStartAt - postErrors - postedAt - rate - requirements - routeIdentifier - scheduledPostAt - scheduledPostError - serviceType type: object properties: id: type: string routeIdentifier: type: integer format: int32 serviceType: type: string currentStatus: type: string pickupAddress: type: string pickupAddressNotes: type: string pickupInstructions: type: string requirements: $ref: '#/components/schemas/TrexityShipment.Requirements' scheduledPostAt: type: string format: date-time deliverStartAt: type: string format: date-time deliverEndAt: type: string format: date-time pickupStartAt: type: string format: date-time pickupEndAt: type: string format: date-time merchantId: type: string driverId: type: string rate: $ref: '#/components/schemas/TrexityShipment.Rate' gdprRedacted: type: boolean archived: type: boolean pickupAddressLocation: $ref: '#/components/schemas/TrexityShipment.Location' pickupAddressProvince: type: string pickupAddressCountry: type: string pickupAddressCity: type: string pickupAddressServiceCity: type: string cachedDriverName: type: string cachedTotalRouteDistance: type: integer format: int32 cachedTotalRouteDuration: type: integer format: int32 cachedTotal: type: integer format: int32 cachedTotalWithoutTaxes: type: integer format: int32 cachedTaxes: type: object additionalProperties: true cachedMerchantAddress: type: string merchantPpid: type: string merchantName: type: string merchantEmail: type: string merchantPhone: type: string createdAt: type: string format: date-time driverAcceptedAt: type: string format: date-time driverStartedAt: type: string format: date-time driverArrivedPickupAt: type: string format: date-time driverPickedUpAt: type: string format: date-time postedAt: type: string format: date-time lastBroadcastedAt: type: string format: date-time driverTimeToPickup: type: integer format: int32 cancellationAcknowledgedByDriver: type: boolean scheduledPostError: type: string postErrors: type: array items: $ref: '#/components/schemas/TrexityShipment.PostError' currentDriverEstimatedSecondsToPickup: type: integer format: int32 linkedParentShipment: $ref: '#/components/schemas/TrexityShipment.LinkedParentShipment' parcels: type: array items: $ref: '#/components/schemas/TrexityParcel' TrexityShipment.LinkedParentShipment: required: - shipmentId - type type: object properties: shipmentId: type: string type: type: string TrexityShipment.Location: required: - latitude - longitude type: object properties: latitude: type: number format: double longitude: type: number format: double TrexityShipment.PostError: required: - acknowledged - date - key - message - metadata type: object properties: date: type: string format: date-time key: type: string message: type: string acknowledged: type: boolean metadata: type: object additionalProperties: true TrexityShipment.Rate: required: - currency - deliveryWithoutTaxes - description - fuelWithoutTaxes - name - serviceType - surchargesWithoutTaxes - taxAmounts - taxRates - total - totalTaxes - totalWithoutTaxes type: object properties: name: type: string description: type: string serviceType: type: string currency: type: string total: type: number format: double deliveryWithoutTaxes: type: number format: double fuelWithoutTaxes: type: number format: double surchargesWithoutTaxes: type: array items: $ref: '#/components/schemas/TrexityShipment.Surcharge' totalWithoutTaxes: type: number format: double taxRates: type: object additionalProperties: type: number format: double taxAmounts: type: object additionalProperties: type: number format: double totalTaxes: type: number format: double TrexityShipment.Requirements: required: - customPricing - legalAgeAlcohol - perishable - returnReusables - vehicleType type: object properties: vehicleType: type: string legalAgeAlcohol: type: boolean perishable: type: boolean returnReusables: type: boolean customPricing: type: boolean TrexityShipment.Surcharge: required: - amount - type type: object properties: type: type: string amount: type: number format: double TwilioSmsWebhookRequest: required: - accountSid - body - from - fromCity - fromCountry - fromState - fromZip - messageSid - messagingServiceSid - numMedia - numSegments - to - toCity - toCountry - toState - toZip type: object properties: messageSid: type: string accountSid: type: string messagingServiceSid: type: string from: $ref: '#/components/schemas/PhoneNumberService.NormalizedPhoneNumber.NormalizedE164PhoneNumber' to: $ref: '#/components/schemas/PhoneNumberService.NormalizedPhoneNumber.NormalizedE164PhoneNumber' body: type: string numMedia: type: integer format: int32 numSegments: type: integer format: int32 fromCity: type: string fromState: type: string fromZip: type: string fromCountry: type: string toCity: type: string toState: type: string toZip: type: string toCountry: type: string UnitOfMeasurement: required: - display - id - name type: object properties: id: type: integer format: int64 name: type: string display: type: string nullable: true UpcomingOrder: required: - date - deadline - items - packagingType - status - timeslot - totals type: object properties: status: $ref: '#/components/schemas/UpcomingOrder.Status' date: type: string format: date deadline: type: string format: date-time timeslot: $ref: '#/components/schemas/OndTimeslot' packagingType: $ref: '#/components/schemas/PackagingType' totals: $ref: '#/components/schemas/Totals' items: type: array items: $ref: '#/components/schemas/ShoppingCartItem' description: "A representation of a customer's order in the near future. It\ \ differs from ScheduledOrder in the following way: - An UpcomingOrder may\ \ be empty, which represents to the client that they may start adding items\ \ to that date. - An UpcomingOrder may be backed by an OndOrder instead of\ \ a ScheduledOrder in the case of an order which is finalized but not yet\ \ delivered" UpcomingOrder.Status: type: string enum: - PENDING - FORECASTED - FINALIZED - HELD User: type: object allOf: - $ref: '#/components/schemas/UserBasic' - properties: active: type: boolean User.Customer: required: - billingAddressId - defaultDay - deliveryAddressId - deliveryZoneId - email - firstName - hasBagSubscription - hasProductSubscription - id - isActive - lastLoginAt - lastName - membership - originPlatform type: object properties: id: type: integer format: int64 originPlatform: nullable: true allOf: - $ref: '#/components/schemas/OriginPlatform' email: type: string firstName: type: string lastName: type: string membership: nullable: true allOf: - $ref: '#/components/schemas/UserMembership' defaultDay: $ref: '#/components/schemas/DayId' deliveryZoneId: type: integer format: int64 deliveryAddressId: type: integer format: int64 billingAddressId: type: integer format: int64 isActive: type: boolean hasBagSubscription: type: boolean hasProductSubscription: type: boolean lastLoginAt: type: string format: date-time UserBasic: type: object properties: active: type: boolean UserCoupon: required: - coupon - id - timesUsed - userId type: object properties: id: type: integer format: int64 userId: type: integer format: int64 timesUsed: type: integer format: int32 coupon: $ref: '#/components/schemas/Coupon' description: A customer-specific instance of a Coupon with usage information. UserDeliveryAndBillingAddress: required: - billingAddress - deliveryAddress - sameAsDelivery type: object properties: deliveryAddress: $ref: '#/components/schemas/UserStreetAddress' billingAddress: $ref: '#/components/schemas/UserStreetAddress' sameAsDelivery: type: boolean UserGiftCardController.ApplyGiftCardResult: required: - amount type: object properties: amount: type: number UserMembership: required: - endDate - fee - id - isTrial - renewalCancelledAt - renewalFailures - renewedAt - startDate - userId type: object properties: id: type: integer format: int64 userId: type: integer format: int64 fee: type: number isTrial: type: boolean startDate: type: string format: date endDate: type: string format: date renewedAt: type: string format: date-time nullable: true renewalCancelledAt: type: string format: date-time nullable: true renewalFailures: type: integer format: int32 UserMessage: type: object description: Represents a message to show to a user. UserMessageResponseAction: type: string enum: - ACCEPT - DISMISS UserSettingKey: type: string enum: - ALLOW_SUBSTITUTIONS - DELIVERY_CALL_AHEAD - DELIVERY_KEY_ID - DISABLE_EMAIL_PICKUP_REMINDER - DISABLE_EMAIL_ORDER_DEADLINE - ENABLE_EMAIL_MARKET_READY_NOTIFICATION - ENABLE_EMAIL_MARKETING_NOTIFICATION - ENABLE_SMS_MARKET_READY_NOTIFICATION - ENABLE_SMS_MARKETING_NOTIFICATION - ENABLE_SMS_ORDER_DEADLINE_REMINDER - PACKAGING_TYPE - SMS_ORDER_DEADLINE_REMINDER_OFFSET_HOURS UserSetting_Object_: type: object properties: isModifiable: type: boolean UserStreetAddress: type: object allOf: - $ref: '#/components/schemas/StreetAddress' - $ref: '#/components/schemas/NewStreetAddress' - properties: userId: type: integer format: int64 Value_Tree.Node_CategoryHierarchyNode__: type: object properties: orNull: $ref: '#/components/schemas/Tree.Node_CategoryHierarchyNode_' async: type: boolean empty: type: boolean lazy: type: boolean singleValued: type: boolean