# Sidebar

Sidebar modules showcase additional information from the store. Modules are enabled in the store's configuration/The following modules are supported:

| Type               | Notes                                   |
| ------------------ | --------------------------------------- |
| `top_customer`     | Shows the top customer of the store.    |
| `textbox`          | Renders custom HTML on the sidebar      |
| `recent_payments`  | Shows information of most recent payor  |
| `featured_package` | Showcases a particular package          |
| `giftcard_balance` | Shows the user's giftcard balance       |
| `server_status`    | Online status of a store's server       |
| `payment_goal`     | Progress to completing a payment goal   |
| `community_goal`   | Progress to completing a community goal |

Use the following endpoint to get all enabled sidebar module data:

## Retrieves the available sidebar modules.

> Retrieves the available sidebar modules configured for the store.

```json
{"openapi":"3.1.0","info":{"title":"Tebex Headless API","version":"1.2.0"},"tags":[{"name":"Headless","description":"Endpoints which interact with a basket requiring the basket ID"}],"servers":[{"url":"https://headless.tebex.io/api"}],"paths":{"/accounts/{token}/sidebar":{"get":{"tags":["Headless"],"operationId":"getSidebar","summary":"Retrieves the available sidebar modules.","parameters":[{"in":"path","name":"token","required":true,"schema":{"type":"string"},"description":"The webstore identifier."}],"description":"Retrieves the available sidebar modules configured for the store.","responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModulesResponse"}}}}}}}},"components":{"schemas":{"ModulesResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Module"}}}},"Module":{"oneOf":[{"$ref":"#/components/schemas/TopCustomerModule"},{"$ref":"#/components/schemas/TextboxModule"},{"$ref":"#/components/schemas/RecentPaymentsModule"},{"$ref":"#/components/schemas/FeaturedPackageModule"},{"$ref":"#/components/schemas/GiftcardBalanceModule"},{"$ref":"#/components/schemas/ServerStatusModule"},{"$ref":"#/components/schemas/PaymentGoalModule"},{"$ref":"#/components/schemas/CommunityGoalModule"}],"discriminator":{"propertyName":"type","mapping":{"top_customer":"#/components/schemas/TopCustomerModule","textbox":"#/components/schemas/TextboxModule","recent_payments":"#/components/schemas/RecentPaymentsModule","featured_package":"#/components/schemas/FeaturedPackageModule","giftcard_balance":"#/components/schemas/GiftcardBalanceModule","server_status":"#/components/schemas/ServerStatusModule","payment_goal":"#/components/schemas/PaymentGoalModule","community_goal":"#/components/schemas/CommunityGoalModule"}}},"TopCustomerModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"top_customer"},"data":{"$ref":"#/components/schemas/TopCustomerData"}},"required":["data"]}]},"ModuleBase":{"type":"object","required":["id","type","start_time","data"],"properties":{"id":{"type":"integer","format":"int64"},"type":{"type":"string","description":"Discriminator for module kind."},"start_time":{"type":"string","format":"date-time"},"end_time":{"type":["null","string"],"format":"date-time","description":"Nullable; when null the module is ongoing."},"data":{"type":"object","description":"Type-specific payload."}}},"TopCustomerData":{"type":"object","required":["header","username","username_id"],"properties":{"header":{"type":"string"},"username":{"type":"string"},"username_id":{"type":"string","description":"User identifier."},"total":{"type":"number","description":"Optional, present depending on module configuration."}}},"TextboxModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"textbox"},"data":{"$ref":"#/components/schemas/TextboxData"}},"required":["data"]}]},"TextboxData":{"type":"object","required":["header","text"],"properties":{"header":{"type":"string"},"text":{"type":"string","description":"HTML supported."}}},"RecentPaymentsModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"recent_payments"},"data":{"$ref":"#/components/schemas/RecentPaymentsData"}},"required":["data"]}]},"RecentPaymentsData":{"type":"object","required":["header","payments"],"properties":{"header":{"type":"string"},"payments":{"type":"array","items":{"$ref":"#/components/schemas/RecentPayment"}}}},"RecentPayment":{"type":"object","required":["username","username_id","package"],"properties":{"username":{"type":"string"},"username_id":{"type":"string"},"package":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}},"created_at":{"type":["null","string"],"format":"date-time","description":"Optional, present depending on module configuration."},"price":{"type":["null","number"],"description":"Optional, present depending on module configuration."},"currency":{"type":["null","string"],"description":"Optional, present depending on module configuration."}}},"FeaturedPackageModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"featured_package"},"data":{"$ref":"#/components/schemas/FeaturedPackageData"}},"required":["data"]}]},"FeaturedPackageData":{"type":"object","required":["header","package"],"properties":{"header":{"type":"string"},"package":{"$ref":"#/components/schemas/Package"}}},"Package":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"image":{"type":"string","nullable":true},"type":{"type":"string"},"category":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}},"base_price":{"type":"number","format":"float"},"sales_tax":{"type":"number","format":"float"},"total_price":{"type":"number","format":"float"},"currency":{"type":"string"},"prorate_price":{"type":"number","format":"float","description":"If this package is part of a tiered category, this is the difference on upgrade pricing from the current active tier.","nullable":true},"discount":{"type":"number","format":"float"},"disable_quantity":{"type":"boolean"},"disable_gifting":{"type":"boolean"},"expiration_date":{"type":"string","nullable":true,"format":"date-time"},"media":{"type":"array","items":{"$ref":"#/components/schemas/PackageMedia"}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"PackageMedia":{"properties":{"type":{"type":"string","enum":["video","image"]},"name":{"type":"string","description":"A file name for the media, if applicable.","nullable":true},"url":{"type":"string","description":"The URL of the package media."},"featured":{"type":"boolean","description":"True if this media should be featured more prominently than others."}}},"GiftcardBalanceModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"giftcard_balance"},"data":{"$ref":"#/components/schemas/GiftcardBalanceData"}},"required":["data"]}]},"GiftcardBalanceData":{"type":"object","required":["header"],"properties":{"header":{"type":"string"}}},"ServerStatusModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"server_status"},"data":{"$ref":"#/components/schemas/ServerStatusData"}},"required":["data"]}]},"ServerStatusData":{"type":"object","required":["header","hostname","port","online","players"],"properties":{"header":{"type":"string"},"hostname":{"type":"string"},"port":{"type":"integer"},"online":{"type":"boolean"},"players":{"description":"Nullable object; null when server is offline.","oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Players"}]}}},"Players":{"type":"object","required":["online","max"],"properties":{"online":{"type":"integer"},"max":{"type":"integer"}}},"PaymentGoalModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"payment_goal"},"data":{"$ref":"#/components/schemas/PaymentGoalData"}},"required":["data"]}]},"PaymentGoalData":{"type":"object","required":["header","percentage","bar_style","bar_animated"],"properties":{"header":{"type":"string"},"percentage":{"type":"number","minimum":0,"maximum":100},"bar_style":{"type":"string","enum":["normal","striped"]},"bar_animated":{"type":"boolean"},"total":{"type":["null","number"],"description":"Optional, present depending on module configuration."},"target":{"type":["null","number"],"description":"Optional, present depending on module configuration."}}},"CommunityGoalModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"community_goal"},"data":{"$ref":"#/components/schemas/CommunityGoalData"}},"required":["data"]}]},"CommunityGoalData":{"type":"object","required":["header","bar_style","bar_animated","percentage"],"properties":{"header":{"type":"string"},"bar_style":{"type":"string","enum":["normal","striped"]},"bar_animated":{"type":"boolean"},"percentage":{"type":"number","minimum":0,"maximum":100},"total_payments":{"type":["null","number"],"description":"Optional, present depending on module configuration."},"target":{"type":["null","number"],"description":"Optional, present depending on module configuration."},"times_achieved":{"type":["null","integer"],"description":"Optional, present depending on module configuration."}}}}}}
```

