{
  "service": "recurly",
  "displayName": "Recurly",
  "categories": [
    "Finance"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "Private API Key",
      "placeholder": "RECURLY_PRIVATE_API_KEY",
      "description": "Recurly private API key used as the HTTP Basic Auth username with an empty password. Create or view keys on the Recurly API Credentials page: https://app.recurly.com/go/developer/api_keys."
    }
  ],
  "homepageUrl": "https://recurly.com",
  "actions": [
    {
      "id": "recurly.create_account",
      "service": "recurly",
      "name": "create_account",
      "description": "Create a Recurly account from JSON-friendly account fields.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "minLength": 1,
            "maxLength": 50,
            "description": "The unique account code. This cannot be changed after creation."
          },
          "username": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "A secondary value for the account."
          },
          "email": {
            "type": "string",
            "description": "The email address used for account communication.",
            "format": "email"
          },
          "firstName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "The account first name."
          },
          "lastName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "The account last name."
          },
          "company": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "The account company name."
          },
          "vatNumber": {
            "type": "string",
            "minLength": 1,
            "maxLength": 20,
            "description": "The VAT number of the account."
          },
          "taxExempt": {
            "type": "boolean",
            "description": "Whether the account should be exempt from tax."
          },
          "preferredLocale": {
            "type": "string",
            "minLength": 1,
            "description": "The locale Recurly should use for account emails."
          },
          "preferredTimeZone": {
            "type": "string",
            "minLength": 1,
            "description": "The IANA time zone name Recurly should use for account emails."
          },
          "address": {
            "type": "object",
            "properties": {
              "street1": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "The first street address line."
              },
              "street2": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "The second street address line."
              },
              "city": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "The address city."
              },
              "region": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "The address region or state."
              },
              "postalCode": {
                "type": "string",
                "minLength": 1,
                "maxLength": 20,
                "description": "The postal code."
              },
              "country": {
                "type": "string",
                "minLength": 2,
                "maxLength": 2,
                "description": "The ISO 3166-1 alpha-2 country code."
              },
              "phone": {
                "type": "string",
                "minLength": 1,
                "maxLength": 30,
                "description": "The address phone number."
              }
            },
            "additionalProperties": false,
            "description": "A basic Recurly address object."
          }
        },
        "additionalProperties": false,
        "required": [
          "code"
        ],
        "description": "Fields for creating a Recurly account."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "account": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 13,
                "description": "A Recurly resource ID."
              },
              "code": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The account code."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "email": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The account email address when returned by Recurly."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "firstName": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The account first name when returned by Recurly."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "lastName": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The account last name when returned by Recurly."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "company": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The account company name when returned by Recurly."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "state": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Recurly account state."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "hasLiveSubscription": {
                "anyOf": [
                  {
                    "type": "boolean",
                    "description": "Whether the account has an active, canceled, future, or paused subscription."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "hasPastDueInvoice": {
                "anyOf": [
                  {
                    "type": "boolean",
                    "description": "Whether the account has a past-due invoice."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the account was created."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "updatedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the account was last changed."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw account object returned by Recurly."
              }
            },
            "additionalProperties": false,
            "description": "A normalized Recurly account."
          }
        },
        "additionalProperties": false,
        "description": "The normalized created Recurly account."
      }
    },
    {
      "id": "recurly.create_plan",
      "service": "recurly",
      "name": "create_plan",
      "description": "Create a fixed-price Recurly plan with one or more currencies.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "minLength": 1,
            "maxLength": 50,
            "description": "The unique plan code."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "The plan name."
          },
          "currencies": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "currency": {
                  "type": "string",
                  "minLength": 3,
                  "maxLength": 3,
                  "description": "The 3-letter ISO 4217 currency code."
                },
                "unitAmount": {
                  "type": "number",
                  "description": "The unit price for this currency."
                }
              },
              "additionalProperties": false,
              "description": "A fixed-price Recurly plan currency."
            },
            "description": "The fixed-price currencies for this plan.",
            "minItems": 1
          },
          "intervalUnit": {
            "type": "string",
            "enum": [
              "days",
              "months"
            ],
            "description": "Unit for the plan billing interval."
          },
          "intervalLength": {
            "type": "integer",
            "minimum": 1,
            "description": "The number of interval units in each billing period."
          },
          "trialUnit": {
            "type": "string",
            "enum": [
              "days",
              "months"
            ],
            "description": "Unit for the trial interval."
          },
          "trialLength": {
            "type": "integer",
            "minimum": 0,
            "description": "The number of trial units."
          },
          "description": {
            "type": "string",
            "minLength": 1,
            "description": "The plan description."
          }
        },
        "additionalProperties": false,
        "required": [
          "code",
          "name",
          "currencies"
        ],
        "description": "Fields for creating a fixed-price Recurly plan."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "plan": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 13,
                "description": "A Recurly resource ID."
              },
              "code": {
                "type": "string",
                "minLength": 1,
                "description": "The plan code."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "The plan name."
              },
              "state": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Recurly plan state."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "pricingModel": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Recurly plan pricing model."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "intervalUnit": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The plan billing interval unit."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "intervalLength": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The number of interval units in each billing period."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the plan was created."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "updatedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the plan was last changed."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw plan object returned by Recurly."
              }
            },
            "additionalProperties": false,
            "description": "A normalized Recurly plan."
          }
        },
        "additionalProperties": false,
        "description": "The normalized created Recurly plan."
      }
    },
    {
      "id": "recurly.create_subscription",
      "service": "recurly",
      "name": "create_subscription",
      "description": "Create a Recurly subscription for an existing account and plan.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "planCode": {
            "type": "string",
            "minLength": 1,
            "maxLength": 50,
            "description": "The code of the Recurly plan to subscribe to."
          },
          "currency": {
            "type": "string",
            "minLength": 3,
            "maxLength": 3,
            "description": "The 3-letter ISO 4217 currency code."
          },
          "accountCode": {
            "type": "string",
            "minLength": 1,
            "maxLength": 50,
            "description": "The existing Recurly account code."
          },
          "quantity": {
            "type": "integer",
            "minimum": 1,
            "description": "The subscription quantity."
          },
          "unitAmount": {
            "type": "number",
            "description": "The subscription unit amount."
          },
          "collectionMethod": {
            "type": "string",
            "enum": [
              "automatic",
              "manual"
            ],
            "description": "The collection method for the subscription."
          },
          "poNumber": {
            "type": "string",
            "minLength": 1,
            "maxLength": 50,
            "description": "The purchase order number for manual invoicing."
          }
        },
        "additionalProperties": false,
        "required": [
          "planCode",
          "currency",
          "accountCode"
        ],
        "description": "Fields for creating a Recurly subscription for an existing account."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "subscription": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 13,
                "description": "A Recurly resource ID."
              },
              "uuid": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The subscription UUID."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "state": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Recurly subscription state."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "accountId": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The ID of the account attached to the subscription."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "accountCode": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The code of the account attached to the subscription."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "planId": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The ID of the plan attached to the subscription."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "planCode": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The code of the plan attached to the subscription."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "currency": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The subscription currency code."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "unitAmount": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "The subscription unit price."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "quantity": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The subscription quantity."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "currentPeriodEndsAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the current billing period ends."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the subscription was created."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "updatedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the subscription was last changed."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw subscription object returned by Recurly."
              }
            },
            "additionalProperties": false,
            "description": "A normalized Recurly subscription."
          }
        },
        "additionalProperties": false,
        "description": "The normalized created Recurly subscription."
      }
    },
    {
      "id": "recurly.get_account",
      "service": "recurly",
      "name": "get_account",
      "description": "Retrieve one Recurly account by ID or code.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "minLength": 1,
            "description": "The Recurly account ID or code."
          }
        },
        "additionalProperties": false,
        "description": "Path parameters for retrieving a Recurly account."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "account": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 13,
                "description": "A Recurly resource ID."
              },
              "code": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The account code."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "email": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The account email address when returned by Recurly."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "firstName": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The account first name when returned by Recurly."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "lastName": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The account last name when returned by Recurly."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "company": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The account company name when returned by Recurly."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "state": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Recurly account state."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "hasLiveSubscription": {
                "anyOf": [
                  {
                    "type": "boolean",
                    "description": "Whether the account has an active, canceled, future, or paused subscription."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "hasPastDueInvoice": {
                "anyOf": [
                  {
                    "type": "boolean",
                    "description": "Whether the account has a past-due invoice."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the account was created."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "updatedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the account was last changed."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw account object returned by Recurly."
              }
            },
            "additionalProperties": false,
            "description": "A normalized Recurly account."
          }
        },
        "additionalProperties": false,
        "description": "The normalized Recurly account response."
      }
    },
    {
      "id": "recurly.get_plan",
      "service": "recurly",
      "name": "get_plan",
      "description": "Retrieve one Recurly plan by ID or code.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "planId": {
            "type": "string",
            "minLength": 1,
            "description": "The Recurly plan ID or code."
          }
        },
        "additionalProperties": false,
        "description": "Path parameters for retrieving a Recurly plan."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "plan": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 13,
                "description": "A Recurly resource ID."
              },
              "code": {
                "type": "string",
                "minLength": 1,
                "description": "The plan code."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "The plan name."
              },
              "state": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Recurly plan state."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "pricingModel": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Recurly plan pricing model."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "intervalUnit": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The plan billing interval unit."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "intervalLength": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The number of interval units in each billing period."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the plan was created."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "updatedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the plan was last changed."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw plan object returned by Recurly."
              }
            },
            "additionalProperties": false,
            "description": "A normalized Recurly plan."
          }
        },
        "additionalProperties": false,
        "description": "The normalized Recurly plan response."
      }
    },
    {
      "id": "recurly.get_subscription",
      "service": "recurly",
      "name": "get_subscription",
      "description": "Retrieve one Recurly subscription by ID or UUID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "subscriptionId": {
            "type": "string",
            "minLength": 1,
            "description": "The Recurly subscription ID or UUID."
          }
        },
        "additionalProperties": false,
        "description": "Path parameters for retrieving a Recurly subscription."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "subscription": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 13,
                "description": "A Recurly resource ID."
              },
              "uuid": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The subscription UUID."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "state": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Recurly subscription state."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "accountId": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The ID of the account attached to the subscription."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "accountCode": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The code of the account attached to the subscription."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "planId": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The ID of the plan attached to the subscription."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "planCode": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The code of the plan attached to the subscription."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "currency": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The subscription currency code."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "unitAmount": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "The subscription unit price."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "quantity": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The subscription quantity."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "currentPeriodEndsAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the current billing period ends."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the subscription was created."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "updatedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the subscription was last changed."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw subscription object returned by Recurly."
              }
            },
            "additionalProperties": false,
            "description": "A normalized Recurly subscription."
          }
        },
        "additionalProperties": false,
        "description": "The normalized Recurly subscription response."
      }
    },
    {
      "id": "recurly.list_accounts",
      "service": "recurly",
      "name": "list_accounts",
      "description": "List Recurly accounts with pagination and common filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A Recurly resource ID."
            },
            "description": "Recurly resource IDs to fetch in one list call. Do not combine ids with other filters.",
            "minItems": 1,
            "maxItems": 200
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "The maximum number of Recurly records to return."
          },
          "order": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "The Recurly sort order."
          },
          "sort": {
            "type": "string",
            "enum": [
              "created_at",
              "updated_at"
            ],
            "description": "The Recurly timestamp field used for sorting."
          },
          "beginTime": {
            "type": "string",
            "description": "Inclusively filter records by this ISO 8601 begin time when sorting by created_at or updated_at.",
            "format": "date-time"
          },
          "endTime": {
            "type": "string",
            "description": "Inclusively filter records by this ISO 8601 end time when sorting by created_at or updated_at.",
            "format": "date-time"
          },
          "nextPath": {
            "type": "string",
            "minLength": 1,
            "description": "The next path returned by a previous Recurly list response, such as /accounts?cursor=..."
          },
          "email": {
            "type": "string",
            "description": "Filter for accounts with this exact email address."
          },
          "subscriber": {
            "type": "boolean",
            "description": "Filter for accounts with or without an active, canceled, or future subscription."
          },
          "pastDue": {
            "const": true,
            "type": "boolean",
            "description": "Filter for accounts with an invoice in the past_due state."
          }
        },
        "additionalProperties": false,
        "description": "Query parameters for listing Recurly accounts."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "accounts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 13,
                  "description": "A Recurly resource ID."
                },
                "code": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The account code."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "email": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The account email address when returned by Recurly."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "firstName": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The account first name when returned by Recurly."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "lastName": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The account last name when returned by Recurly."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "company": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The account company name when returned by Recurly."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "state": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The Recurly account state."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "hasLiveSubscription": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether the account has an active, canceled, future, or paused subscription."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "hasPastDueInvoice": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether the account has a past-due invoice."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "createdAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "When the account was created."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "updatedAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "When the account was last changed."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw account object returned by Recurly."
                }
              },
              "additionalProperties": false,
              "description": "A normalized Recurly account."
            },
            "description": "Accounts returned by Recurly."
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether Recurly has more records after this page."
          },
          "next": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Recurly path for the next page when present."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "The normalized Recurly account list response."
      }
    },
    {
      "id": "recurly.list_plans",
      "service": "recurly",
      "name": "list_plans",
      "description": "List Recurly plans with pagination and common filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A Recurly resource ID."
            },
            "description": "Recurly resource IDs to fetch in one list call. Do not combine ids with other filters.",
            "minItems": 1,
            "maxItems": 200
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "The maximum number of Recurly records to return."
          },
          "order": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "The Recurly sort order."
          },
          "sort": {
            "type": "string",
            "enum": [
              "created_at",
              "updated_at"
            ],
            "description": "The Recurly timestamp field used for sorting."
          },
          "beginTime": {
            "type": "string",
            "description": "Inclusively filter records by this ISO 8601 begin time when sorting by created_at or updated_at.",
            "format": "date-time"
          },
          "endTime": {
            "type": "string",
            "description": "Inclusively filter records by this ISO 8601 end time when sorting by created_at or updated_at.",
            "format": "date-time"
          },
          "nextPath": {
            "type": "string",
            "minLength": 1,
            "description": "The next path returned by a previous Recurly list response, such as /accounts?cursor=..."
          },
          "state": {
            "type": "string",
            "enum": [
              "active",
              "inactive"
            ],
            "description": "Filter plans by state."
          }
        },
        "additionalProperties": false,
        "description": "Query parameters for listing Recurly plans."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "plans": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 13,
                  "description": "A Recurly resource ID."
                },
                "code": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The plan code."
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The plan name."
                },
                "state": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The Recurly plan state."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "pricingModel": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The Recurly plan pricing model."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "intervalUnit": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The plan billing interval unit."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "intervalLength": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The number of interval units in each billing period."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "createdAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "When the plan was created."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "updatedAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "When the plan was last changed."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw plan object returned by Recurly."
                }
              },
              "additionalProperties": false,
              "description": "A normalized Recurly plan."
            },
            "description": "Plans returned by Recurly."
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether Recurly has more records after this page."
          },
          "next": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Recurly path for the next page when present."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "The normalized Recurly plan list response."
      }
    },
    {
      "id": "recurly.list_subscriptions",
      "service": "recurly",
      "name": "list_subscriptions",
      "description": "List Recurly subscriptions with pagination and common filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A Recurly resource ID."
            },
            "description": "Recurly resource IDs to fetch in one list call. Do not combine ids with other filters.",
            "minItems": 1,
            "maxItems": 200
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "The maximum number of Recurly records to return."
          },
          "order": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "The Recurly sort order."
          },
          "sort": {
            "type": "string",
            "enum": [
              "created_at",
              "updated_at"
            ],
            "description": "The Recurly timestamp field used for sorting."
          },
          "beginTime": {
            "type": "string",
            "description": "Inclusively filter records by this ISO 8601 begin time when sorting by created_at or updated_at.",
            "format": "date-time"
          },
          "endTime": {
            "type": "string",
            "description": "Inclusively filter records by this ISO 8601 end time when sorting by created_at or updated_at.",
            "format": "date-time"
          },
          "nextPath": {
            "type": "string",
            "minLength": 1,
            "description": "The next path returned by a previous Recurly list response, such as /accounts?cursor=..."
          },
          "state": {
            "type": "string",
            "enum": [
              "active",
              "canceled",
              "expired",
              "future",
              "in_trial",
              "live"
            ],
            "description": "Filter subscriptions by state."
          }
        },
        "additionalProperties": false,
        "description": "Query parameters for listing Recurly subscriptions."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "subscriptions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 13,
                  "description": "A Recurly resource ID."
                },
                "uuid": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The subscription UUID."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "state": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The Recurly subscription state."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "accountId": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The ID of the account attached to the subscription."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "accountCode": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The code of the account attached to the subscription."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "planId": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The ID of the plan attached to the subscription."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "planCode": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The code of the plan attached to the subscription."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "currency": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The subscription currency code."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "unitAmount": {
                  "anyOf": [
                    {
                      "type": "number",
                      "description": "The subscription unit price."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "quantity": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The subscription quantity."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "currentPeriodEndsAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "When the current billing period ends."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "createdAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "When the subscription was created."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "updatedAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "When the subscription was last changed."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw subscription object returned by Recurly."
                }
              },
              "additionalProperties": false,
              "description": "A normalized Recurly subscription."
            },
            "description": "Subscriptions returned by Recurly."
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether Recurly has more records after this page."
          },
          "next": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Recurly path for the next page when present."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "The normalized Recurly subscription list response."
      }
    },
    {
      "id": "recurly.update_account",
      "service": "recurly",
      "name": "update_account",
      "description": "Update basic profile fields on a Recurly account.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "minLength": 1,
            "description": "The Recurly account ID or code."
          },
          "username": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "A secondary value for the account."
          },
          "email": {
            "type": "string",
            "description": "The email address used for account communication.",
            "format": "email"
          },
          "firstName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "The account first name."
          },
          "lastName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "The account last name."
          },
          "company": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "The account company name."
          },
          "vatNumber": {
            "type": "string",
            "minLength": 1,
            "maxLength": 20,
            "description": "The VAT number of the account."
          },
          "taxExempt": {
            "type": "boolean",
            "description": "Whether the account should be exempt from tax."
          },
          "preferredLocale": {
            "type": "string",
            "minLength": 1,
            "description": "The locale Recurly should use for account emails."
          },
          "preferredTimeZone": {
            "type": "string",
            "minLength": 1,
            "description": "The IANA time zone name Recurly should use for account emails."
          },
          "address": {
            "type": "object",
            "properties": {
              "street1": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "The first street address line."
              },
              "street2": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "The second street address line."
              },
              "city": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "The address city."
              },
              "region": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "The address region or state."
              },
              "postalCode": {
                "type": "string",
                "minLength": 1,
                "maxLength": 20,
                "description": "The postal code."
              },
              "country": {
                "type": "string",
                "minLength": 2,
                "maxLength": 2,
                "description": "The ISO 3166-1 alpha-2 country code."
              },
              "phone": {
                "type": "string",
                "minLength": 1,
                "maxLength": 30,
                "description": "The address phone number."
              }
            },
            "additionalProperties": false,
            "description": "A basic Recurly address object."
          }
        },
        "additionalProperties": false,
        "required": [
          "accountId"
        ],
        "description": "Fields for updating a Recurly account."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "account": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 13,
                "description": "A Recurly resource ID."
              },
              "code": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The account code."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "email": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The account email address when returned by Recurly."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "firstName": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The account first name when returned by Recurly."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "lastName": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The account last name when returned by Recurly."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "company": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The account company name when returned by Recurly."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "state": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Recurly account state."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "hasLiveSubscription": {
                "anyOf": [
                  {
                    "type": "boolean",
                    "description": "Whether the account has an active, canceled, future, or paused subscription."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "hasPastDueInvoice": {
                "anyOf": [
                  {
                    "type": "boolean",
                    "description": "Whether the account has a past-due invoice."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the account was created."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "updatedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the account was last changed."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw account object returned by Recurly."
              }
            },
            "additionalProperties": false,
            "description": "A normalized Recurly account."
          }
        },
        "additionalProperties": false,
        "description": "The normalized updated Recurly account."
      }
    }
  ]
}
