handy Order Products API

The Order Products API from handy — 2 operation(s) for order products.

Operations 2

DELETE /api/v1/orders/products/{id} DESTROY
POST /api/v1/orders/{partner_order_id}/line_items/{line_no}/cancel CANCEL

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/handy-order-products-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

handy-order-products-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Handy’s Partner Bookings Order Products API
  description: "<p>The Handy Partner API offers retailers fixed price installation\nservices that can be added to their eCommerce site or in-store checkout experience.\nTo start using the Handy Partner API, contact partners-eng@handy.com in order to\n        get access to the Sandbox.</p>\n        <p>Once you are ready to move to prod, we will walk you through quick authentication steps.</p>"
  version: v1
  contact: partnerships@handy.com
servers:
- url: https://partners.services.handy.com
tags:
- name: Order Products
paths:
  /api/v1/orders/products/{id}:
    delete:
      summary: DESTROY
      description: "Cancel the booking created by the order request. It finds the order using the **external id** of product. This external id corresponds to the `order_product_id` provided when the order gets created. For multi-line orders it cancels all the bookings related to the order, no matter which `order_product_id` is provided. \n\n No webhooks are sent if the cancellation is successful. If the cancellation happens within 24 hours of the start time a cancellation fee is charged. \n\n Reason can be provided in the request body optionally. Reason must be one of `['partner_delivery_delayed', 'partner_damaged_product', 'partner_self_assembled', 'partner_returned_item', 'partner_missing_pieces', 'reschedule_consolidation']`"
      tags:
      - Order Products
      parameters:
      - name: HDY-PARTNER-ID
        in: header
        description: Your assigned partner ID
        example: partner_name
        schema:
          type: string
      - name: HDY-TIMESTAMP
        in: header
        description: Seconds since epoch UTC
        example: '1525361611'
        schema:
          type: string
      - name: HDY-SIGNATURE
        in: header
        description: 'Signature generated using your private key.

          Click <a href=''https://github.com/Handybook/API-Request-Signing'' target=''_blank''>here</a> to learn how.'
        example: OF5xI0LbLXHkFBLyNa8l..XHk=
        schema:
          type: string
      - name: id
        in: path
        description: Order product external_id
        example: '1234567890'
        required: true
        schema:
          type: string
          default: ''
      - name: reason
        in: query
        description: This is optional. It indicates the reason for cancelling the order. Default is `partner_returned_item`.
        example: partner_returned_item
        schema:
          type: string
      responses:
        '200':
          description: Order Booking(product) cancelled
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/order_product_response_cancel_product'
        '400':
          description: Reason not found if reason provided is not in the list above
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Reason not found
                  code:
                    type: string
                    example: invalid_request_parameter
                  error_uuid:
                    $ref: '#/components/schemas/error_uuid'
                required:
                - message
                - code
                - error_uuid
        '404':
          description: Order product not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: The order was not found.
                  code:
                    type: string
                    example: order_not_found
                  more_info:
                    type: string
                    example: The order was not found
                  error_uuid:
                    $ref: '#/components/schemas/error_uuid'
                required:
                - message
                - code
                - error_uuid
        '500':
          description: Booking has already been completed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Booking has already been completed.
                  code:
                    type: string
                    example: booking_cannot_be_cancelled
                  error_uuid:
                    $ref: '#/components/schemas/error_uuid'
                required:
                - message
                - code
                - error_uuid
  /api/v1/orders/{partner_order_id}/line_items/{line_no}/cancel:
    post:
      summary: CANCEL
      description: "Cancel the booking given the `line_item` and `partner_order_id`. For multi-line bookings it cancels all the associated products given the correct `partner_order_id` and `line_item`. The behavior of this endpoint is the same as the DESTROY one above. \n\n No webhooks are sent if the cancellation is successful. If the cancellation happens within 24 hours of the start time a cancellation fee is charged. \n\n Reason can be provided in the request body optionally. Reason must be one of `['partner_delivery_delayed', 'partner_damaged_product', 'partner_self_assembled', 'partner_returned_item', 'partner_missing_pieces', 'reschedule_consolidation']`"
      tags:
      - Order Products
      parameters:
      - name: HDY-PARTNER-ID
        in: header
        description: Your assigned partner ID
        example: partner_name
        schema:
          type: string
      - name: HDY-TIMESTAMP
        in: header
        description: Seconds since epoch UTC
        example: '1525361611'
        schema:
          type: string
      - name: HDY-SIGNATURE
        in: header
        description: 'Signature generated using your private key.

          Click <a href=''https://github.com/Handybook/API-Request-Signing'' target=''_blank''>here</a> to learn how.'
        example: OF5xI0LbLXHkFBLyNa8l..XHk=
        schema:
          type: string
      - name: partner_order_id
        in: path
        description: Order external_id
        example: '1234567890'
        required: true
        schema:
          type: string
          default: ''
      - name: line_no
        in: path
        description: Order product line_number
        example: '1'
        required: true
        schema:
          type: string
          default: ''
      - name: reason
        in: query
        description: A reason for cancellation (optional)
        example: partner_returned_item
        schema:
          type: string
          default: ''
      responses:
        '200':
          description: Order Booking(product) cancelled
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/order_product_response_cancel_product'
        '404':
          description: Order or Order product line_number not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Order Order product line_number not found
                  code:
                    type: string
                    example: order_product_not_found
                  error_uuid:
                    $ref: '#/components/schemas/error_uuid'
                required:
                - message
                - code
                - error_uuid
        '400':
          description: Reason not found if reason provided is not in the list above
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Reason not found
                  code:
                    type: string
                    example: invalid_request_parameter
                  error_uuid:
                    $ref: '#/components/schemas/error_uuid'
                required:
                - message
                - code
                - error_uuid
        '500':
          description: Booking has already been completed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Booking has already been completed.
                  code:
                    type: string
                    example: booking_cannot_be_cancelled
                  error_uuid:
                    $ref: '#/components/schemas/error_uuid'
                required:
                - message
                - code
                - error_uuid
components:
  schemas:
    order_product_response_cancel_product:
      type: object
      properties:
        order_product_id:
          type: string
          example: wv3r2o7el14gj06
        partner_order_id:
          type: string
          example: '110001023'
        order_date:
          type: string
          example: '2018-10-22T12:11:50.000Z'
        booking_id:
          type: string
          example: dj327393v614875
        sku:
          $ref: '#/components/schemas/sku'
        name:
          type: string
          example: Product name
        line_number:
          type:
          - integer
          - 'null'
          example: 1
        quantity:
          type: integer
          example: 1
        charge_amount_in_cents:
          type:
          - integer
          - 'null'
        charge_currency:
          type:
          - string
          - 'null'
        product_status:
          type: string
          example: complete
        delivery_date:
          type:
          - string
          - 'null'
          example: '2018-07-26'
        service_date:
          type:
          - string
          - 'null'
          example: '2018-07-26'
        service_datetime:
          type:
          - string
          - 'null'
          example: '2018-05-02T22:21:49.000Z'
        error:
          type:
          - string
          - 'null'
          example: null
          description: This will be null if the order is successfully cancelled as this field relates to the `processing_status` when creating the products
      required:
      - order_product_id
      - partner_order_id
      - order_date
      - booking_id
      - sku
      - name
      - quantity
    sku:
      type: string
      example: HANDY1234
      description: The product identifier that has been allocated to the product you are submitting on this order request.
    error_uuid:
      type: string
      example: 90938b23-749f-4f66-972b-43ea3a7ca7f6