## Module Schemas

## The ModuleBase object

```json
{"openapi":"3.1.0","info":{"title":"Tebex Headless API","version":"1.2.0"},"components":{"schemas":{"ModuleBase":{"type":"object","required":["id","type","start_time","data"],"properties":{"id":{"type":"integer","format":"int64"},"type":{"type":"string","description":"Discriminator for module kind."},"start_time":{"type":"string","format":"date-time"},"end_time":{"type":["null","string"],"format":"date-time","description":"Nullable; when null the module is ongoing."},"data":{"type":"object","description":"Type-specific payload."}}}}}}
```

## The ModulesResponse object

```json
{"openapi":"3.1.0","info":{"title":"Tebex Headless API","version":"1.2.0"},"components":{"schemas":{"ModulesResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Module"}}}},"Module":{"oneOf":[{"$ref":"#/components/schemas/TopCustomerModule"},{"$ref":"#/components/schemas/TextboxModule"},{"$ref":"#/components/schemas/RecentPaymentsModule"},{"$ref":"#/components/schemas/FeaturedPackageModule"},{"$ref":"#/components/schemas/GiftcardBalanceModule"},{"$ref":"#/components/schemas/ServerStatusModule"},{"$ref":"#/components/schemas/PaymentGoalModule"},{"$ref":"#/components/schemas/CommunityGoalModule"}],"discriminator":{"propertyName":"type","mapping":{"top_customer":"#/components/schemas/TopCustomerModule","textbox":"#/components/schemas/TextboxModule","recent_payments":"#/components/schemas/RecentPaymentsModule","featured_package":"#/components/schemas/FeaturedPackageModule","giftcard_balance":"#/components/schemas/GiftcardBalanceModule","server_status":"#/components/schemas/ServerStatusModule","payment_goal":"#/components/schemas/PaymentGoalModule","community_goal":"#/components/schemas/CommunityGoalModule"}}},"TopCustomerModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"top_customer"},"data":{"$ref":"#/components/schemas/TopCustomerData"}},"required":["data"]}]},"ModuleBase":{"type":"object","required":["id","type","start_time","data"],"properties":{"id":{"type":"integer","format":"int64"},"type":{"type":"string","description":"Discriminator for module kind."},"start_time":{"type":"string","format":"date-time"},"end_time":{"type":["null","string"],"format":"date-time","description":"Nullable; when null the module is ongoing."},"data":{"type":"object","description":"Type-specific payload."}}},"TopCustomerData":{"type":"object","required":["header","username","username_id"],"properties":{"header":{"type":"string"},"username":{"type":"string"},"username_id":{"type":"string","description":"User identifier."},"total":{"type":"number","description":"Optional, present depending on module configuration."}}},"TextboxModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"textbox"},"data":{"$ref":"#/components/schemas/TextboxData"}},"required":["data"]}]},"TextboxData":{"type":"object","required":["header","text"],"properties":{"header":{"type":"string"},"text":{"type":"string","description":"HTML supported."}}},"RecentPaymentsModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"recent_payments"},"data":{"$ref":"#/components/schemas/RecentPaymentsData"}},"required":["data"]}]},"RecentPaymentsData":{"type":"object","required":["header","payments"],"properties":{"header":{"type":"string"},"payments":{"type":"array","items":{"$ref":"#/components/schemas/RecentPayment"}}}},"RecentPayment":{"type":"object","required":["username","username_id","package"],"properties":{"username":{"type":"string"},"username_id":{"type":"string"},"package":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}},"created_at":{"type":["null","string"],"format":"date-time","description":"Optional, present depending on module configuration."},"price":{"type":["null","number"],"description":"Optional, present depending on module configuration."},"currency":{"type":["null","string"],"description":"Optional, present depending on module configuration."}}},"FeaturedPackageModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"featured_package"},"data":{"$ref":"#/components/schemas/FeaturedPackageData"}},"required":["data"]}]},"FeaturedPackageData":{"type":"object","required":["header","package"],"properties":{"header":{"type":"string"},"package":{"$ref":"#/components/schemas/Package"}}},"Package":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"image":{"type":"string","nullable":true},"type":{"type":"string"},"category":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}},"base_price":{"type":"number","format":"float"},"sales_tax":{"type":"number","format":"float"},"total_price":{"type":"number","format":"float"},"currency":{"type":"string"},"prorate_price":{"type":"number","format":"float","description":"If this package is part of a tiered category, this is the difference on upgrade pricing from the current active tier.","nullable":true},"discount":{"type":"number","format":"float"},"disable_quantity":{"type":"boolean"},"disable_gifting":{"type":"boolean"},"expiration_date":{"type":"string","nullable":true,"format":"date-time"},"media":{"type":"array","items":{"$ref":"#/components/schemas/PackageMedia"}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"PackageMedia":{"properties":{"type":{"type":"string","enum":["video","image"]},"name":{"type":"string","description":"A file name for the media, if applicable.","nullable":true},"url":{"type":"string","description":"The URL of the package media."},"featured":{"type":"boolean","description":"True if this media should be featured more prominently than others."}}},"GiftcardBalanceModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"giftcard_balance"},"data":{"$ref":"#/components/schemas/GiftcardBalanceData"}},"required":["data"]}]},"GiftcardBalanceData":{"type":"object","required":["header"],"properties":{"header":{"type":"string"}}},"ServerStatusModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"server_status"},"data":{"$ref":"#/components/schemas/ServerStatusData"}},"required":["data"]}]},"ServerStatusData":{"type":"object","required":["header","hostname","port","online","players"],"properties":{"header":{"type":"string"},"hostname":{"type":"string"},"port":{"type":"integer"},"online":{"type":"boolean"},"players":{"description":"Nullable object; null when server is offline.","oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Players"}]}}},"Players":{"type":"object","required":["online","max"],"properties":{"online":{"type":"integer"},"max":{"type":"integer"}}},"PaymentGoalModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"payment_goal"},"data":{"$ref":"#/components/schemas/PaymentGoalData"}},"required":["data"]}]},"PaymentGoalData":{"type":"object","required":["header","percentage","bar_style","bar_animated"],"properties":{"header":{"type":"string"},"percentage":{"type":"number","minimum":0,"maximum":100},"bar_style":{"type":"string","enum":["normal","striped"]},"bar_animated":{"type":"boolean"},"total":{"type":["null","number"],"description":"Optional, present depending on module configuration."},"target":{"type":["null","number"],"description":"Optional, present depending on module configuration."}}},"CommunityGoalModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"community_goal"},"data":{"$ref":"#/components/schemas/CommunityGoalData"}},"required":["data"]}]},"CommunityGoalData":{"type":"object","required":["header","bar_style","bar_animated","percentage"],"properties":{"header":{"type":"string"},"bar_style":{"type":"string","enum":["normal","striped"]},"bar_animated":{"type":"boolean"},"percentage":{"type":"number","minimum":0,"maximum":100},"total_payments":{"type":["null","number"],"description":"Optional, present depending on module configuration."},"target":{"type":["null","number"],"description":"Optional, present depending on module configuration."},"times_achieved":{"type":["null","integer"],"description":"Optional, present depending on module configuration."}}}}}}
```

