3M

3M Partner and Supplier API

The 3M Partner and Supplier API provides real-time access to 3M product, pricing, order, delivery, and invoice data for partners and suppliers. The API supports GET and POST operations for product/price lookups, order and delivery tracking, and invoice status queries. Authentication uses OAuth 2.0 bearer tokens with client credentials provided during onboarding.

OpenAPI Specification

3m-partner-supplier-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: 3M Partner and Supplier API
  description: >-
    The 3M Partner and Supplier API provides real-time access to 3M product,
    pricing, order, delivery, and invoice data for partners and suppliers.
    The API supports GET and POST operations for product/price lookups,
    order and delivery tracking, and invoice status queries. Authentication
    uses OAuth 2.0 bearer tokens with client credentials provided during
    onboarding.
  version: '1.0'
servers:
  - url: https://api.3m.com
    description: Production server
security:
  - bearerAuth: []
tags:
  - name: Deliveries
    description: Track delivery status and logistics for partner orders.
  - name: Invoices
    description: Retrieve invoice status and details for billing reconciliation.
  - name: Orders
    description: Submit and track purchase orders with 3M.
  - name: Products
    description: Retrieve product catalog and pricing information.
paths:
  /products:
    get:
      operationId: listProducts
      summary: 3M List Products
      description: >-
        Retrieves a list of 3M products available to partners and suppliers
        with pricing and availability information.
      tags:
        - Products
      parameters:
        - name: category
          in: query
          description: Filter products by product category.
          schema:
            type: string
          example: adhesives
        - name: sku
          in: query
          description: Filter by specific product SKU.
          schema:
            type: string
          example: SKU-12345
      responses:
        '200':
          description: Successful response with product list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductList'
              examples:
                ListProducts200Example:
                  summary: Default listProducts 200 response
                  x-microcks-default: true
                  value:
                    products:
                      - productId: PROD-12345
                        name: 3M Scotch Heavy Duty Tape
                        sku: SKU-12345
                        category: adhesives
                        description: Heavy duty packaging tape for industrial use
                        unitPrice: 24.99
                        currency: USD
                        availability: in-stock
        '401':
          description: Unauthorized - invalid or missing bearer token
        '403':
          description: Forbidden - insufficient permissions for this resource
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK

  /products/{productId}/price:
    get:
      operationId: getProductPrice
      summary: 3M Get Product Price
      description: >-
        Retrieves the current pricing information for a specific 3M product
        based on the partner agreement and negotiated pricing tiers.
      tags:
        - Products
      parameters:
        - name: productId
          in: path
          required: true
          description: The unique product identifier.
          schema:
            type: string
          example: PROD-12345
      responses:
        '200':
          description: Successful response with product pricing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductPrice'
              examples:
                GetProductPrice200Example:
                  summary: Default getProductPrice 200 response
                  x-microcks-default: true
                  value:
                    productId: PROD-12345
                    unitPrice: 24.99
                    currency: USD
                    pricingTier: partner
                    effectiveDate: '2025-01-01'
                    expirationDate: '2025-12-31'
        '401':
          description: Unauthorized
        '404':
          description: Product not found
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK

  /orders:
    get:
      operationId: listOrders
      summary: 3M List Orders
      description: >-
        Retrieves a list of orders placed by the authenticated partner
        or supplier with status and tracking information.
      tags:
        - Orders
      parameters:
        - name: status
          in: query
          description: Filter orders by status (pending, processing, shipped, delivered, cancelled).
          schema:
            type: string
            enum:
              - pending
              - processing
              - shipped
              - delivered
              - cancelled
          example: shipped
        - name: startDate
          in: query
          description: Filter orders from this date.
          schema:
            type: string
            format: date
          example: '2025-01-01'
      responses:
        '200':
          description: Successful response with order list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderList'
              examples:
                ListOrders200Example:
                  summary: Default listOrders 200 response
                  x-microcks-default: true
                  value:
                    orders:
                      - orderId: ORD-67890
                        status: shipped
                        createdAt: '2025-03-15T10:30:00Z'
                        totalAmount: 499.95
                        currency: USD
                        items:
                          - productId: PROD-12345
                            quantity: 20
                            unitPrice: 24.99
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK

    post:
      operationId: createOrder
      summary: 3M Create an Order
      description: >-
        Submits a new order for 3M products on behalf of the authenticated
        partner or supplier.
      tags:
        - Orders
      requestBody:
        required: true
        description: Order details including line items and shipping address.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOrderRequest'
            examples:
              CreateOrderRequestExample:
                summary: Default createOrder request
                x-microcks-default: true
                value:
                  items:
                    - productId: PROD-12345
                      quantity: 20
                  shippingAddress:
                    street: 3M Center
                    city: St. Paul
                    state: MN
                    zip: '55144'
                    country: US
      responses:
        '201':
          description: Order created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
              examples:
                CreateOrder201Example:
                  summary: Default createOrder 201 response
                  x-microcks-default: true
                  value:
                    orderId: ORD-67891
                    status: pending
                    createdAt: '2025-03-15T14:30:00Z'
                    totalAmount: 499.80
                    currency: USD
                    items:
                      - productId: PROD-12345
                        quantity: 20
                        unitPrice: 24.99
        '400':
          description: Invalid request body
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK

  /deliveries:
    get:
      operationId: listDeliveries
      summary: 3M List Deliveries
      description: >-
        Retrieves delivery tracking information for orders placed by
        the authenticated partner or supplier.
      tags:
        - Deliveries
      parameters:
        - name: orderId
          in: query
          description: Filter deliveries by order identifier.
          schema:
            type: string
          example: ORD-67890
      responses:
        '200':
          description: Successful response with delivery tracking information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryList'
              examples:
                ListDeliveries200Example:
                  summary: Default listDeliveries 200 response
                  x-microcks-default: true
                  value:
                    deliveries:
                      - deliveryId: DEL-11111
                        orderId: ORD-67890
                        carrier: UPS
                        trackingNumber: 1Z999AA10123456784
                        status: in-transit
                        estimatedDelivery: '2025-03-20'
                        shippedAt: '2025-03-17T08:00:00Z'
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK

  /invoices:
    get:
      operationId: listInvoices
      summary: 3M List Invoices
      description: >-
        Retrieves invoice summaries for the authenticated partner
        or supplier with filtering by date range.
      tags:
        - Invoices
      parameters:
        - name: startDate
          in: query
          description: Filter invoices from this date.
          schema:
            type: string
            format: date
          example: '2025-01-01'
        - name: endDate
          in: query
          description: Filter invoices up to this date.
          schema:
            type: string
            format: date
          example: '2025-03-31'
      responses:
        '200':
          description: Successful response with invoice list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceList'
              examples:
                ListInvoices200Example:
                  summary: Default listInvoices 200 response
                  x-microcks-default: true
                  value:
                    invoices:
                      - invoiceId: INV-22222
                        orderId: ORD-67890
                        invoiceDate: '2025-03-18'
                        dueDate: '2025-04-17'
                        totalAmount: 499.95
                        currency: USD
                        status: unpaid
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK

