File size: 7,256 Bytes
1477a90 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 | import "@typespec/http";
import "@typespec/rest";
import "@typespec/openapi";
import "@typespec/openapi3";
import "./shared/index.tsp";
import "./events/index.tsp";
import "./meters/index.tsp";
import "./customers/index.tsp";
import "./subscriptions/index.tsp";
import "./apps/index.tsp";
import "./billing/index.tsp";
import "./currencies/index.tsp";
import "./features/index.tsp";
import "./llmcost/index.tsp";
import "./productcatalog/index.tsp";
import "./defaults/index.tsp";
import "./governance/index.tsp";
import "./invoices/index.tsp";
using TypeSpec.Http;
using TypeSpec.OpenAPI;
/**
* OpenMeter is a cloud native usage metering and billing service. The API allows
* you to ingest events, query meter usage, and manage resources.
*/
@service(#{ title: "OpenMeter and Konnect Metering & Billing API" })
@info(#{ version: "0.0.1" })
@server("https://openmeter.cloud/api/v3", "OpenMeter Cloud")
@server(
"https://{region}.api.konghq.com/v3",
"Production region",
{
region: "us" | "eu" | "au" | "me" | "in" = "us",
}
)
@server(
"http://localhost:{port}/api/v3",
"Local",
{
port?: string = "8888",
}
)
@tagMetadata(Shared.MetersTag, #{ description: Shared.MetersDescription })
@tagMetadata(Shared.EventsTag, #{ description: Shared.EventsDescription })
@tagMetadata(Shared.CustomersTag, #{ description: Shared.CustomersDescription })
@tagMetadata(
Shared.SubscriptionsTag,
#{ description: Shared.SubscriptionsDescription }
)
@tagMetadata(
Shared.EntitlementsTag,
#{ description: Shared.EntitlementsDescription }
)
@tagMetadata(Shared.AppsTag, #{ description: Shared.AppsDescription })
@tagMetadata(Shared.BillingTag, #{ description: Shared.BillingDescription })
@tagMetadata(
Shared.CurrenciesTag,
#{ description: Shared.CurrenciesDescription }
)
@tagMetadata(Shared.TaxTag, #{ description: Shared.TaxDescription })
@tagMetadata(Shared.FeaturesTag, #{ description: Shared.FeaturesDescription })
@tagMetadata(Shared.LLMCostTag, #{ description: Shared.LLMCostDescription })
@tagMetadata(
Shared.ProductCatalogTag,
#{ description: Shared.ProductCatalogDescription }
)
@tagMetadata(Shared.DefaultsTag, #{ description: Shared.DefaultsDescription })
@tagMetadata(
Shared.GovernanceTag,
#{ description: Shared.GovernanceDescription }
)
namespace OpenMeter;
@route("/openmeter/events")
@tag(Shared.EventsTag)
interface EventsEndpoints extends Events.EventsOperations {}
@route("/openmeter/meters")
@tag(Shared.MetersTag)
interface MetersEndpoints extends Meters.MetersOperations {}
@route("/openmeter/meters/{meterId}/query")
@tag(Shared.MetersTag)
interface MetersQueryEndpoints extends Meters.MetersQueryOperations {}
@route("/openmeter/customers")
@tag(Shared.CustomersTag)
interface CustomersEndpoints extends Customers.CustomersOperations {}
@route("/openmeter/customers/{customerId}/billing")
@tag(Shared.CustomersTag)
interface CustomerBillingEndpoints
extends Customers.Billing.CustomerBillingOperations {}
@route("/openmeter/customers/{customerId}/entitlement-access")
@tag(Shared.EntitlementsTag)
interface CustomerEntitlementsEndpoints
extends Entitlements.CustomerEntitlementsOperations {}
@route("/openmeter/customers/{customerId}/credits/grants")
@tag(Shared.CustomersTag)
interface CustomerCreditGrantsEndpoints
extends Customers.Credits.Grants.CustomerCreditGrantsOperations {}
@route("/openmeter/customers/{customerId}/credits/balance")
@tag(Shared.CustomersTag)
interface CustomerCreditBalanceEndpoints
extends Customers.Credits.Balance.CustomerCreditBalancesOperations {}
@route("/openmeter/customers/{customerId}/credits/adjustments")
@tag(Shared.CustomersTag)
interface CustomerCreditAdjustmentsEndpoints
extends Customers.Credits.Adjustments.CustomerCreditAdjustmentsOperations {}
@route("/openmeter/customers/{customerId}/credits/grants/{creditGrantId}")
@tag(Shared.CustomersTag)
interface CustomerCreditGrantEndpoints {
@route("/void")
voidGrant is Customers.Credits.Grants.CustomerCreditGrantVoidOperations.voidGrant;
@route("/settlement/external")
updateExternalSettlement is Customers.Credits.Grants.CustomerCreditGrantExternalSettlementOperations.updateExternalSettlement;
}
@route("/openmeter/customers/{customerId}/credits/transactions")
@tag(Shared.CustomersTag)
interface CustomerCreditTransactionEndpoints
extends Customers.Credits.Transactions.CustomerCreditTransactionOperations {}
@route("/openmeter/customers/{customerId}/charges")
@tag(Shared.CustomersTag)
interface CustomerChargesEndpoints
extends Customers.Charges.CustomerChargesOperations {}
@route("/openmeter/subscriptions")
@tag(Shared.SubscriptionsTag)
interface SubscriptionsEndpoints
extends Subscriptions.SubscriptionsOperations {}
@route("/openmeter/subscriptions/{subscriptionId}/addons")
@tag(Shared.SubscriptionsTag)
interface SubscriptionAddonEndpoints
extends Subscriptions.SubscriptionAddonOperations {}
@route("/openmeter/apps")
@tag(Shared.AppsTag)
interface AppsEndpoints extends Apps.AppsOperations {}
@route("/openmeter/app-catalog")
@tag(Shared.AppsTag)
interface AppCatalogEndpoints extends Apps.AppCatalogOperations {}
@route("/openmeter/profiles")
@tag(Shared.BillingTag)
interface BillingProfilesEndpoints extends Billing.BillingProfilesOperations {}
@route("/openmeter/billing/invoices")
@tag(Shared.BillingTag)
interface BillingInvoicesEndpoints extends Invoices.InvoicesOperations {}
@route("/openmeter/tax-codes")
@tag(Shared.TaxTag)
interface TaxCodesEndpoints extends Tax.TaxCodesOperations {}
@route("/openmeter/currencies")
@tag(Shared.CurrenciesTag)
interface CurrenciesEndpoints extends Currencies.CurrenciesOperations {}
@route("/openmeter/currencies/custom")
@tag(Shared.CurrenciesTag)
interface CurrenciesCustomEndpoints
extends Currencies.CurrenciesCustomOperations {}
@route("/openmeter/currencies/custom/{currencyId}/cost-bases")
@tag(Shared.CurrenciesTag)
interface CurrenciesCustomCostBasesEndpoints
extends Currencies.CurrenciesCustomCostBasesOperations {}
@route("/openmeter/features")
@tag(Shared.FeaturesTag)
interface FeaturesEndpoints extends Features.FeatureOperations {}
@route("/openmeter/features/{featureId}/cost")
@tag(Shared.FeaturesTag)
interface FeatureCostEndpoints extends Features.FeatureCostOperations {}
@route("/openmeter/llm-cost/prices")
@tag(Shared.LLMCostTag)
interface LLMCostPricesEndpoints extends LLMCost.LLMCostPricesOperations {}
@route("/openmeter/llm-cost/overrides")
@tag(Shared.LLMCostTag)
interface LLMCostOverridesEndpoints
extends LLMCost.LLMCostOverridesOperations {}
@route("/openmeter/plans")
@tag(Shared.ProductCatalogTag)
interface PlansEndpoints extends ProductCatalog.PlanOperations {}
@route("/openmeter/addons")
@tag(Shared.ProductCatalogTag)
interface AddonsEndpoints extends ProductCatalog.AddonOperations {}
@route("/openmeter/plans/{planId}/addons")
@tag(Shared.ProductCatalogTag)
interface PlanAddonEndpoints extends ProductCatalog.PlanAddonOperations {}
@route("/openmeter/defaults/tax-codes")
@tag(Shared.DefaultsTag)
interface OrganizationDefaultTaxCodesEndpoints
extends Defaults.OrganizationDefaultTaxCodesOperations {}
@route("/openmeter/governance")
@tag(Shared.GovernanceTag)
interface GovernanceEndpoints extends Governance.GovernanceOperations {}
|