## The Module object

```json
{"openapi":"3.1.0","info":{"title":"Tebex Headless API","version":"1.2.0"},"components":{"schemas":{"Module":{"oneOf":[{"$ref":"#/components/schemas/TopCustomerModule"},{"$ref":"#/components/schemas/TextboxModule"},{"$ref":"#/components/schemas/RecentPaymentsModule"},{"$ref":"#/components/schemas/FeaturedPackageModule"},{"$ref":"#/components/schemas/GiftcardBalanceModule"},{"$ref":"#/components/schemas/ServerStatusModule"},{"$ref":"#/components/schemas/PaymentGoalModule"},{"$ref":"#/components/schemas/CommunityGoalModule"}],"discriminator":{"propertyName":"type","mapping":{"top_customer":"#/components/schemas/TopCustomerModule","textbox":"#/components/schemas/TextboxModule","recent_payments":"#/components/schemas/RecentPaymentsModule","featured_package":"#/components/schemas/FeaturedPackageModule","giftcard_balance":"#/components/schemas/GiftcardBalanceModule","server_status":"#/components/schemas/ServerStatusModule","payment_goal":"#/components/schemas/PaymentGoalModule","community_goal":"#/components/schemas/CommunityGoalModule"}}},"TopCustomerModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"top_customer"},"data":{"$ref":"#/components/schemas/TopCustomerData"}},"required":["data"]}]},"ModuleBase":{"type":"object","required":["id","type","start_time","data"],"properties":{"id":{"type":"integer","format":"int64"},"type":{"type":"string","description":"Discriminator for module kind."},"start_time":{"type":"string","format":"date-time"},"end_time":{"type":["null","string"],"format":"date-time","description":"Nullable; when null the module is ongoing."},"data":{"type":"object","description":"Type-specific payload."}}},"TopCustomerData":{"type":"object","required":["header","username","username_id"],"properties":{"header":{"type":"string"},"username":{"type":"string"},"username_id":{"type":"string","description":"User identifier."},"total":{"type":"number","description":"Optional, present depending on module configuration."}}},"TextboxModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"textbox"},"data":{"$ref":"#/components/schemas/TextboxData"}},"required":["data"]}]},"TextboxData":{"type":"object","required":["header","text"],"properties":{"header":{"type":"string"},"text":{"type":"string","description":"HTML supported."}}},"RecentPaymentsModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"recent_payments"},"data":{"$ref":"#/components/schemas/RecentPaymentsData"}},"required":["data"]}]},"RecentPaymentsData":{"type":"object","required":["header","payments"],"properties":{"header":{"type":"string"},"payments":{"type":"array","items":{"$ref":"#/components/schemas/RecentPayment"}}}},"RecentPayment":{"type":"object","required":["username","username_id","package"],"properties":{"username":{"type":"string"},"username_id":{"type":"string"},"package":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}},"created_at":{"type":["null","string"],"format":"date-time","description":"Optional, present depending on module configuration."},"price":{"type":["null","number"],"description":"Optional, present depending on module configuration."},"currency":{"type":["null","string"],"description":"Optional, present depending on module configuration."}}},"FeaturedPackageModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"featured_package"},"data":{"$ref":"#/components/schemas/FeaturedPackageData"}},"required":["data"]}]},"FeaturedPackageData":{"type":"object","required":["header","package"],"properties":{"header":{"type":"string"},"package":{"$ref":"#/components/schemas/Package"}}},"Package":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"image":{"type":"string","nullable":true},"type":{"type":"string"},"category":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}},"base_price":{"type":"number","format":"float"},"sales_tax":{"type":"number","format":"float"},"total_price":{"type":"number","format":"float"},"currency":{"type":"string"},"prorate_price":{"type":"number","format":"float","description":"If this package is part of a tiered category, this is the difference on upgrade pricing from the current active tier.","nullable":true},"discount":{"type":"number","format":"float"},"disable_quantity":{"type":"boolean"},"disable_gifting":{"type":"boolean"},"expiration_date":{"type":"string","nullable":true,"format":"date-time"},"media":{"type":"array","items":{"$ref":"#/components/schemas/PackageMedia"}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"PackageMedia":{"properties":{"type":{"type":"string","enum":["video","image"]},"name":{"type":"string","description":"A file name for the media, if applicable.","nullable":true},"url":{"type":"string","description":"The URL of the package media."},"featured":{"type":"boolean","description":"True if this media should be featured more prominently than others."}}},"GiftcardBalanceModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"giftcard_balance"},"data":{"$ref":"#/components/schemas/GiftcardBalanceData"}},"required":["data"]}]},"GiftcardBalanceData":{"type":"object","required":["header"],"properties":{"header":{"type":"string"}}},"ServerStatusModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"server_status"},"data":{"$ref":"#/components/schemas/ServerStatusData"}},"required":["data"]}]},"ServerStatusData":{"type":"object","required":["header","hostname","port","online","players"],"properties":{"header":{"type":"string"},"hostname":{"type":"string"},"port":{"type":"integer"},"online":{"type":"boolean"},"players":{"description":"Nullable object; null when server is offline.","oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Players"}]}}},"Players":{"type":"object","required":["online","max"],"properties":{"online":{"type":"integer"},"max":{"type":"integer"}}},"PaymentGoalModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"payment_goal"},"data":{"$ref":"#/components/schemas/PaymentGoalData"}},"required":["data"]}]},"PaymentGoalData":{"type":"object","required":["header","percentage","bar_style","bar_animated"],"properties":{"header":{"type":"string"},"percentage":{"type":"number","minimum":0,"maximum":100},"bar_style":{"type":"string","enum":["normal","striped"]},"bar_animated":{"type":"boolean"},"total":{"type":["null","number"],"description":"Optional, present depending on module configuration."},"target":{"type":["null","number"],"description":"Optional, present depending on module configuration."}}},"CommunityGoalModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"community_goal"},"data":{"$ref":"#/components/schemas/CommunityGoalData"}},"required":["data"]}]},"CommunityGoalData":{"type":"object","required":["header","bar_style","bar_animated","percentage"],"properties":{"header":{"type":"string"},"bar_style":{"type":"string","enum":["normal","striped"]},"bar_animated":{"type":"boolean"},"percentage":{"type":"number","minimum":0,"maximum":100},"total_payments":{"type":["null","number"],"description":"Optional, present depending on module configuration."},"target":{"type":["null","number"],"description":"Optional, present depending on module configuration."},"times_achieved":{"type":["null","integer"],"description":"Optional, present depending on module configuration."}}}}}}
```

