Module: LicenseKit::Generated

Defined in:
lib/licensekit/generated/metadata.rb,
lib/licensekit/generated/operation_scopes.rb

Constant Summary collapse

OPERATION_METADATA =
{
  "activateLicense" => {
    method: "POST",
    path: "/api/v1/license/activate",
    auth: "license",
    summary: "Activate a license for a hardware or container binding",
    success: { 200 => "json" }
  },
  "assignLicenseFeature" => {
    method: "POST",
    path: "/api/v1/licenses/{id}/features",
    auth: "bearer",
    summary: "Assign or update a feature on a license",
    success: { 200 => "json" }
  },
  "blacklistLicenseDevice" => {
    method: "POST",
    path: "/api/v1/licenses/{id}/devices/{device_id}/blacklist",
    auth: "bearer",
    summary: "Blacklist a managed device and block future reuse",
    success: { 200 => "json" }
  },
  "checkLicense" => {
    method: "POST",
    path: "/api/v1/license/check",
    auth: "license",
    summary: "Check current entitlements without mutating validation timestamps",
    success: { 200 => "json" }
  },
  "checkinFloatingLicense" => {
    method: "POST",
    path: "/api/v1/license/floating/checkin",
    auth: "license",
    summary: "Check in a floating lease token",
    success: { 200 => "json" }
  },
  "checkoutFloatingLicense" => {
    method: "POST",
    path: "/api/v1/license/floating/checkout",
    auth: "license",
    summary: "Check out a floating lease for a hardware or container binding",
    success: { 200 => "json" }
  },
  "consumeLicense" => {
    method: "POST",
    path: "/api/v1/license/consume",
    auth: "license",
    summary: "Consume metered feature usage for an active bound license",
    success: { 200 => "json" }
  },
  "createAPIKey" => {
    method: "POST",
    path: "/api/v1/api-keys",
    auth: "bearer",
    summary: "Create a management API key",
    success: { 201 => "json" }
  },
  "createCustomer" => {
    method: "POST",
    path: "/api/v1/customers",
    auth: "bearer",
    summary: "Create a customer",
    success: { 201 => "json" }
  },
  "createFeature" => {
    method: "POST",
    path: "/api/v1/products/{id}/features",
    auth: "bearer",
    summary: "Create a feature for a product",
    success: { 201 => "json" }
  },
  "createLicense" => {
    method: "POST",
    path: "/api/v1/licenses",
    auth: "bearer",
    summary: "Create a license",
    success: { 201 => "json" }
  },
  "createOrder" => {
    method: "POST",
    path: "/api/v1/products/{id}/orders",
    auth: "bearer",
    summary: "Create an order record for a product",
    success: { 201 => "json" }
  },
  "createPolicy" => {
    method: "POST",
    path: "/api/v1/products/{id}/policies",
    auth: "bearer",
    summary: "Create a policy for a product",
    success: { 201 => "json" }
  },
  "createProduct" => {
    method: "POST",
    path: "/api/v1/products",
    auth: "bearer",
    summary: "Create a product",
    success: { 201 => "json" }
  },
  "createProductCustomFieldDefinition" => {
    method: "POST",
    path: "/api/v1/products/{id}/custom-fields",
    auth: "bearer",
    summary: "Create a product custom field definition",
    success: { 201 => "json" }
  },
  "createProductVersion" => {
    method: "POST",
    path: "/api/v1/products/{id}/versions",
    auth: "bearer",
    summary: "Create a product version",
    success: { 201 => "json" }
  },
  "createReportExport" => {
    method: "POST",
    path: "/api/v1/reports/exports",
    auth: "bearer",
    summary: "Create a frozen report export",
    success: { 201 => "json" }
  },
  "createSubscription" => {
    method: "POST",
    path: "/api/v1/products/{id}/subscriptions",
    auth: "bearer",
    summary: "Create a subscription record for a product",
    success: { 201 => "json" }
  },
  "createWebhookEndpoint" => {
    method: "POST",
    path: "/api/v1/webhooks",
    auth: "bearer",
    summary: "Create a webhook endpoint",
    success: { 201 => "json" }
  },
  "deactivateLicense" => {
    method: "POST",
    path: "/api/v1/license/deactivate",
    auth: "license",
    summary: "Deactivate a bound license device",
    success: { 200 => "json" }
  },
  "deleteCustomer" => {
    method: "DELETE",
    path: "/api/v1/customers/{id}",
    auth: "bearer",
    summary: "Delete a customer",
    success: { 204 => "empty" }
  },
  "deletePolicy" => {
    method: "DELETE",
    path: "/api/v1/policies/{id}",
    auth: "bearer",
    summary: "Delete a policy",
    success: { 204 => "empty" }
  },
  "deleteProduct" => {
    method: "DELETE",
    path: "/api/v1/products/{id}",
    auth: "bearer",
    summary: "Delete a product",
    success: { 204 => "empty" }
  },
  "deleteProductCustomFieldDefinition" => {
    method: "DELETE",
    path: "/api/v1/products/{id}/custom-fields/{field_id}",
    auth: "bearer",
    summary: "Delete a product custom field definition",
    success: { 204 => "empty" }
  },
  "deleteWebhookEndpoint" => {
    method: "DELETE",
    path: "/api/v1/webhooks/{id}",
    auth: "bearer",
    summary: "Delete a webhook endpoint",
    success: { 204 => "empty" }
  },
  "downloadReportExport" => {
    method: "GET",
    path: "/api/v1/reports/exports/{id}/download",
    auth: "bearer",
    summary: "Download a frozen report export snapshot",
    success: { 200 => "bytes" }
  },
  "getCustomer" => {
    method: "GET",
    path: "/api/v1/customers/{id}",
    auth: "bearer",
    summary: "Get a customer",
    success: { 200 => "json" }
  },
  "getCustomerSummary" => {
    method: "GET",
    path: "/api/v1/reports/customer-summary",
    auth: "bearer",
    summary: "Get customer-level reporting summary",
    success: { 200 => "json" }
  },
  "getFeature" => {
    method: "GET",
    path: "/api/v1/features/{id}",
    auth: "bearer",
    summary: "Get a feature",
    success: { 200 => "json" }
  },
  "getLicense" => {
    method: "GET",
    path: "/api/v1/licenses/{id}",
    auth: "bearer",
    summary: "Get a license",
    success: { 200 => "json" }
  },
  "getLicenseAuditReport" => {
    method: "GET",
    path: "/api/v1/reports/license-audit",
    auth: "bearer",
    summary: "Get a license audit report",
    success: { 200 => "json" }
  },
  "getLicenseDevice" => {
    method: "GET",
    path: "/api/v1/licenses/{id}/devices/{device_id}",
    auth: "bearer",
    summary: "Get a device for a license",
    success: { 200 => "json" }
  },
  "getMetrics" => {
    method: "GET",
    path: "/metrics",
    auth: "none",
    summary: "Prometheus metrics",
    success: { 200 => "text" }
  },
  "getOpsSummary" => {
    method: "GET",
    path: "/api/v1/ops/summary",
    auth: "bearer",
    summary: "Get operational summary cards",
    success: { 200 => "json" }
  },
  "getOrder" => {
    method: "GET",
    path: "/api/v1/orders/{id}",
    auth: "bearer",
    summary: "Get an order record",
    success: { 200 => "json" }
  },
  "getPolicy" => {
    method: "GET",
    path: "/api/v1/policies/{id}",
    auth: "bearer",
    summary: "Get a policy",
    success: { 200 => "json" }
  },
  "getProduct" => {
    method: "GET",
    path: "/api/v1/products/{id}",
    auth: "bearer",
    summary: "Get a product",
    success: { 200 => "json" }
  },
  "getProductCustomFieldDefinition" => {
    method: "GET",
    path: "/api/v1/products/{id}/custom-fields/{field_id}",
    auth: "bearer",
    summary: "Get a product custom field definition",
    success: { 200 => "json" }
  },
  "getReportExport" => {
    method: "GET",
    path: "/api/v1/reports/exports/{id}",
    auth: "bearer",
    summary: "Get report export metadata",
    success: { 200 => "json" }
  },
  "getSubscription" => {
    method: "GET",
    path: "/api/v1/subscriptions/{id}",
    auth: "bearer",
    summary: "Get a subscription record",
    success: { 200 => "json" }
  },
  "getSubscriptionSettlement" => {
    method: "GET",
    path: "/api/v1/reports/subscription-settlement",
    auth: "bearer",
    summary: "Get subscription or order settlement summary",
    success: { 200 => "json" }
  },
  "getUsageSummary" => {
    method: "GET",
    path: "/api/v1/reports/usage-summary",
    auth: "bearer",
    summary: "Get grouped usage totals",
    success: { 200 => "json" }
  },
  "getWebhookEndpoint" => {
    method: "GET",
    path: "/api/v1/webhooks/{id}",
    auth: "bearer",
    summary: "Get a webhook endpoint",
    success: { 200 => "json" }
  },
  "getWebhookHealth" => {
    method: "GET",
    path: "/api/v1/ops/webhook-health",
    auth: "bearer",
    summary: "Get webhook queue and failure health",
    success: { 200 => "json" }
  },
  "health" => {
    method: "GET",
    path: "/health",
    auth: "none",
    summary: "Hosted-safe liveness probe",
    success: { 200 => "json" }
  },
  "healthz" => {
    method: "GET",
    path: "/healthz",
    auth: "none",
    summary: "Liveness probe",
    success: { 200 => "json" }
  },
  "heartbeatFloatingLicense" => {
    method: "POST",
    path: "/api/v1/license/floating/heartbeat",
    auth: "license",
    summary: "Extend a floating lease before it expires",
    success: { 200 => "json" }
  },
  "issueOfflineLicense" => {
    method: "POST",
    path: "/api/v1/license/offline",
    auth: "license",
    summary: "Issue an encrypted offline license envelope for a bound device",
    success: { 200 => "json" }
  },
  "listAPIKeys" => {
    method: "GET",
    path: "/api/v1/api-keys",
    auth: "bearer",
    summary: "List management API keys",
    success: { 200 => "json" }
  },
  "listActivities" => {
    method: "GET",
    path: "/api/v1/activities",
    auth: "bearer",
    summary: "List normalized reporting activities",
    success: { 200 => "json" }
  },
  "listCustomerCustomFieldValues" => {
    method: "GET",
    path: "/api/v1/customers/{id}/custom-fields",
    auth: "bearer",
    summary: "List customer custom field values",
    success: { 200 => "json" }
  },
  "listCustomers" => {
    method: "GET",
    path: "/api/v1/customers",
    auth: "bearer",
    summary: "List customers",
    success: { 200 => "json" }
  },
  "listEvents" => {
    method: "GET",
    path: "/api/v1/events",
    auth: "bearer",
    summary: "List audit-backed event records",
    success: { 200 => "json" }
  },
  "listFeaturesByProduct" => {
    method: "GET",
    path: "/api/v1/products/{id}/features",
    auth: "bearer",
    summary: "List features for a product",
    success: { 200 => "json" }
  },
  "listLicenseCustomFieldValues" => {
    method: "GET",
    path: "/api/v1/licenses/{id}/custom-fields",
    auth: "bearer",
    summary: "List license custom field values",
    success: { 200 => "json" }
  },
  "listLicenseDevices" => {
    method: "GET",
    path: "/api/v1/licenses/{id}/devices",
    auth: "bearer",
    summary: "List devices for a license",
    success: { 200 => "json" }
  },
  "listLicenseFeatures" => {
    method: "GET",
    path: "/api/v1/licenses/{id}/features",
    auth: "bearer",
    summary: "List assigned features for a license",
    success: { 200 => "json" }
  },
  "listLicenses" => {
    method: "GET",
    path: "/api/v1/licenses",
    auth: "bearer",
    summary: "List licenses",
    success: { 200 => "json" }
  },
  "listPoliciesByProduct" => {
    method: "GET",
    path: "/api/v1/products/{id}/policies",
    auth: "bearer",
    summary: "List policies for a product",
    success: { 200 => "json" }
  },
  "listProductCustomFieldDefinitions" => {
    method: "GET",
    path: "/api/v1/products/{id}/custom-fields",
    auth: "bearer",
    summary: "List product custom field definitions",
    success: { 200 => "json" }
  },
  "listProductOrders" => {
    method: "GET",
    path: "/api/v1/products/{id}/orders",
    auth: "bearer",
    summary: "List orders for a product",
    success: { 200 => "json" }
  },
  "listProductSubscriptions" => {
    method: "GET",
    path: "/api/v1/products/{id}/subscriptions",
    auth: "bearer",
    summary: "List subscriptions for a product",
    success: { 200 => "json" }
  },
  "listProductVersions" => {
    method: "GET",
    path: "/api/v1/products/{id}/versions",
    auth: "bearer",
    summary: "List product versions",
    success: { 200 => "json" }
  },
  "listProducts" => {
    method: "GET",
    path: "/api/v1/products",
    auth: "bearer",
    summary: "List products",
    success: { 200 => "json" }
  },
  "listPublicKeys" => {
    method: "GET",
    path: "/api/v1/system/public-keys",
    auth: "none",
    summary: "List public signing keys",
    success: { 200 => "json" }
  },
  "listRuntimeErrorGroups" => {
    method: "GET",
    path: "/api/v1/ops/runtime-errors",
    auth: "bearer",
    summary: "List grouped runtime error counts",
    success: { 200 => "json" }
  },
  "listUsageLedger" => {
    method: "GET",
    path: "/api/v1/reports/usage-ledger",
    auth: "bearer",
    summary: "List row-level usage ledger entries",
    success: { 200 => "json" }
  },
  "listWebhookEndpoints" => {
    method: "GET",
    path: "/api/v1/webhooks",
    auth: "bearer",
    summary: "List webhook endpoints",
    success: { 200 => "json" }
  },
  "readyz" => {
    method: "GET",
    path: "/readyz",
    auth: "none",
    summary: "Readiness probe",
    success: { 200 => "json", 503 => "json" }
  },
  "reinstateLicense" => {
    method: "POST",
    path: "/api/v1/licenses/{id}/reinstate",
    auth: "bearer",
    summary: "Reinstate a suspended license",
    success: { 200 => "json" }
  },
  "removeLicenseFeature" => {
    method: "DELETE",
    path: "/api/v1/licenses/{id}/features/{feature_id}",
    auth: "bearer",
    summary: "Remove a feature assignment from a license",
    success: { 204 => "empty" }
  },
  "renewLicense" => {
    method: "POST",
    path: "/api/v1/licenses/{id}/renew",
    auth: "bearer",
    summary: "Renew or extend a renewable license",
    success: { 200 => "json" }
  },
  "resetLicenseDevice" => {
    method: "POST",
    path: "/api/v1/licenses/{id}/devices/{device_id}/reset",
    auth: "bearer",
    summary: "Reset a managed device and clear its active state",
    success: { 200 => "json" }
  },
  "resetLicenseUsage" => {
    method: "POST",
    path: "/api/v1/licenses/{id}/usage/reset",
    auth: "bearer",
    summary: "Reset or top up metered feature usage",
    success: { 200 => "json" }
  },
  "revokeLicense" => {
    method: "POST",
    path: "/api/v1/licenses/{id}/revoke",
    auth: "bearer",
    summary: "Revoke a license and clear active seats",
    success: { 200 => "json" }
  },
  "suspendLicense" => {
    method: "POST",
    path: "/api/v1/licenses/{id}/suspend",
    auth: "bearer",
    summary: "Suspend a license",
    success: { 200 => "json" }
  },
  "transferLicense" => {
    method: "POST",
    path: "/api/v1/licenses/{id}/transfer",
    auth: "bearer",
    summary: "Transfer a license to another assignee",
    success: { 200 => "json" }
  },
  "updateCustomer" => {
    method: "PATCH",
    path: "/api/v1/customers/{id}",
    auth: "bearer",
    summary: "Update a customer",
    success: { 200 => "json" }
  },
  "updateOrder" => {
    method: "PATCH",
    path: "/api/v1/orders/{id}",
    auth: "bearer",
    summary: "Update an order record",
    success: { 200 => "json" }
  },
  "updatePolicy" => {
    method: "PATCH",
    path: "/api/v1/policies/{id}",
    auth: "bearer",
    summary: "Update a policy",
    success: { 200 => "json" }
  },
  "updateProduct" => {
    method: "PATCH",
    path: "/api/v1/products/{id}",
    auth: "bearer",
    summary: "Update a product",
    success: { 200 => "json" }
  },
  "updateProductCustomFieldDefinition" => {
    method: "PATCH",
    path: "/api/v1/products/{id}/custom-fields/{field_id}",
    auth: "bearer",
    summary: "Update a product custom field definition",
    success: { 200 => "json" }
  },
  "updateSubscription" => {
    method: "PATCH",
    path: "/api/v1/subscriptions/{id}",
    auth: "bearer",
    summary: "Update a subscription record",
    success: { 200 => "json" }
  },
  "updateWebhookEndpoint" => {
    method: "PATCH",
    path: "/api/v1/webhooks/{id}",
    auth: "bearer",
    summary: "Update a webhook endpoint",
    success: { 200 => "json" }
  },
  "upsertCustomerCustomFieldValue" => {
    method: "PUT",
    path: "/api/v1/customers/{id}/custom-fields/{field_id}",
    auth: "bearer",
    summary: "Upsert a customer custom field value",
    success: { 200 => "json", 204 => "empty" }
  },
  "upsertLicenseCustomFieldValue" => {
    method: "PUT",
    path: "/api/v1/licenses/{id}/custom-fields/{field_id}",
    auth: "bearer",
    summary: "Upsert a license custom field value",
    success: { 200 => "json", 204 => "empty" }
  },
  "validateLicense" => {
    method: "POST",
    path: "/api/v1/license/validate",
    auth: "license",
    summary: "Validate a bound license and refresh validation timestamps",
    success: { 200 => "json" }
  },
}.freeze
MANAGEMENT_OPERATION_IDS =
["assignLicenseFeature", "blacklistLicenseDevice", "createAPIKey", "createCustomer", "createFeature", "createLicense", "createOrder", "createPolicy", "createProduct", "createProductCustomFieldDefinition", "createProductVersion", "createReportExport", "createSubscription", "createWebhookEndpoint", "deleteCustomer", "deletePolicy", "deleteProduct", "deleteProductCustomFieldDefinition", "deleteWebhookEndpoint", "downloadReportExport", "getCustomer", "getCustomerSummary", "getFeature", "getLicense", "getLicenseAuditReport", "getLicenseDevice", "getOpsSummary", "getOrder", "getPolicy", "getProduct", "getProductCustomFieldDefinition", "getReportExport", "getSubscription", "getSubscriptionSettlement", "getUsageSummary", "getWebhookEndpoint", "getWebhookHealth", "listAPIKeys", "listActivities", "listCustomerCustomFieldValues", "listCustomers", "listEvents", "listFeaturesByProduct", "listLicenseCustomFieldValues", "listLicenseDevices", "listLicenseFeatures", "listLicenses", "listPoliciesByProduct", "listProductCustomFieldDefinitions", "listProductOrders", "listProductSubscriptions", "listProductVersions", "listProducts", "listRuntimeErrorGroups", "listUsageLedger", "listWebhookEndpoints", "reinstateLicense", "removeLicenseFeature", "renewLicense", "resetLicenseDevice", "resetLicenseUsage", "revokeLicense", "suspendLicense", "transferLicense", "updateCustomer", "updateOrder", "updatePolicy", "updateProduct", "updateProductCustomFieldDefinition", "updateSubscription", "updateWebhookEndpoint", "upsertCustomerCustomFieldValue", "upsertLicenseCustomFieldValue"].freeze
RUNTIME_OPERATION_IDS =
["activateLicense", "checkLicense", "checkinFloatingLicense", "checkoutFloatingLicense", "consumeLicense", "deactivateLicense", "heartbeatFloatingLicense", "issueOfflineLicense", "validateLicense"].freeze
SYSTEM_OPERATION_IDS =
["getMetrics", "health", "healthz", "listPublicKeys", "readyz"].freeze
OPERATION_SCOPES =
{
  "assignLicenseFeature" => {
    method: "POST",
    path: "/api/v1/licenses/{id}/features",
    scopes: ["license:write"].freeze
  },
  "blacklistLicenseDevice" => {
    method: "POST",
    path: "/api/v1/licenses/{id}/devices/{device_id}/blacklist",
    scopes: ["device:write"].freeze
  },
  "createAPIKey" => {
    method: "POST",
    path: "/api/v1/api-keys",
    scopes: ["admin"].freeze
  },
  "createCustomer" => {
    method: "POST",
    path: "/api/v1/customers",
    scopes: ["admin"].freeze
  },
  "createFeature" => {
    method: "POST",
    path: "/api/v1/products/{id}/features",
    scopes: ["product:write"].freeze
  },
  "createLicense" => {
    method: "POST",
    path: "/api/v1/licenses",
    scopes: ["license:write"].freeze
  },
  "createOrder" => {
    method: "POST",
    path: "/api/v1/products/{id}/orders",
    scopes: ["product:write"].freeze
  },
  "createPolicy" => {
    method: "POST",
    path: "/api/v1/products/{id}/policies",
    scopes: ["product:write"].freeze
  },
  "createProduct" => {
    method: "POST",
    path: "/api/v1/products",
    scopes: ["product:write"].freeze
  },
  "createProductCustomFieldDefinition" => {
    method: "POST",
    path: "/api/v1/products/{id}/custom-fields",
    scopes: ["product:write"].freeze
  },
  "createProductVersion" => {
    method: "POST",
    path: "/api/v1/products/{id}/versions",
    scopes: ["product:write"].freeze
  },
  "createReportExport" => {
    method: "POST",
    path: "/api/v1/reports/exports",
    scopes: ["report:export"].freeze
  },
  "createSubscription" => {
    method: "POST",
    path: "/api/v1/products/{id}/subscriptions",
    scopes: ["product:write"].freeze
  },
  "createWebhookEndpoint" => {
    method: "POST",
    path: "/api/v1/webhooks",
    scopes: ["webhook:write"].freeze
  },
  "deleteCustomer" => {
    method: "DELETE",
    path: "/api/v1/customers/{id}",
    scopes: ["admin"].freeze
  },
  "deletePolicy" => {
    method: "DELETE",
    path: "/api/v1/policies/{id}",
    scopes: ["product:write"].freeze
  },
  "deleteProduct" => {
    method: "DELETE",
    path: "/api/v1/products/{id}",
    scopes: ["product:write"].freeze
  },
  "deleteProductCustomFieldDefinition" => {
    method: "DELETE",
    path: "/api/v1/products/{id}/custom-fields/{field_id}",
    scopes: ["product:write"].freeze
  },
  "deleteWebhookEndpoint" => {
    method: "DELETE",
    path: "/api/v1/webhooks/{id}",
    scopes: ["webhook:write"].freeze
  },
  "downloadReportExport" => {
    method: "GET",
    path: "/api/v1/reports/exports/{id}/download",
    scopes: ["report:export"].freeze
  },
  "getCustomer" => {
    method: "GET",
    path: "/api/v1/customers/{id}",
    scopes: ["admin"].freeze
  },
  "getCustomerSummary" => {
    method: "GET",
    path: "/api/v1/reports/customer-summary",
    scopes: ["report:read"].freeze
  },
  "getFeature" => {
    method: "GET",
    path: "/api/v1/features/{id}",
    scopes: ["product:read"].freeze
  },
  "getLicense" => {
    method: "GET",
    path: "/api/v1/licenses/{id}",
    scopes: ["license:read"].freeze
  },
  "getLicenseAuditReport" => {
    method: "GET",
    path: "/api/v1/reports/license-audit",
    scopes: ["report:read"].freeze
  },
  "getLicenseDevice" => {
    method: "GET",
    path: "/api/v1/licenses/{id}/devices/{device_id}",
    scopes: ["license:read"].freeze
  },
  "getOpsSummary" => {
    method: "GET",
    path: "/api/v1/ops/summary",
    scopes: ["ops:read"].freeze
  },
  "getOrder" => {
    method: "GET",
    path: "/api/v1/orders/{id}",
    scopes: ["product:read"].freeze
  },
  "getPolicy" => {
    method: "GET",
    path: "/api/v1/policies/{id}",
    scopes: ["product:read"].freeze
  },
  "getProduct" => {
    method: "GET",
    path: "/api/v1/products/{id}",
    scopes: ["product:read"].freeze
  },
  "getProductCustomFieldDefinition" => {
    method: "GET",
    path: "/api/v1/products/{id}/custom-fields/{field_id}",
    scopes: ["product:read"].freeze
  },
  "getReportExport" => {
    method: "GET",
    path: "/api/v1/reports/exports/{id}",
    scopes: ["report:export"].freeze
  },
  "getSubscription" => {
    method: "GET",
    path: "/api/v1/subscriptions/{id}",
    scopes: ["product:read"].freeze
  },
  "getSubscriptionSettlement" => {
    method: "GET",
    path: "/api/v1/reports/subscription-settlement",
    scopes: ["report:read"].freeze
  },
  "getUsageSummary" => {
    method: "GET",
    path: "/api/v1/reports/usage-summary",
    scopes: ["report:read"].freeze
  },
  "getWebhookEndpoint" => {
    method: "GET",
    path: "/api/v1/webhooks/{id}",
    scopes: ["webhook:write"].freeze
  },
  "getWebhookHealth" => {
    method: "GET",
    path: "/api/v1/ops/webhook-health",
    scopes: ["ops:read"].freeze
  },
  "listAPIKeys" => {
    method: "GET",
    path: "/api/v1/api-keys",
    scopes: ["admin"].freeze
  },
  "listActivities" => {
    method: "GET",
    path: "/api/v1/activities",
    scopes: ["report:read"].freeze
  },
  "listCustomerCustomFieldValues" => {
    method: "GET",
    path: "/api/v1/customers/{id}/custom-fields",
    scopes: ["admin"].freeze
  },
  "listCustomers" => {
    method: "GET",
    path: "/api/v1/customers",
    scopes: ["admin"].freeze
  },
  "listEvents" => {
    method: "GET",
    path: "/api/v1/events",
    scopes: ["event:read"].freeze
  },
  "listFeaturesByProduct" => {
    method: "GET",
    path: "/api/v1/products/{id}/features",
    scopes: ["product:read"].freeze
  },
  "listLicenseCustomFieldValues" => {
    method: "GET",
    path: "/api/v1/licenses/{id}/custom-fields",
    scopes: ["license:read"].freeze
  },
  "listLicenseDevices" => {
    method: "GET",
    path: "/api/v1/licenses/{id}/devices",
    scopes: ["license:read"].freeze
  },
  "listLicenseFeatures" => {
    method: "GET",
    path: "/api/v1/licenses/{id}/features",
    scopes: ["license:read"].freeze
  },
  "listLicenses" => {
    method: "GET",
    path: "/api/v1/licenses",
    scopes: ["license:read"].freeze
  },
  "listPoliciesByProduct" => {
    method: "GET",
    path: "/api/v1/products/{id}/policies",
    scopes: ["product:read"].freeze
  },
  "listProductCustomFieldDefinitions" => {
    method: "GET",
    path: "/api/v1/products/{id}/custom-fields",
    scopes: ["product:read"].freeze
  },
  "listProductOrders" => {
    method: "GET",
    path: "/api/v1/products/{id}/orders",
    scopes: ["product:read"].freeze
  },
  "listProductSubscriptions" => {
    method: "GET",
    path: "/api/v1/products/{id}/subscriptions",
    scopes: ["product:read"].freeze
  },
  "listProductVersions" => {
    method: "GET",
    path: "/api/v1/products/{id}/versions",
    scopes: ["product:read"].freeze
  },
  "listProducts" => {
    method: "GET",
    path: "/api/v1/products",
    scopes: ["product:read"].freeze
  },
  "listRuntimeErrorGroups" => {
    method: "GET",
    path: "/api/v1/ops/runtime-errors",
    scopes: ["ops:read"].freeze
  },
  "listUsageLedger" => {
    method: "GET",
    path: "/api/v1/reports/usage-ledger",
    scopes: ["report:read"].freeze
  },
  "listWebhookEndpoints" => {
    method: "GET",
    path: "/api/v1/webhooks",
    scopes: ["webhook:write"].freeze
  },
  "reinstateLicense" => {
    method: "POST",
    path: "/api/v1/licenses/{id}/reinstate",
    scopes: ["license:write"].freeze
  },
  "removeLicenseFeature" => {
    method: "DELETE",
    path: "/api/v1/licenses/{id}/features/{feature_id}",
    scopes: ["license:write"].freeze
  },
  "renewLicense" => {
    method: "POST",
    path: "/api/v1/licenses/{id}/renew",
    scopes: ["license:write"].freeze
  },
  "resetLicenseDevice" => {
    method: "POST",
    path: "/api/v1/licenses/{id}/devices/{device_id}/reset",
    scopes: ["device:write"].freeze
  },
  "resetLicenseUsage" => {
    method: "POST",
    path: "/api/v1/licenses/{id}/usage/reset",
    scopes: ["license:write"].freeze
  },
  "revokeLicense" => {
    method: "POST",
    path: "/api/v1/licenses/{id}/revoke",
    scopes: ["license:write"].freeze
  },
  "suspendLicense" => {
    method: "POST",
    path: "/api/v1/licenses/{id}/suspend",
    scopes: ["license:write"].freeze
  },
  "transferLicense" => {
    method: "POST",
    path: "/api/v1/licenses/{id}/transfer",
    scopes: ["license:write"].freeze
  },
  "updateCustomer" => {
    method: "PATCH",
    path: "/api/v1/customers/{id}",
    scopes: ["admin"].freeze
  },
  "updateOrder" => {
    method: "PATCH",
    path: "/api/v1/orders/{id}",
    scopes: ["product:write"].freeze
  },
  "updatePolicy" => {
    method: "PATCH",
    path: "/api/v1/policies/{id}",
    scopes: ["product:write"].freeze
  },
  "updateProduct" => {
    method: "PATCH",
    path: "/api/v1/products/{id}",
    scopes: ["product:write"].freeze
  },
  "updateProductCustomFieldDefinition" => {
    method: "PATCH",
    path: "/api/v1/products/{id}/custom-fields/{field_id}",
    scopes: ["product:write"].freeze
  },
  "updateSubscription" => {
    method: "PATCH",
    path: "/api/v1/subscriptions/{id}",
    scopes: ["product:write"].freeze
  },
  "updateWebhookEndpoint" => {
    method: "PATCH",
    path: "/api/v1/webhooks/{id}",
    scopes: ["webhook:write"].freeze
  },
  "upsertCustomerCustomFieldValue" => {
    method: "PUT",
    path: "/api/v1/customers/{id}/custom-fields/{field_id}",
    scopes: ["admin"].freeze
  },
  "upsertLicenseCustomFieldValue" => {
    method: "PUT",
    path: "/api/v1/licenses/{id}/custom-fields/{field_id}",
    scopes: ["license:write"].freeze
  },
}.freeze
MANAGEMENT_SCOPES =
["admin", "device:write", "event:read", "license:read", "license:write", "ops:read", "product:read", "product:write", "report:export", "report:read", "webhook:write"].freeze