components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: OAuth 2.0 bearer token obtained through client credentials flow. Provided during onboarding.

  schemas:
    Product:
      type: object
      description: A 3M product available to partners and suppliers
      properties:
        productId:
          type: string
          description: Unique product identifier
          example: PROD-12345
        name:
          type: string
          description: Product display name
          example: 3M Scotch Heavy Duty Tape
        sku:
          type: string
          description: Stock Keeping Unit identifier
          example: SKU-12345
        category:
          type: string
          description: Product category
          example: adhesives
        description:
          type: string
          description: Detailed product description
          example: Heavy duty packaging tape for industrial use
        unitPrice:
          type: number
          description: Unit price for the product
          example: 24.99
        currency:
          type: string
          description: Currency code (ISO 4217)
          example: USD
        availability:
          type: string
          description: Product availability status
          enum:
            - in-stock
            - out-of-stock
            - limited
            - discontinued
          example: in-stock

    ProductList:
      type: object
      description: List of 3M products
      properties:
        products:
          type: array
          description: Array of product records
          items:
            $ref: '#/components/schemas/Product'

    ProductPrice:
      type: object
      description: Pricing information for a specific 3M product
      properties:
        productId:
          type: string
          description: Unique product identifier
          example: PROD-12345
        unitPrice:
          type: number
          description: Partner-negotiated unit price
          example: 24.99
        currency:
          type: string
          description: Currency code (ISO 4217)
          example: USD
        pricingTier:
          type: string
          description: Pricing tier applied to this partner
          example: partner
        effectiveDate:
          type: string
          format: date
          description: Date when this pricing becomes effective
          example: '2025-01-01'
        expirationDate:
          type: string
          format: date
          description: Date when this pricing expires
          example: '2025-12-31'

    OrderItem:
      type: object
      description: A line item within an order
      properties:
        productId:
          type: string
          description: Product identifier
          example: PROD-12345
        quantity:
          type: integer
          description: Quantity ordered
          example: 20
        unitPrice:
          type: number
          description: Unit price at time of order
          example: 24.99

    Order:
      type: object
      description: A purchase order placed with 3M
      properties:
        orderId:
          type: string
          description: Unique order identifier
          example: ORD-67890
        status:
          type: string
          description: Current order status
          enum:
            - pending
            - processing
            - shipped
            - delivered
            - cancelled
          example: shipped
        createdAt:
          type: string
          format: date-time
          description: Order creation timestamp
          example: '2025-03-15T10:30:00Z'
        totalAmount:
          type: number
          description: Total order value
          example: 499.95
        currency:
          type: string
          description: Currency code (ISO 4217)
          example: USD
        items:
          type: array
          description: Line items in the order
          items:
            $ref: '#/components/schemas/OrderItem'

    OrderList:
      type: object
      description: List of orders
      properties:
        orders:
          type: array
          description: Array of order records
          items:
            $ref: '#/components/schemas/Order'

    ShippingAddress:
      type: object
      description: Shipping address for an order
      properties:
        street:
          type: string
          description: Street address
          example: 3M Center
        city:
          type: string
          description: City name
          example: St. Paul
        state:
          type: string
          description: State or province code
          example: MN
        zip:
          type: string
          description: Postal/ZIP code
          example: '55144'
        country:
          type: string
          description: Country code (ISO 3166-1 alpha-2)
          example: US

    CreateOrderRequest:
      type: object
      description: Request body for creating a new order
      required:
        - items
        - shippingAddress
      properties:
        items:
          type: array
          description: Line items to order
          items:
            type: object
            properties:
              productId:
                type: string
                description: Product identifier
                example: PROD-12345
              quantity:
                type: integer
                description: Quantity to order
                example: 20
        shippingAddress:
          $ref: '#/components/schemas/ShippingAddress'

    Delivery:
      type: object
      description: Delivery tracking record for an order
      properties:
        deliveryId:
          type: string
          description: Unique delivery identifier
          example: DEL-11111
        orderId:
          type: string
          description: Associated order identifier
          example: ORD-67890
        carrier:
          type: string
          description: Shipping carrier name
          example: UPS
        trackingNumber:
          type: string
          description: Carrier tracking number
          example: 1Z999AA10123456784
        status:
          type: string
          description: Current delivery status
          enum:
            - pending
            - in-transit
            - out-for-delivery
            - delivered
            - exception
          example: in-transit
        estimatedDelivery:
          type: string
          format: date
          description: Estimated delivery date
          example: '2025-03-20'
        shippedAt:
          type: string
          format: date-time
          description: Timestamp when the shipment was dispatched
          example: '2025-03-17T08:00:00Z'

    DeliveryList:
      type: object
      description: List of delivery records
      properties:
        deliveries:
          type: array
          description: Array of delivery records
          items:
            $ref: '#/components/schemas/Delivery'

    Invoice:
      type: object
      description: An invoice issued by 3M for an order
      properties:
        invoiceId:
          type: string
          description: Unique invoice identifier
          example: INV-22222
        orderId:
          type: string
          description: Associated order identifier
          example: ORD-67890
        invoiceDate:
          type: string
          format: date
          description: Date the invoice was issued
          example: '2025-03-18'
        dueDate:
          type: string
          format: date
          description: Payment due date
          example: '2025-04-17'
        totalAmount:
          type: number
          description: Total invoice amount
          example: 499.95
        currency:
          type: string
          description: Currency code (ISO 4217)
          example: USD
        status:
          type: string
          description: Invoice payment status
          enum:
            - unpaid
            - paid
            - overdue
            - disputed
          example: unpaid

    InvoiceList:
      type: object
      description: List of invoices
      properties:
        invoices:
          type: array
          description: Array of invoice records
          items:
            $ref: '#/components/schemas/Invoice'