## The TextboxModule object

```json
{"openapi":"3.1.0","info":{"title":"Tebex Headless API","version":"1.2.0"},"components":{"schemas":{"TextboxModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"textbox"},"data":{"$ref":"#/components/schemas/TextboxData"}},"required":["data"]}]},"ModuleBase":{"type":"object","required":["id","type","start_time","data"],"properties":{"id":{"type":"integer","format":"int64"},"type":{"type":"string","description":"Discriminator for module kind."},"start_time":{"type":"string","format":"date-time"},"end_time":{"type":["null","string"],"format":"date-time","description":"Nullable; when null the module is ongoing."},"data":{"type":"object","description":"Type-specific payload."}}},"TextboxData":{"type":"object","required":["header","text"],"properties":{"header":{"type":"string"},"text":{"type":"string","description":"HTML supported."}}}}}}
```

## The TopCustomerModule object

```json
{"openapi":"3.1.0","info":{"title":"Tebex Headless API","version":"1.2.0"},"components":{"schemas":{"TopCustomerModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"top_customer"},"data":{"$ref":"#/components/schemas/TopCustomerData"}},"required":["data"]}]},"ModuleBase":{"type":"object","required":["id","type","start_time","data"],"properties":{"id":{"type":"integer","format":"int64"},"type":{"type":"string","description":"Discriminator for module kind."},"start_time":{"type":"string","format":"date-time"},"end_time":{"type":["null","string"],"format":"date-time","description":"Nullable; when null the module is ongoing."},"data":{"type":"object","description":"Type-specific payload."}}},"TopCustomerData":{"type":"object","required":["header","username","username_id"],"properties":{"header":{"type":"string"},"username":{"type":"string"},"username_id":{"type":"string","description":"User identifier."},"total":{"type":"number","description":"Optional, present depending on module configuration."}}}}}}
```

