{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/mindbody/refs/heads/main/json-schema/public-api-v6-contract-schema.json", "title": "Contract", "description": "Implementation of the 'Contract' model.", "type": "object", "properties": { "Id": { "type": "integer", "format": "int32", "description": "The contract\u2019s ID at the subscriber\u2019s business.", "example": 123456 }, "Name": { "type": "string", "description": "The name of the contract.", "example": "Sunset Yoga Studio" }, "Description": { "type": "string", "description": "A description of the contract.", "example": "Example note for Mindbody Public API." }, "AssignsMembershipId": { "type": "integer", "format": "int32", "description": "The ID of the membership that was assigned to the client when the client signed up for a contract.", "example": 123456 }, "AssignsMembershipName": { "type": "string", "description": "The name of the membership that was assigned to the client when the client signed up for this contract.", "example": "example-value" }, "SoldOnline": { "type": "boolean", "description": "When `true`, indicates that this membership is intended to be shown to clients in client experiences.
When `false`, this contract should only be shown to staff members.", "example": true }, "ContractItems": { "type": "array", "items": { "$ref": "#/components/schemas/ContractItem" }, "description": "Contains information about the items in the contract.", "example": [ {} ] }, "IntroOffer": { "type": "string", "description": "Defines whether this contract is treated as an introductory offer. If this is an introductory offer, then clients are always charged a set number of times rather than month to month, using their AutoPays. Possible values are: * None * NewConsumer * NewAndReturningConsumer", "example": "example-value" }, "AutopaySchedule": { "$ref": "#/components/schemas/AutopaySchedule", "description": "Contains information about the AutoPay schedule. This parameter is null if `AutopayTriggerType` has a value of `PricingOptionRunsOutOrExpires`." }, "NumberOfAutopays": { "type": "integer", "format": "int32", "description": "The number of times that the AutoPay is to be run. This value is null if `FrequencyType` is `MonthToMonth`.", "example": 1 }, "AutopayTriggerType": { "type": "string", "description": "Defines whether the AutoPay, if applicable to this contract, runs on a set schedule or when the pricing option runs out or expires. Possible values are: * OnSetSchedule * PricingOptionRunsOutOrExpires", "example": "example-value" }, "ActionUponCompletionOfAutopays": { "type": "string", "description": "The renewal action to be taken when this AutoPay is completed. Possible values are: * ContractExpires * ContractAutomaticallyRenews", "example": "example-value" }, "ClientsChargedOn": { "type": "string", "description": "The value that indicates when clients are charged. Possible values are: * OnSaleDate * FirstOfTheMonth * FifteenthOfTheMonth * LastDayOfTheMonth * FirstOrFifteenthOfTheMonth * FirstOrSixteenthOfTheMonth * FifteenthOrEndOfTheMonth * SpecificDate", "example": "example-value" }, "ClientsChargedOnSpecificDate": { "type": "string", "format": "date-time", "description": "If `ClientsChargedOn` is defined as a specific date, this property holds the value of that date. Otherwise, this property is null.", "example": "2026-05-28T14:30:00Z" }, "DiscountAmount": { "type": "number", "format": "double", "description": "The calculated discount applied to the items in this contract.", "example": 49.99 }, "DepositAmount": { "type": "number", "format": "double", "description": "The amount of the deposit required for this contract.", "example": 49.99 }, "FirstAutopayFree": { "type": "boolean", "description": "When `true`, indicates that the first payment for the AutoPay is free.", "example": true }, "LastAutopayFree": { "type": "boolean", "description": "When `true`, indicates that the last payment for the AutoPay is free.", "example": true }, "ClientTerminateOnline": { "type": "boolean", "description": "When `true`, indicates that the client can terminate this contract on the Internet.", "example": true }, "MembershipTypeRestrictions": { "type": "array", "items": { "$ref": "#/components/schemas/MembershipTypeRestriction" }, "description": "Contains information about the memberships that can purchase this contract. If null, then no membership restrictions exist, and anyone can purchase the contract.", "example": [ {} ] }, "LocationPurchaseRestrictionIds": { "type": "array", "items": { "type": "integer", "format": "int32" }, "description": "The IDs of the locations where this contract may be sold. If there are no restrictions, this value is null.", "example": [ 1 ] }, "LocationPurchaseRestrictionNames": { "type": "array", "items": { "type": "string" }, "description": "Location names where the contract may be purchased. If this value is null, there are no restrictions.", "example": [ "example-value" ] }, "AgreementTerms": { "type": "string", "description": "Business-defined terms and conditions for the contract.", "example": "example-value" }, "RequiresElectronicConfirmation": { "type": "boolean", "description": "When `true`, clients who purchase the contract are prompted to agree to the terms of the contract the next time that they log in.", "example": true }, "AutopayEnabled": { "type": "boolean", "description": "When `true`, this contract establishes an AutoPay on the client\u2019s account.", "example": true }, "FirstPaymentAmountSubtotal": { "type": "number", "format": "double", "description": "The subtotal of the amount that the client is to be charged when signing up for the contract.", "example": 49.99 }, "FirstPaymentAmountTax": { "type": "number", "format": "double", "description": "The amount of tax that the client is to be charged when signing up for the contract.", "example": 49.99 }, "FirstPaymentAmountTotal": { "type": "number", "format": "double", "description": "The total amount that the client is to be charged when signing up for the contract.", "example": 49.99 }, "RecurringPaymentAmountSubtotal": { "type": "number", "format": "double", "description": "The subtotal amount that the client is to be charged on an ongoing basis.", "example": 49.99 }, "RecurringPaymentAmountTax": { "type": "number", "format": "double", "description": "The amount of tax the client is to be charged on an ongoing basis.", "example": 49.99 }, "RecurringPaymentAmountTotal": { "type": "number", "format": "double", "description": "The total amount that the client is to be charged on an ongoing basis.", "example": 49.99 }, "TotalContractAmountSubtotal": { "type": "number", "format": "double", "description": "The subtotal amount that the client is to be charged over the lifespan of the contract.", "example": 49.99 }, "TotalContractAmountTax": { "type": "number", "format": "double", "description": "The total amount of tax the client is to be charged over the lifespan of the contract.", "example": 49.99 }, "TotalContractAmountTotal": { "type": "number", "format": "double", "description": "The total amount the client is to be charged over the lifespan of the contract.", "example": 49.99 }, "PromoPaymentAmountSubtotal": { "type": "number", "format": "double", "description": "Subtotal promotional period", "example": 49.99 }, "PromoPaymentAmountTax": { "type": "number", "format": "double", "description": "Taxes of promotional period", "example": 49.99 }, "PromoPaymentAmountTotal": { "type": "number", "format": "double", "description": "Total of promotional period", "example": 49.99 }, "NumberOfPromoAutopays": { "type": "integer", "format": "int32", "description": "Number of times that the AutoPay runs under the promotional period", "example": 1 } } }