Open Context Protocol is live! 🚀 Read the launch post

postCoupons

Create a coupon

Details

  • Method: POST
  • Path: /v1/coupons
  • Operation ID: PostCoupons

Parameters

{}

Response Schema

{
  "description": "A coupon contains information about a percent-off or amount-off discount you\nmight want to apply to a customer. Coupons may be applied to [subscriptions](https://api.stripe.com#subscriptions), [invoices](https://api.stripe.com#invoices),\n[checkout sessions](https://docs.stripe.com/api/checkout/sessions), [quotes](https://api.stripe.com#quotes), and more. Coupons do not work with conventional one-off [charges](https://api.stripe.com#create_charge) or [payment intents](https://docs.stripe.com/api/payment_intents).",
  "properties": {
    "amount_off": {
      "description": "Amount (in the `currency` specified) that will be taken off the subtotal of any invoices for this customer.",
      "nullable": true,
      "type": "integer"
    },
    "applies_to": {
      "description": "",
      "properties": {
        "products": {
          "description": "A list of product IDs this coupon applies to",
          "items": {
            "maxLength": 5000,
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "products"
      ],
      "title": "CouponAppliesTo",
      "type": "object",
      "x-expandableFields": []
    },
    "created": {
      "description": "Time at which the object was created. Measured in seconds since the Unix epoch.",
      "format": "unix-time",
      "type": "integer"
    },
    "currency": {
      "description": "If `amount_off` has been set, the three-letter [ISO code for the currency](https://stripe.com/docs/currencies) of the amount to take off.",
      "format": "currency",
      "nullable": true,
      "type": "string"
    },
    "currency_options": {
      "additionalProperties": {
        "description": "",
        "properties": {
          "amount_off": {
            "description": "Amount (in the `currency` specified) that will be taken off the subtotal of any invoices for this customer.",
            "type": "integer"
          }
        },
        "required": [
          "amount_off"
        ],
        "title": "CouponCurrencyOption",
        "type": "object",
        "x-expandableFields": []
      },
      "description": "Coupons defined in each available currency option. Each key must be a three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) and a [supported currency](https://stripe.com/docs/currencies).",
      "type": "object"
    },
    "duration": {
      "description": "One of `forever`, `once`, or `repeating`. Describes how long a customer who applies this coupon will get the discount.",
      "enum": [
        "forever",
        "once",
        "repeating"
      ],
      "type": "string",
      "x-stripeBypassValidation": true
    },
    "duration_in_months": {
      "description": "If `duration` is `repeating`, the number of months the coupon applies. Null if coupon `duration` is `forever` or `once`.",
      "nullable": true,
      "type": "integer"
    },
    "id": {
      "description": "Unique identifier for the object.",
      "maxLength": 5000,
      "type": "string"
    },
    "livemode": {
      "description": "Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.",
      "type": "boolean"
    },
    "max_redemptions": {
      "description": "Maximum number of times this coupon can be redeemed, in total, across all customers, before it is no longer valid.",
      "nullable": true,
      "type": "integer"
    },
    "metadata": {
      "additionalProperties": {
        "maxLength": 500,
        "type": "string"
      },
      "description": "Set of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.",
      "nullable": true,
      "type": "object"
    },
    "name": {
      "description": "Name of the coupon displayed to customers on for instance invoices or receipts.",
      "maxLength": 5000,
      "nullable": true,
      "type": "string"
    },
    "object": {
      "description": "String representing the object's type. Objects of the same type share the same value.",
      "enum": [
        "coupon"
      ],
      "type": "string"
    },
    "percent_off": {
      "description": "Percent that will be taken off the subtotal of any invoices for this customer for the duration of the coupon. For example, a coupon with percent_off of 50 will make a $ (or local equivalent)100 invoice $ (or local equivalent)50 instead.",
      "nullable": true,
      "type": "number"
    },
    "redeem_by": {
      "description": "Date after which the coupon can no longer be redeemed.",
      "format": "unix-time",
      "nullable": true,
      "type": "integer"
    },
    "times_redeemed": {
      "description": "Number of times this coupon has been applied to a customer.",
      "type": "integer"
    },
    "valid": {
      "description": "Taking account of the above properties, whether this coupon can still be applied to a customer.",
      "type": "boolean"
    }
  },
  "required": [
    "created",
    "duration",
    "id",
    "livemode",
    "object",
    "times_redeemed",
    "valid"
  ],
  "title": "Coupon",
  "type": "object",
  "x-expandableFields": [
    "applies_to",
    "currency_options"
  ],
  "x-resourceId": "coupon"
}

Usage

from ocp_agent import OCPAgent

agent = OCPAgent()
await agent.register_api('stripe')

# Call this tool
result = await agent.call_tool('postCoupons', {
    # Add required parameters here
})