## The PaymentGoalModule object

```json
{"openapi":"3.1.0","info":{"title":"Tebex Headless API","version":"1.2.0"},"components":{"schemas":{"PaymentGoalModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"payment_goal"},"data":{"$ref":"#/components/schemas/PaymentGoalData"}},"required":["data"]}]},"ModuleBase":{"type":"object","required":["id","type","start_time","data"],"properties":{"id":{"type":"integer","format":"int64"},"type":{"type":"string","description":"Discriminator for module kind."},"start_time":{"type":"string","format":"date-time"},"end_time":{"type":["null","string"],"format":"date-time","description":"Nullable; when null the module is ongoing."},"data":{"type":"object","description":"Type-specific payload."}}},"PaymentGoalData":{"type":"object","required":["header","percentage","bar_style","bar_animated"],"properties":{"header":{"type":"string"},"percentage":{"type":"number","minimum":0,"maximum":100},"bar_style":{"type":"string","enum":["normal","striped"]},"bar_animated":{"type":"boolean"},"total":{"type":["null","number"],"description":"Optional, present depending on module configuration."},"target":{"type":["null","number"],"description":"Optional, present depending on module configuration."}}}}}}
```

## The ServerStatusModule object

```json
{"openapi":"3.1.0","info":{"title":"Tebex Headless API","version":"1.2.0"},"components":{"schemas":{"ServerStatusModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"server_status"},"data":{"$ref":"#/components/schemas/ServerStatusData"}},"required":["data"]}]},"ModuleBase":{"type":"object","required":["id","type","start_time","data"],"properties":{"id":{"type":"integer","format":"int64"},"type":{"type":"string","description":"Discriminator for module kind."},"start_time":{"type":"string","format":"date-time"},"end_time":{"type":["null","string"],"format":"date-time","description":"Nullable; when null the module is ongoing."},"data":{"type":"object","description":"Type-specific payload."}}},"ServerStatusData":{"type":"object","required":["header","hostname","port","online","players"],"properties":{"header":{"type":"string"},"hostname":{"type":"string"},"port":{"type":"integer"},"online":{"type":"boolean"},"players":{"description":"Nullable object; null when server is offline.","oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Players"}]}}},"Players":{"type":"object","required":["online","max"],"properties":{"online":{"type":"integer"},"max":{"type":"integer"}}}}}}
```

