# Ternary Documentation ## Guides - [Self-Service PEM Certificate Management](https://docs.ternary.app/docs/self-service-pem-certificate-management.md): Learn how administrators and MSPs can manage PEM certificates in Ternary, including renewal, expiry status, and audit visibility. - [SSO Setup for Okta Users](https://docs.ternary.app/docs/sso-setup-for-okta-users.md): Benefit from an expedited configuration for Single Sign-On if you use Okta as your corporate IdP. - [What IP addresses does Ternary use to access my data?](https://docs.ternary.app/docs/what-ip-addresses-does-ternary-use-to-access-my-data.md) - [Why is Ternary displaying a difference in daily cost from what the GCP console shows?](https://docs.ternary.app/docs/why-ternary-shows-different-daily-costs-than-the-google-console.md): Learn why daily cost differences may appear between Ternary and the Google console due to timezone differences between exports and reports. - [Ternary Documentation](https://docs.ternary.app/docs/home.md): Get started with Ternary through documentation that includes setup guides, administrative references, integrations, feature documentation, and FAQs. - [Uploading Billing Data via Drag & Drop](https://docs.ternary.app/docs/bring-your-own-data-byod-upload.md): Learn how to upload a billing CSV or ZIP file directly into Ternary without configuring cloud storage permissions. ## API Reference - [Fetch Metadata](https://docs.ternary.app/reference/get_meta-focus.md): Fetch available dimensions and measures for Analytics API querying for a tenant - [Query](https://docs.ternary.app/reference/post_query-load.md): Analytics - [List alert rule events](https://docs.ternary.app/reference/getalertruleevents.md): List all events for a specific alert rule. Events represent the lifecycle history of an alert rule, including creation, updates, and deletion. Each event contains the changed fields in its `data` payload. - [Create alert rule](https://docs.ternary.app/reference/createalertrule.md): Create a new alert rule to monitor cloud cost metrics. Alert rules evaluate cost data against a configured condition and notify subscribers when the condition is met. Three condition types are supported: - `ANOMALY_DETECTION` — Detects unusual cost changes by direction (increases, decreases, or both). - `THRESHOLDING` — Triggers when an aggregated cost metric crosses a static value. - `FORECAST` — Reserved for future forecasting-based alerts. Returns the `ruleID` of the newly created alert rule. - [List alert rules](https://docs.ternary.app/reference/getalertrules.md): List all alert rules for the specified tenant. Returns rules of all condition types and statuses, including subscriber configuration and historical events if available. - [Update alert rule](https://docs.ternary.app/reference/updatealertrule.md): Update an existing alert rule. Only the fields included in the request body are modified; omitted fields remain unchanged. Common updates include changing the condition parameters, adjusting filters or dimensions, updating subscriber lists, or toggling the status between active and inactive. - [Create API Key](https://docs.ternary.app/reference/createapikey.md): Create a new API key for programmatic access to the Ternary API. The API key is bound to the authenticated user and inherits their permissions. Optionally set an `expiresAt` timestamp; if omitted, the key does not expire. The full key value is returned only in this response — store it securely. - [Delete API key](https://docs.ternary.app/reference/deleteapikey.md): Permanently delete an API key. Any integrations using this key will immediately lose access. This action cannot be undone. - [List API keys](https://docs.ternary.app/reference/getapikeys.md): List all API keys belonging to the authenticated user. Each key includes its name, creation timestamp, and optional expiration date. The key secret is not included in list responses. - [List all AWS Reserved Instances recommendations](https://docs.ternary.app/reference/getawsreservedinstancerecommendations.md): List all AWS Reserved Instance purchase recommendations for the authenticated tenant. Recommendations are generated based on historical usage and configurable parameters such as lookback period, payment option, and offering class. Recommendations are refreshed periodically based on the latest usage data. - [List all AWS Savings Plan recommendations](https://docs.ternary.app/reference/getawssavingsplanrecommendations.md): List all AWS Savings Plan purchase recommendations for the authenticated tenant. Savings Plan recommendations identify opportunities to reduce costs through compute, EC2, or SageMaker Savings Plans. Recommendations are refreshed periodically based on the latest usage data. - [List Azure rate recommendations](https://docs.ternary.app/reference/getazurerecommendations.md): List all Azure rate recommendations for the authenticated tenant. Includes both reservation and savings plan recommendations based on historical usage patterns. Recommendations are refreshed periodically based on the latest usage data. - [Create billing rule](https://docs.ternary.app/reference/createbillingrule.md): Create a new billing rule in the Billing Rules Engine. Billing rules apply rule-based logic to cloud billing data to support chargeback, showback, cost redistribution, and internal billing workflows. Use `filters` to define which cost line items the rule applies to. `startTime` is required; omit `endTime` for an open-ended rule. **Rule types:** - `ADJUST_TO_LIST` — Normalize billing amounts to list prices. Optionally apply a percentage offset (positive for markup, negative for discount). - `APPLY_MARGIN` — Apply a percentage margin to matching costs. - `BACKOUT_LINE_ITEM` — Exclude specific line items from downstream billing views and reports. - `REALLOCATE_COSTS` — Redistribute costs from a source scope to one or more targets. - `RERATE` — Adjust billing amounts by applying a percentage offset to existing costs or credits. Each rule type requires a different `meta` shape. New rules are created in `PROCESSING` status while an asynchronous workflow validates and applies them; the rule transitions to `ACTIVE` on success or `FAILED_PROCESSING` on failure. Use the update endpoint to transition a rule to `INACTIVE` or `DRAFT` after creation. Returns the `ruleID` of the newly created rule. See [Billing Rules Engine](https://docs.ternary.app/docs/cost-allocation) for detailed configuration guidance. - [Delete billing rule](https://docs.ternary.app/reference/deletebillingrule.md): Permanently delete a billing rule. This action cannot be undone. Once deleted, the rule will no longer be applied during billing processing. Removing a rule fully reverses its impact on subsequent billing calculations. - [Find billing rule](https://docs.ternary.app/reference/getbillingrule.md): Retrieve a single billing rule by its unique ID. The response includes the full rule configuration: type, filters, type-specific `meta` parameters, status, and audit timestamps. - [List billing rules](https://docs.ternary.app/reference/getbillingrules.md): List all billing rules for the specified tenant. Returns rules of all types and statuses. Use the `tenantID` query parameter to scope results. Each rule includes its full configuration, current status, and audit timestamps. - [Update billing rule](https://docs.ternary.app/reference/updatebillingrule.md): Update an existing billing rule. Only the fields included in the request body are modified; omitted fields remain unchanged. Common updates include changing the rule name, adjusting the effective time range (`startTime`/`endTime`), modifying cost filters, updating type-specific `meta` parameters, or toggling the rule status. The rule type itself cannot be changed after creation. - [Create budget](https://docs.ternary.app/reference/createbudget.md): Create a new budget to track cloud spending. Budgets monitor actual spend against a target amount and notify subscribers when configurable thresholds are breached. Three amount types are supported: - **Specified amount** — A fixed dollar value for each period. - **Variable amount** — Different amounts per period, set via `periods`. - **Hierarchical amount** — Dimension-level allocations within the total. Returns the `budgetID` of the newly created budget. - [Delete budget](https://docs.ternary.app/reference/deletebudget.md): Permanently delete a budget. This action cannot be undone. Once deleted, the budget will no longer track spend or send threshold notifications. - [List budgets](https://docs.ternary.app/reference/getbudgets.md): List all budgets for the specified tenant. Returns budgets of all types including their current status, period versions, and threshold configurations. - [Update budget](https://docs.ternary.app/reference/updatebudget.md): Update an existing budget. Only the fields included in the request body are modified; omitted fields remain unchanged. Common updates include adjusting the target amount, modifying scopes, updating subscriber lists, or changing threshold percentages. - [Create case](https://docs.ternary.app/reference/createcase.md): Create a new case for tracking a cloud cost optimization action. Cases are linked to resources such as recommendations, budgets, cost alerts, ramp plans, or reports. Optionally link the case to an external Jira issue. Returns the `caseID` of the newly created case. - [Create case comment](https://docs.ternary.app/reference/createcasecomment.md): Add a comment to an existing case. Comments support free-text and can optionally reference a report. Returns the `commentID` of the newly created comment. - [Get case](https://docs.ternary.app/reference/getcase.md): Retrieve a single case by its unique ID. The response includes the full case details: status, assignees, followers, resource association, and any additional context. - [List cases](https://docs.ternary.app/reference/getcases.md): List all cases for the specified tenant. Returns cases of all types and statuses, including assignees, followers, and resource associations. - [Update case](https://docs.ternary.app/reference/updatecase.md): Update an existing case. Only the fields included in the request body are modified; omitted fields remain unchanged. Common updates include changing the status, updating assignees or followers, modifying the description, or linking to an external issue. - [Find cost alert](https://docs.ternary.app/reference/getcostalert.md): Retrieve a single cost alert by its unique ID. The response includes the full alert details: the triggering event, observed vs expected values, dimensions, and current status. - [List cost alerts](https://docs.ternary.app/reference/getcostalerts.md): List all cost alerts for the specified tenant. Cost alerts are generated when an alert rule detects a cost anomaly. Each alert includes the observed value, expected range, and current status. - [Update cost alert](https://docs.ternary.app/reference/patchcostalert.md): Update the status of a cost alert. Use this endpoint to transition a cost alert between statuses. - [Create a Custom Label](https://docs.ternary.app/reference/createcustomlabel.md): Create a new Custom Label rule. Custom Labels create business-relevant labels from cloud billing data using rule-based conditions and output mappings. **Conditions** determine which billing line items the rule applies to. Filters support `equals`, `like` (wildcard), and `set` (key exists) operators. Conditions can be nested up to 3 levels using `and`, `or`, and `not` logical operators. **Output types:** - `TEMPLATE` — Generate label values using expression templates with variable substitution. - `MAPPING` — Assign label values based on the value of an existing billing field. - `DATA_MAPPING` — Bulk label assignment from an uploaded data source. Rules can be saved as `DRAFT` for review before being published, or published immediately to begin processing. See [Custom Labels](https://docs.ternary.app/docs/custom-labels) for detailed guidance. - [Delete a Custom Label](https://docs.ternary.app/reference/deletecustomlabel.md): Permanently delete a Custom Label rule. Labels previously generated by this rule will no longer be updated, but existing billing data retains the labels until the next processing cycle. See [Custom Labels](https://docs.ternary.app/docs/custom-labels) for more details. - [List all Custom Labels](https://docs.ternary.app/reference/getcustomlabels.md): Retrieve all Custom Label rules for the specified tenant. Returns each rule's condition tree, output configuration, and current processing status. Use to view which Custom Labels are active, in draft, or processing. See [Custom Labels](https://docs.ternary.app/docs/custom-labels) for more details. - [Update a Custom Label](https://docs.ternary.app/reference/updatecustomlabel.md): Update an existing Custom Label rule. All fields are optional — only the provided fields are updated. The rule can be transitioned between statuses (e.g. `DRAFT` to `ACTIVE`) by setting the `status` field. Changing conditions or outputs on an active rule triggers reprocessing of the affected billing data. See [Custom Labels](https://docs.ternary.app/docs/custom-labels) for more details. - [Create a custom measure](https://docs.ternary.app/reference/createcustommeasure.md): Create a custom measure with a user-defined formula. Custom measures let you define calculated fields using existing Analytics API schema fields as variables. Use `${fieldName}` syntax in the `formula` to reference schema fields. The `unitType` controls how the result is displayed: `CURRENCY`, `PERCENTAGE`, `BYTES`, `BINARY_BYTES`, `CORES`, `KILOGRAMS`, or `STANDARD`. - [Delete custom measure](https://docs.ternary.app/reference/deletecustommeasure.md): Permanently delete a custom measure. Any reports or dashboards referencing this measure will no longer be able to calculate it. This action cannot be undone. - [List all custom measures](https://docs.ternary.app/reference/getcustommeasures.md): List all custom measures for the specified tenant. Each measure includes its formula, display name, target schema (data source), unit type, and audit timestamps. - [Get reports that depend on a custom measure](https://docs.ternary.app/reference/getdependentreportsforcustommeasure.md): Returns reports that reference the specified custom measure in their measures, filters, or data layers. The response includes only reports the caller has permission to see, plus a total count of all dependent reports. - [Update custom measure](https://docs.ternary.app/reference/updatecustommeasure.md): Update an existing custom measure. Only the fields included in the request body are modified; omitted fields remain unchanged. Common updates include changing the formula expression, display name, description, or unit type. - [Create Alibaba integration](https://docs.ternary.app/reference/createalibabaintegration.md): Create a new Alibaba Cloud data integration. Configure S3-compatible Cost and Usage Reports with cross-account IAM role access. See [Data Integrations](https://docs.ternary.app/docs/integrations-overview) for setup guidance. - [Delete Alibaba integration](https://docs.ternary.app/reference/deletealibabaintegration.md): Delete an Alibaba Cloud data integration. - [Update Alibaba integration](https://docs.ternary.app/reference/updatealibabaintegration.md): Update an existing Alibaba Cloud data integration. - [Create AWS integration](https://docs.ternary.app/reference/createawsintegration.md): Create a new AWS data integration for importing Cost and Usage Report (CUR) data. Configure one or more CUR sources, an IAM role ARN for cross-account access, and optional linked accounts for consolidated billing. An optional monitoring role ARN can be provided for CloudWatch metrics collection. See [Data Integrations](https://docs.ternary.app/docs/integrations-overview) for setup guidance. - [Delete AWS integration](https://docs.ternary.app/reference/deleteawsintegration.md): Delete an AWS data integration. - [Update AWS integration](https://docs.ternary.app/reference/updateawsintegration.md): Update an existing AWS data integration. - [Create Azure integration](https://docs.ternary.app/reference/createazureintegration.md): Create a new Azure data integration for importing billing exports. **Integration types (`type`):** - `EA` — Enterprise Agreement - `MCA` — Microsoft Customer Agreement - `MPA` — Microsoft Partner Agreement - `CSP_LEGACY` — Legacy Cloud Solution Provider Configure billing export sources from Azure Storage, app registration credentials, and the billing model type. See [Data Integrations](https://docs.ternary.app/docs/integrations-overview) for setup guidance. - [Delete Azure integration](https://docs.ternary.app/reference/deleteazureintegration.md): Delete an Azure data integration. - [Update Azure integration](https://docs.ternary.app/reference/updateazureintegration.md): Update an existing Azure data integration. - [Create Custom Data integration](https://docs.ternary.app/reference/createcustomdataintegration.md): Create a new Custom Data integration for importing user-defined cost data. **Source types (`sourceType`):** - `S3_BUCKET` — Amazon S3 - `GCS_BUCKET` — Google Cloud Storage - `AZURE_BLOB` — Azure Blob Storage - `GCP_BIGQUERY` — Google BigQuery table Configure the storage URI, authentication, and column mappings to define how source data maps to Ternary's cost model. See [Data Integrations](https://docs.ternary.app/docs/integrations-overview) for setup guidance. - [Delete Custom Data integration](https://docs.ternary.app/reference/deletecustomdataintegration.md): Delete a Custom Data integration. - [Update Custom Data integration](https://docs.ternary.app/reference/updatecustomdataintegration.md): Update an existing Custom Data integration. - [Create Databricks integration](https://docs.ternary.app/reference/createdatabricksintegration.md): Create a new Databricks data integration for importing workspace usage and billing data. Configure an OAuth client ID and one or more workspace connections. See [Data Integrations](https://docs.ternary.app/docs/integrations-overview) for setup guidance. - [Delete Databricks integration](https://docs.ternary.app/reference/deletedatabricksintegration.md): Delete a Databricks data integration. - [Update Databricks integration](https://docs.ternary.app/reference/updatedatabricksintegration.md): Update an existing Databricks data integration. - [Create GCP integration](https://docs.ternary.app/reference/creategcpintegration.md): Create a new Google Cloud data integration for importing BigQuery billing export data. Configure the billing export source (dataset, project, table), optional BigQuery monitoring for query cost tracking, committed use discount (CUD) sharing, and optional detailed billing, carbon footprint, and pricing exports. See [Data Integrations](https://docs.ternary.app/docs/integrations-overview) for setup guidance. - [Delete GCP integration](https://docs.ternary.app/reference/deletegcpintegration.md): Delete a GCP data integration. - [Update GCP integration](https://docs.ternary.app/reference/updategcpintegration.md): Update an existing GCP data integration. - [Create Oracle integration](https://docs.ternary.app/reference/createoracleintegration.md): Create a new Oracle Cloud Infrastructure (OCI) data integration. Configure the tenancy OCID, user OCID, region, and Object Storage bucket for billing data. See [Data Integrations](https://docs.ternary.app/docs/integrations-overview) for setup guidance. - [Delete Oracle integration](https://docs.ternary.app/reference/deleteoracleintegration.md): Delete an Oracle Cloud Infrastructure data integration. - [Update Oracle integration](https://docs.ternary.app/reference/updateoracleintegration.md): Update an existing Oracle Cloud Infrastructure data integration. - [Create Snowflake integration](https://docs.ternary.app/reference/createsnowflakeintegration.md): Create a new Snowflake data integration for importing warehouse usage and credit data. Configure the organization name and one or more account connections with credentials. See [Data Integrations](https://docs.ternary.app/docs/integrations-overview) for setup guidance. - [Delete Snowflake integration](https://docs.ternary.app/reference/deletesnowflakeintegration.md): Delete a Snowflake data integration. - [Update Snowflake integration](https://docs.ternary.app/reference/updatesnowflakeintegration.md): Update an existing Snowflake data integration. - [List data integrations](https://docs.ternary.app/reference/finddataintegrations.md): List all cloud data integrations for the specified tenant. Returns integrations for all supported cloud providers: GCP, AWS, Azure, Alibaba, Databricks, Oracle, Snowflake, MongoDB, and Custom Data. Each integration includes its current data status, configuration, and validation results. **Supported providers (`providerType`):** - `GCP` — Google Cloud Platform BigQuery billing exports - `AWS` — Amazon Web Services Cost and Usage Reports - `AZURE` — Microsoft Azure billing exports (EA, MCA, MPA) - `ALIBABA` — Alibaba Cloud billing via S3-compatible CUR - `DATABRICKS` — Databricks workspace usage and billing - `OCI` — Oracle Cloud Infrastructure billing - `SNOWFLAKE` — Snowflake warehouse usage and credit data - `MONGO_DB` — MongoDB Atlas billing (read-only) - `CUSTOM_DATA` — User-defined cost data from S3, GCS, Azure Blob, or BigQuery See [Data Integrations](https://docs.ternary.app/docs/integrations-overview) for details. - [Create dimension preferences](https://docs.ternary.app/reference/createdimensionpreference.md): Create dimension display preferences for a specific data source. Dimension preferences control the order and visibility of dimensions in reports and dashboards. Each preference specifies a `category`, a `priority` (lower numbers appear first), and a list of dimension `values` in the preferred display order. - [List all dimension preferences](https://docs.ternary.app/reference/getdimensionpreferences.md): List all dimension preferences for the specified tenant. Results include preferences across all data sources. Each preference includes its category, priority, values, and the data source it applies to. - [Update dimension preferences](https://docs.ternary.app/reference/updatedimensionpreferences.md): Update existing dimension preferences. Replaces the preference configuration for the specified data source. Use this to reorder dimensions, add new values, or change category priorities. - [List GCP Rate Recommendations](https://docs.ternary.app/reference/getcudrecommendations.md): List all GCP Committed Use Discount (CUD) recommendations for the authenticated tenant. CUD recommendations identify opportunities to reduce costs by purchasing resource-based or spend-based commitments. CUD recommendations are refreshed periodically based on the latest usage data. - [Create Jira integration](https://docs.ternary.app/reference/createintegrationjira.md): Create a new Jira integration for linking cost optimization cases to Jira issues. When a case is created in Ternary, a corresponding Jira issue is automatically created in the configured project. Configure the Jira Cloud instance URL, project, issue type, and optional workflow transition for automatic status synchronization. See [Jira Integration](https://docs.ternary.app/docs/jira) for setup guidance. - [Create Slack integration](https://docs.ternary.app/reference/createintegrationslack.md): Create a new Slack integration for receiving cost alert notifications. When alert rules trigger, notifications are posted to the configured Slack channel. Requires a Slack OAuth access token obtained through the Slack app authorization flow. See [Slack Integration](https://docs.ternary.app/docs/slack) for setup guidance. - [Delete Jira integration](https://docs.ternary.app/reference/deleteintegrationjira.md): Delete a Jira integration. - [Delete Slack integration](https://docs.ternary.app/reference/deleteintegrationslack.md): Delete a Slack integration. - [Get Jira integration](https://docs.ternary.app/reference/getintegrationsjira.md): List all Jira integrations for the specified tenant. Returns integration details including the connected Jira instance, project, and issue configuration. - [Get Slack integration](https://docs.ternary.app/reference/getintegrationsslack.md): List all Slack integrations for the specified tenant. Returns integration details including the connected workspace, channel, and authorization information. - [Update Jira integration](https://docs.ternary.app/reference/updateintegrationjira.md): Update an existing Jira integration. - [Update Slack integration](https://docs.ternary.app/reference/updateintegrationslack.md): Update an existing Slack integration. - [List all label maps](https://docs.ternary.app/reference/getlabelmaps.md): List all label maps for the specified tenant. Label maps provide the mapping between custom label names (human-readable) and their corresponding internal column names used in the Analytics API. The response is keyed by data source, with each entry containing a map of custom label names to column identifiers. - [Create measure preferences](https://docs.ternary.app/reference/createmeasurepreference.md): Create measure display preferences for a specific data source. Measure preferences control the order and visibility of measures in reports and dashboards. Each preference specifies a `category`, a `priority` (lower numbers appear first), and a list of measure `values` in the preferred display order. - [List measure preferences](https://docs.ternary.app/reference/getmeasurepreferences.md): List all measure preferences for the specified tenant. Results include preferences across all data sources. Each preference includes its category, priority, values, and the data source it applies to. - [Update measure preferences](https://docs.ternary.app/reference/updatemeasurepreference.md): Update existing measure preferences. Replaces the preference configuration for the specified data source. Use this to reorder measures, add new values, or change category priorities. - [Create MSP billing information](https://docs.ternary.app/reference/createmspbillinginfo.md): Create billing information for an MSP tenant. Includes address, payment terms, and customer details used for invoice generation. See [MSP Platform](https://docs.ternary.app/docs/ternary-msp-platform) for details. - [Delete MSP billing information](https://docs.ternary.app/reference/deletemspbillinginfo.md): Delete an MSP billing information record. - [List MSP billing information](https://docs.ternary.app/reference/getmspbillinginfo.md): List all billing information records for the specified MSP tenant. - [Update MSP billing information](https://docs.ternary.app/reference/updatemspbillinginfo.md): Update an MSP billing information record. - [Create new MSP child tenant](https://docs.ternary.app/reference/createmspchildtenant.md): Create a new child tenant under an MSP parent. The parent is specified via `parentTenantID` in the request body; the authenticated caller must have MSP-admin permission on that parent. The `type` field should be set to `MSP_CUSTOMER` for child tenants managed by the MSP parent. New child tenants are created in the `ACTIVE` state. Use the update endpoint to suspend (`INACTIVE`) or reactivate later. After creation, use the MSP Tenant Settings endpoints to configure feature access for the child. See [MSP Customer Management](https://docs.ternary.app/docs/msp-customer-management) for detailed MSP administration guidance. - [List MSP child data integrations](https://docs.ternary.app/reference/getmspchilddataintegrations.md): List data integrations for all child tenants of the MSP. Returns a summary of each integration including provider type and data status. - [List MSP child resources](https://docs.ternary.app/reference/getmspchildresources.md): List aggregated resources across all child tenants. Returns data integrations and users for each child tenant. - [List MSP child users](https://docs.ternary.app/reference/getmspchildusers.md): List users across all child tenants of the MSP. - [Update existing MSP child tenant](https://docs.ternary.app/reference/updatemspchildtenant.md): Update an existing child tenant's configuration. Only the fields included in the request body are modified; omitted fields remain unchanged. This endpoint is only available to MSP parent tenants. Common updates include changing the tenant name, fiscal calendar, notification preferences, preferred currency, or status. See [MSP Customer Management](https://docs.ternary.app/docs/msp-customer-management) for detailed MSP administration guidance. - [Create MSP shared payer integrations](https://docs.ternary.app/reference/createmspsharedpayerintegrations.md): Create one or more shared payer integrations for child tenants. - [List MSP shared payer integrations](https://docs.ternary.app/reference/getmspsharedpayerintegrations.md): List all shared payer integrations configured for the MSP. Shared payer integrations allow child tenants to access billing data from a parent tenant's cloud provider integration. - [Update MSP shared payer integration](https://docs.ternary.app/reference/updatemspsharedpayerintegrations.md): Update an existing shared payer integration. - [List MSP tenant settings](https://docs.ternary.app/reference/getmsptenantsettings.md): List MSP tenant settings for the specified tenant. Controls which cloud provider features (metrics, rate recommendations, usage recommendations) are enabled for child tenants. See [MSP Tenant Settings](https://docs.ternary.app/docs/ternary-msp-platform) for details. - [Update MSP tenant setting](https://docs.ternary.app/reference/updatemsptenantsetting.md): Update MSP tenant settings for a specific child tenant. See [MSP Tenant Settings](https://docs.ternary.app/docs/ternary-msp-platform) for details. - [List permissions](https://docs.ternary.app/reference/getpermissions.md): List all available permissions in the system. Permissions are identified by a unique `slug` (e.g., `billing:read`, `reports:write`) and are assigned to roles. Use this endpoint to discover which permissions exist when configuring role-based access control for your organization. - [Create ramp plan](https://docs.ternary.app/reference/createrampplan.md): Create a financial ramp plan for forecasting and tracking cloud spend commitments over time. Ramp plans define spending targets with breakpoints to track progress against planned budgets. See [Ramp Plans](https://docs.ternary.app/docs/ramp-plans) for configuration guidance. - [Delete ramp plan](https://docs.ternary.app/reference/deleterampplan.md): Delete an existing ramp plan by its unique identifier. - [List ramp plans](https://docs.ternary.app/reference/getrampplans.md): List all ramp plans for the authenticated tenant. See [Ramp Plans](https://docs.ternary.app/docs/ramp-plans) for more details. - [Update ramp plan](https://docs.ternary.app/reference/updaterampplan.md): Update an existing ramp plan's configuration, including name, commitments, breakpoints, and non-export offsets. - [Create report](https://docs.ternary.app/reference/createreport.md): Create a new cost and usage report. Reports visualize cloud billing data with configurable dimensions, measures, filters, and chart types. **Chart types:** `AREA`, `CLUSTERED_BAR`, `KPI`, `LINE`, `PIE`, `STACKED_AREA`, `STACKED_BAR`, `TABLE`, `VARIANCE` **Duration types:** `CUSTOM`, `INVOICE`, `LAST_MONTH`, `LAST_N_DAYS`, `LAST_N_MONTHS`, `LAST_NINETY_DAYS`, `LAST_SEVEN_DAYS`, `LAST_THIRTY_DAYS`, `MONTH_TO_DATE`, `QUARTER_TO_DATE`, `TODAY`, `YEAR_TO_DATE`, `YESTERDAY` **Scope values:** `GLOBAL` (visible to all), `PRIVATE` (visible to creator only), `SHARED` (visible to specific users) See [Reports](https://docs.ternary.app/docs/reports) for configuration guidance. - [Delete report](https://docs.ternary.app/reference/deletereport.md): Delete an existing report by its unique identifier. - [Find report](https://docs.ternary.app/reference/getreport.md): Retrieve a single report by its unique identifier. - [List reports](https://docs.ternary.app/reference/getreports.md): Returns reports by IDs or all reports for a tenant. Provide either `tenantID` to list all reports for an organization, or `reportIDs` to retrieve specific reports. See [Reports](https://docs.ternary.app/docs/reports) for more details. - [Update report](https://docs.ternary.app/reference/updatereport.md): Update an existing report's configuration, including chart type, dimensions, measures, filters, and date range settings. - [Create a resource subscription](https://docs.ternary.app/reference/createresourcesubscription.md): Create an email subscription for automated delivery of reports or dashboards. Subscriptions send scheduled emails at the specified frequency. **Frequency options:** `DAILY`, `WEEKLY`, `MONTHLY` For weekly subscriptions, specify `dayOfWeek`. For monthly subscriptions, specify `weekOfMonth`. See [Reports](https://docs.ternary.app/docs/reports) for more details. - [Delete resource subscription](https://docs.ternary.app/reference/deleteresourcesubscription.md): Delete an existing resource subscription by its unique identifier. - [Update resource subscription](https://docs.ternary.app/reference/updateresourcesubscription.md): Update an existing resource subscription's delivery schedule or recipients. - [List roles](https://docs.ternary.app/reference/getroles.md): List all roles available in the specified tenant. Each role defines a set of permissions that control what actions users with that role can perform. Roles can optionally include a `visibilityPermission` that restricts data visibility and a nested `permissions` array listing the individual permission grants. - [Create savings opportunity filter](https://docs.ternary.app/reference/createsavingsopportunityfilter.md): Create a new savings opportunity filter for the authenticated tenant. Savings opportunity filters define criteria for viewing and organizing savings recommendations (rate, usage, or both). Filters can be shared across the organization for consistent views. - [Delete savings opportunity filter](https://docs.ternary.app/reference/deletesavingsopportunityfilter.md): Delete an existing savings opportunity filter by its unique identifier. - [Find savings opportunity filter](https://docs.ternary.app/reference/getsavingsopportunityfilter.md): Retrieve a single savings opportunity filter by its unique identifier. - [List savings opportunity filters](https://docs.ternary.app/reference/getsavingsopportunityfilters.md): List all savings opportunity filters for the authenticated tenant. - [Update a savings opportunity filter](https://docs.ternary.app/reference/updatesavingsopportunityfilter.md): Update an existing savings opportunity filter by its unique identifier. - [Create scoped view](https://docs.ternary.app/reference/createscopedview.md): Create a scoped view that applies default filters to restrict data visibility for users. Scoped views enforce data boundaries across reports and dashboards. See [Scoped Views](https://docs.ternary.app/docs/scoped-views) for configuration guidance. - [Delete scoped view](https://docs.ternary.app/reference/deletescopedview.md): Delete an existing scoped view by its unique identifier. - [List all scoped views](https://docs.ternary.app/reference/getscopedviews.md): Returns all scoped views for a specific tenant. See [Scoped Views](https://docs.ternary.app/docs/scoped-views) for more details. - [Update scoped view](https://docs.ternary.app/reference/updatescopedview.md): Update an existing scoped view's filters or configuration. - [Create support ticket](https://docs.ternary.app/reference/createsupportticket.md): Submit a support ticket to the Ternary support team. The requester's name and email are automatically populated from the authenticated session — no identity fields are required in the request body. Optionally include one or more `ccEmails` addresses to copy additional recipients on the ticket. - [Find tenant](https://docs.ternary.app/reference/gettenant.md): Retrieve a single tenant by its unique ID. The response includes the tenant's profile, fiscal calendar, notification preferences, data source configuration, preferred currency, and current status. - [Find a usage recommendation](https://docs.ternary.app/reference/getrecommendation.md): Retrieve a single usage optimization recommendation by its unique identifier. - [List all usage recommendations](https://docs.ternary.app/reference/getrecommendations.md): List all usage optimization recommendations for the authenticated tenant. Recommendations are generated from cloud provider advisors and Ternary's proprietary analysis engine. Recommendations are refreshed periodically based on the latest usage data. - [Update a usage recommendation](https://docs.ternary.app/reference/updaterecommendation.md): Update a single usage recommendation by its unique identifier. **Supported fields:** - `applicable` — Set recommendation applicability - `state` — Update the recommendation state - `snoozeUntil` — Set or clear the snooze timestamp - [Update usage recommendations](https://docs.ternary.app/reference/updaterecommendations.md): Bulk update multiple usage recommendations. Accepts an array of recommendation updates in the request body. **Supported fields:** - `state` — Update the recommendation state (e.g. `accepted`, `snoozed`, `asDesigned`) - `snoozeUntil` — Set or clear the snooze timestamp - [Create user group config](https://docs.ternary.app/reference/createusergroupconfig.md): Create a user group configuration. User group configs map SSO user groups to scoped view assignments, controlling which data views are visible to group members. Each scoped view assignment has a status: `ENABLED` (visible and optional), `ENABLED_STRICT` (visible and enforced), `ENFORCED` (always active), or `DISABLED` (hidden). - [Delete user group config](https://docs.ternary.app/reference/deleteusergroupconfig.md): Permanently delete a user group configuration. Users in the associated SSO group will lose their scoped view assignments. This action cannot be undone. - [List user group configs](https://docs.ternary.app/reference/getusergroupconfigs.md): List all user group configurations for the specified tenant. Each configuration includes the group name, scoped view assignments with their statuses, and audit timestamps. - [Update user group config](https://docs.ternary.app/reference/updateusergroupconfig.md): Update an existing user group configuration. Only the fields included in the request body are modified; omitted fields remain unchanged. Use this to add or remove scoped view assignments, change their statuses, or rename the group. - [Find a user](https://docs.ternary.app/reference/getuser.md): Retrieve a single user by their unique ID. The response includes the user's profile information, login count, current status, and SSO user group memberships. - [List users](https://docs.ternary.app/reference/getusers.md): List users matching the specified criteria. Provide `userIDs` to look up specific users, or `tenantID` to list all users with access to an organization. If both are provided, `tenantID` takes precedence. When `includeSettings` is `true`, each user object includes the nested `tenantSettings` containing notification preferences, dashboard preferences, recommendation filters, and display settings for the specified tenant. - [Grant Users access to MSPs](https://docs.ternary.app/reference/grantusersmspaccess.md): Grant one or more users global MSP-level access. Users with MSP access can manage child tenants, billing configuration, and cross-tenant operations. This operation is idempotent — granting access that already exists has no effect. - [Grant Users access to Tenants](https://docs.ternary.app/reference/grantuserstenantaccess.md): Grant one or more users access to one or more tenants. Each user receives the specified role within the target tenant(s). This operation is idempotent — granting access that already exists has no effect. - [Find yourself](https://docs.ternary.app/reference/me.md): Retrieves information about the currently authenticated user using the JWT cookie provided by the authentication service. The response includes the user's profile (name, email, avatar, theme preference), global roles, and the list of tenants the user has access to — each enriched with the user's tenant-specific roles, feature flags, and settings. - [Revoke User access to MSPs](https://docs.ternary.app/reference/revokeusermspaccess.md): Revoke a user's global MSP-level access. The user will no longer be able to manage child tenants or perform cross-tenant operations. This operation is idempotent — revoking access that does not exist has no effect. - [Revoke User access to a tenant](https://docs.ternary.app/reference/revokeusertenantaccess.md): Revoke a user's access to a specific tenant. The user will no longer be able to view or manage resources within that tenant. This operation is idempotent — revoking access that does not exist has no effect. - [Update user](https://docs.ternary.app/reference/updateuser.md): Update a user's profile by their unique ID. Only the fields included in the request body are modified; omitted fields remain unchanged. Updatable fields include name, avatar, theme mode (`DARK` or `LIGHT`), and notification preferences.