openapi: 3.1.0 info: title: Sysco Food Distribution API description: >- The Sysco Food Distribution API provides programmatic access to Sysco's food distribution platform for product ordering, catalog browsing, delivery tracking, account management, and supply chain integration. Available through the Sysco API Central developer portal, the API enables restaurants, food service operators, and partners to integrate with Sysco's distribution operations and ordering systems. version: '1.0' contact: url: https://apic-devportal.sysco.com/ servers: - url: https://api.sysco.com description: Production - url: https://api-stg.sysco.com description: Staging security: - bearerAuth: [] tags: - name: Products description: Browse and search the Sysco product catalog. - name: Orders description: Create and manage food distribution orders. - name: Deliveries description: Track delivery status and scheduling. - name: Accounts description: Manage customer account information. - name: Pricing description: Retrieve product pricing and contract pricing. paths: /products: get: operationId: listProducts summary: List Products description: >- Retrieves a list of products from the Sysco food distribution catalog with filtering by category, brand, dietary attributes, and availability. Supports over 30 fields of product data including real-time stock status and next receive dates. tags: - Products parameters: - name: category in: query description: Filter by product category. schema: type: string - name: keyword in: query description: Search by keyword. schema: type: string - name: brand in: query description: Filter by brand name. schema: type: string - name: page in: query schema: type: integer - name: pageSize in: query schema: type: integer responses: '200': description: Product list returned content: application/json: schema: $ref: '#/components/schemas/ProductList' '401': description: Unauthorized /products/{productId}: get: operationId: getProduct summary: Get Product description: >- Retrieves detailed information about a specific product including nutrition facts, allergens, packaging details, and pricing. tags: - Products parameters: - name: productId in: path required: true schema: type: string description: The Sysco product identifier (SUPC). responses: '200': description: Product details returned content: application/json: schema: $ref: '#/components/schemas/Product' '404': description: Product not found /orders: get: operationId: listOrders summary: List Orders description: >- Retrieves a list of orders placed with Sysco, including order status, items, and delivery scheduling information. Supports up to 14 months of order history. tags: - Orders parameters: - name: status in: query schema: type: string enum: [pending, confirmed, shipped, delivered, cancelled] - name: dateFrom in: query schema: type: string format: date - name: dateTo in: query schema: type: string format: date - name: page in: query schema: type: integer responses: '200': description: Order list returned content: application/json: schema: $ref: '#/components/schemas/OrderList' post: operationId: createOrder summary: Create Order description: >- Creates a new food distribution order with specified products, quantities, delivery date, and preferences. tags: - Orders requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/OrderRequest' responses: '201': description: Order created successfully content: application/json: schema: $ref: '#/components/schemas/Order' '400': description: Bad request /orders/{orderId}: get: operationId: getOrder summary: Get Order description: Retrieves details for a specific order including items and status. tags: - Orders parameters: - name: orderId in: path required: true schema: type: string responses: '200': description: Order details returned content: application/json: schema: $ref: '#/components/schemas/Order' '404': description: Order not found delete: operationId: cancelOrder summary: Cancel Order description: Cancels a pending order that has not yet been shipped. tags: - Orders parameters: - name: orderId in: path required: true schema: type: string responses: '200': description: Order cancelled '404': description: Order not found /deliveries: get: operationId: listDeliveries summary: List Deliveries description: >- Retrieves a list of scheduled and completed deliveries with tracking information and estimated arrival times. tags: - Deliveries parameters: - name: status in: query schema: type: string enum: [scheduled, in_transit, delivered] - name: dateFrom in: query schema: type: string format: date responses: '200': description: Delivery list returned content: application/json: schema: $ref: '#/components/schemas/DeliveryList' /deliveries/{deliveryId}: get: operationId: getDelivery summary: Get Delivery description: Retrieves tracking and status details for a specific delivery. tags: - Deliveries parameters: - name: deliveryId in: path required: true schema: type: string responses: '200': description: Delivery details returned content: application/json: schema: $ref: '#/components/schemas/Delivery' /accounts: get: operationId: listAccounts summary: List Accounts description: Retrieves customer account information. tags: - Accounts responses: '200': description: Account list returned content: application/json: schema: type: array items: $ref: '#/components/schemas/Account' /accounts/{accountId}: get: operationId: getAccount summary: Get Account description: Retrieves details for a specific customer account. tags: - Accounts parameters: - name: accountId in: path required: true schema: type: string responses: '200': description: Account details returned content: application/json: schema: $ref: '#/components/schemas/Account' /pricing: get: operationId: listPricing summary: List Pricing description: >- Retrieves contract pricing for products available to the customer account, including promotional pricing and volume discounts. tags: - Pricing parameters: - name: productId in: query schema: type: string - name: category in: query schema: type: string responses: '200': description: Pricing information returned content: application/json: schema: $ref: '#/components/schemas/PricingList' components: securitySchemes: bearerAuth: type: http scheme: bearer schemas: ProductList: type: object properties: items: type: array items: $ref: '#/components/schemas/Product' totalCount: type: integer page: type: integer Product: type: object properties: productId: type: string description: Sysco Universal Product Code (SUPC). name: type: string brand: type: string category: type: string gtin: type: string description: Global Trade Item Number barcode. packCount: type: integer size: type: string unitOfMeasure: type: string storageType: type: string enum: [refrigerated, frozen, dry] inStock: type: boolean nextReceiveDate: type: string format: date description: type: string OrderList: type: object properties: items: type: array items: $ref: '#/components/schemas/Order' totalCount: type: integer Order: type: object properties: orderId: type: string status: type: string enum: [pending, confirmed, shipped, delivered, cancelled] deliveryDate: type: string format: date totalAmount: type: number items: type: array items: $ref: '#/components/schemas/OrderItem' createdAt: type: string format: date-time OrderRequest: type: object required: - items - deliveryDate properties: items: type: array items: $ref: '#/components/schemas/OrderItem' deliveryDate: type: string format: date specialInstructions: type: string OrderItem: type: object required: - productId - quantity properties: productId: type: string quantity: type: integer unitOfMeasure: type: string price: type: number DeliveryList: type: object properties: items: type: array items: $ref: '#/components/schemas/Delivery' Delivery: type: object properties: deliveryId: type: string orderId: type: string status: type: string enum: [scheduled, in_transit, delivered] scheduledDate: type: string format: date estimatedArrival: type: string format: date-time trackingNumber: type: string driverName: type: string Account: type: object properties: accountId: type: string name: type: string type: type: string enum: [restaurant, healthcare, education, hospitality] address: type: object properties: street: type: string city: type: string state: type: string zipCode: type: string contactEmail: type: string format: email PricingList: type: object properties: items: type: array items: $ref: '#/components/schemas/ProductPrice' ProductPrice: type: object properties: productId: type: string contractPrice: type: number listPrice: type: number currency: type: string default: USD effectiveDate: type: string format: date expirationDate: type: string format: date