## The CommunityGoalModule object

```json
{"openapi":"3.1.0","info":{"title":"Tebex Headless API","version":"1.2.0"},"components":{"schemas":{"CommunityGoalModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"community_goal"},"data":{"$ref":"#/components/schemas/CommunityGoalData"}},"required":["data"]}]},"ModuleBase":{"type":"object","required":["id","type","start_time","data"],"properties":{"id":{"type":"integer","format":"int64"},"type":{"type":"string","description":"Discriminator for module kind."},"start_time":{"type":"string","format":"date-time"},"end_time":{"type":["null","string"],"format":"date-time","description":"Nullable; when null the module is ongoing."},"data":{"type":"object","description":"Type-specific payload."}}},"CommunityGoalData":{"type":"object","required":["header","bar_style","bar_animated","percentage"],"properties":{"header":{"type":"string"},"bar_style":{"type":"string","enum":["normal","striped"]},"bar_animated":{"type":"boolean"},"percentage":{"type":"number","minimum":0,"maximum":100},"total_payments":{"type":["null","number"],"description":"Optional, present depending on module configuration."},"target":{"type":["null","number"],"description":"Optional, present depending on module configuration."},"times_achieved":{"type":["null","integer"],"description":"Optional, present depending on module configuration."}}}}}}
```

## The RecentPaymentsModule object

```json
{"openapi":"3.1.0","info":{"title":"Tebex Headless API","version":"1.2.0"},"components":{"schemas":{"RecentPaymentsModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"recent_payments"},"data":{"$ref":"#/components/schemas/RecentPaymentsData"}},"required":["data"]}]},"ModuleBase":{"type":"object","required":["id","type","start_time","data"],"properties":{"id":{"type":"integer","format":"int64"},"type":{"type":"string","description":"Discriminator for module kind."},"start_time":{"type":"string","format":"date-time"},"end_time":{"type":["null","string"],"format":"date-time","description":"Nullable; when null the module is ongoing."},"data":{"type":"object","description":"Type-specific payload."}}},"RecentPaymentsData":{"type":"object","required":["header","payments"],"properties":{"header":{"type":"string"},"payments":{"type":"array","items":{"$ref":"#/components/schemas/RecentPayment"}}}},"RecentPayment":{"type":"object","required":["username","username_id","package"],"properties":{"username":{"type":"string"},"username_id":{"type":"string"},"package":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}},"created_at":{"type":["null","string"],"format":"date-time","description":"Optional, present depending on module configuration."},"price":{"type":["null","number"],"description":"Optional, present depending on module configuration."},"currency":{"type":["null","string"],"description":"Optional, present depending on module configuration."}}}}}}
```

## The FeaturedPackageModule object

```json
{"openapi":"3.1.0","info":{"title":"Tebex Headless API","version":"1.2.0"},"components":{"schemas":{"FeaturedPackageModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"featured_package"},"data":{"$ref":"#/components/schemas/FeaturedPackageData"}},"required":["data"]}]},"ModuleBase":{"type":"object","required":["id","type","start_time","data"],"properties":{"id":{"type":"integer","format":"int64"},"type":{"type":"string","description":"Discriminator for module kind."},"start_time":{"type":"string","format":"date-time"},"end_time":{"type":["null","string"],"format":"date-time","description":"Nullable; when null the module is ongoing."},"data":{"type":"object","description":"Type-specific payload."}}},"FeaturedPackageData":{"type":"object","required":["header","package"],"properties":{"header":{"type":"string"},"package":{"$ref":"#/components/schemas/Package"}}},"Package":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"image":{"type":"string","nullable":true},"type":{"type":"string"},"category":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}},"base_price":{"type":"number","format":"float"},"sales_tax":{"type":"number","format":"float"},"total_price":{"type":"number","format":"float"},"currency":{"type":"string"},"prorate_price":{"type":"number","format":"float","description":"If this package is part of a tiered category, this is the difference on upgrade pricing from the current active tier.","nullable":true},"discount":{"type":"number","format":"float"},"disable_quantity":{"type":"boolean"},"disable_gifting":{"type":"boolean"},"expiration_date":{"type":"string","nullable":true,"format":"date-time"},"media":{"type":"array","items":{"$ref":"#/components/schemas/PackageMedia"}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"PackageMedia":{"properties":{"type":{"type":"string","enum":["video","image"]},"name":{"type":"string","description":"A file name for the media, if applicable.","nullable":true},"url":{"type":"string","description":"The URL of the package media."},"featured":{"type":"boolean","description":"True if this media should be featured more prominently than others."}}}}}}
```

## The GiftcardBalanceModule object

```json
{"openapi":"3.1.0","info":{"title":"Tebex Headless API","version":"1.2.0"},"components":{"schemas":{"GiftcardBalanceModule":{"allOf":[{"$ref":"#/components/schemas/ModuleBase"},{"type":"object","properties":{"type":{"const":"giftcard_balance"},"data":{"$ref":"#/components/schemas/GiftcardBalanceData"}},"required":["data"]}]},"ModuleBase":{"type":"object","required":["id","type","start_time","data"],"properties":{"id":{"type":"integer","format":"int64"},"type":{"type":"string","description":"Discriminator for module kind."},"start_time":{"type":"string","format":"date-time"},"end_time":{"type":["null","string"],"format":"date-time","description":"Nullable; when null the module is ongoing."},"data":{"type":"object","description":"Type-specific payload."}}},"GiftcardBalanceData":{"type":"object","required":["header"],"properties":{"header":{"type":"string"}}}}}}
```
