Add queue management dashboard (#15202)
Adds a comprehensive queue management interface to the admin panel for viewing and managing background jobs. **Features:** - Queue detail pages showing paginated job lists (50 per page) - Filter jobs by state: completed, failed, active, waiting, delayed, paused - Checkbox selection with bulk actions (delete jobs, retry failed jobs) - Per-job dropdown menu for individual retry/delete - Expandable rows showing error messages, stack traces, and job data - Relative timestamps with hover tooltips - Display attempt counts on failed jobs - Dynamic retention policy info from backend **Changes:** - Backend: New AdminPanelQueueService with GraphQL endpoints for job listing, retry, and delete - Frontend: Queue detail page with QueueJobsTable component - Updated retention policy: completed jobs kept 4 hours, failed jobs kept 7 days (max 1000 each) - Added JobState enum for type safety <img width="634" height="696" alt="Screenshot_2025-10-20_at_11 45 25" src="https://github.com/user-attachments/assets/c67bcd27-26cf-47f5-9575-3cd5684d006b" /> <img width="484" height="680" alt="Screenshot_2025-10-20_at_11 45 14" src="https://github.com/user-attachments/assets/68725cc6-b3ec-4098-99ca-f9a717d6f8f1" /> <img width="490" height="643" alt="Screenshot_2025-10-20_at_11 45 05" src="https://github.com/user-attachments/assets/b68a5809-33ff-4452-b48b-741aff7f1dd6" /> <img width="685" height="662" alt="Screenshot 2025-10-20 at 13 15 01" src="https://github.com/user-attachments/assets/eeb5207b-de5c-4b18-bdde-392892053dab" />
This commit is contained in:
@@ -19,14 +19,14 @@ export const mockBillingPlans = {
|
||||
},
|
||||
prices: [
|
||||
{
|
||||
__typename: 'BillingPriceLicensedDTO',
|
||||
__typename: 'BillingPriceLicensed',
|
||||
stripePriceId: 'price_1RyF4BQh1LFc4XrXvt7DwNjS',
|
||||
unitAmount: 1200,
|
||||
recurringInterval: 'Month',
|
||||
priceUsageType: 'LICENSED',
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceLicensedDTO',
|
||||
__typename: 'BillingPriceLicensed',
|
||||
stripePriceId: 'price_1RyF4BQh1LFc4XrXK0QSeC7f',
|
||||
unitAmount: 10800,
|
||||
recurringInterval: 'Year',
|
||||
@@ -49,19 +49,19 @@ export const mockBillingPlans = {
|
||||
},
|
||||
prices: [
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Year',
|
||||
stripePriceId: 'price_1S5247Qh1LFc4XrXz7p0wdAc',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 999000,
|
||||
unitAmount: null,
|
||||
upTo: 7500000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -69,19 +69,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Year',
|
||||
stripePriceId: 'price_1S5246Qh1LFc4XrX2SdtgqXV',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 399000,
|
||||
unitAmount: null,
|
||||
upTo: 2600000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -89,19 +89,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Year',
|
||||
stripePriceId: 'price_1S5246Qh1LFc4XrXs78BMPQ9',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 199000,
|
||||
unitAmount: null,
|
||||
upTo: 1200000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -109,19 +109,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Year',
|
||||
stripePriceId: 'price_1S5246Qh1LFc4XrXyMEu78zC',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 99000,
|
||||
unitAmount: null,
|
||||
upTo: 540000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -129,19 +129,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Year',
|
||||
stripePriceId: 'price_1S5245Qh1LFc4XrXcNX3ZHn2',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 29000,
|
||||
unitAmount: null,
|
||||
upTo: 130000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -149,19 +149,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Year',
|
||||
stripePriceId: 'price_1S5245Qh1LFc4XrXBSZDK2pI',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 0,
|
||||
unitAmount: null,
|
||||
upTo: 50000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -169,19 +169,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Month',
|
||||
stripePriceId: 'price_1S5245Qh1LFc4XrXPCSjYIq0',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 99900,
|
||||
unitAmount: null,
|
||||
upTo: 700000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -189,19 +189,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Month',
|
||||
stripePriceId: 'price_1S5244Qh1LFc4XrXswQAQfQh',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 39900,
|
||||
unitAmount: null,
|
||||
upTo: 240000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -209,19 +209,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Month',
|
||||
stripePriceId: 'price_1S5244Qh1LFc4XrXB8yPMpce',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 19900,
|
||||
unitAmount: null,
|
||||
upTo: 110000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -229,19 +229,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Month',
|
||||
stripePriceId: 'price_1S5244Qh1LFc4XrXa5wYhu1M',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 9900,
|
||||
unitAmount: null,
|
||||
upTo: 50000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -249,19 +249,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Month',
|
||||
stripePriceId: 'price_1S5243Qh1LFc4XrX1rtoEZD3',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 2900,
|
||||
unitAmount: null,
|
||||
upTo: 10000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -269,19 +269,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Month',
|
||||
stripePriceId: 'price_1S5243Qh1LFc4XrXaeDkjNQq',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 0,
|
||||
unitAmount: null,
|
||||
upTo: 5000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -309,14 +309,14 @@ export const mockBillingPlans = {
|
||||
},
|
||||
prices: [
|
||||
{
|
||||
__typename: 'BillingPriceLicensedDTO',
|
||||
__typename: 'BillingPriceLicensed',
|
||||
stripePriceId: 'price_1RyF49Qh1LFc4XrX2W6yGRpc',
|
||||
unitAmount: 2500,
|
||||
recurringInterval: 'Month',
|
||||
priceUsageType: 'LICENSED',
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceLicensedDTO',
|
||||
__typename: 'BillingPriceLicensed',
|
||||
stripePriceId: 'price_1RyF48Qh1LFc4XrXw5Tr704k',
|
||||
unitAmount: 22800,
|
||||
recurringInterval: 'Year',
|
||||
@@ -339,19 +339,19 @@ export const mockBillingPlans = {
|
||||
},
|
||||
prices: [
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Year',
|
||||
stripePriceId: 'price_1S4GiuQh1LFc4XrX9IZ68tqy',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 999000,
|
||||
unitAmount: null,
|
||||
upTo: 7500000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -359,19 +359,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Year',
|
||||
stripePriceId: 'price_1S4GirQh1LFc4XrXJxV0yJEX',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 399000,
|
||||
unitAmount: null,
|
||||
upTo: 2600000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -379,19 +379,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Year',
|
||||
stripePriceId: 'price_1S4GirQh1LFc4XrX6fK2qrQm',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 199000,
|
||||
unitAmount: null,
|
||||
upTo: 1200000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -399,19 +399,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Year',
|
||||
stripePriceId: 'price_1S4GipQh1LFc4XrXeamfdifM',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 99000,
|
||||
unitAmount: null,
|
||||
upTo: 540000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -419,19 +419,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Year',
|
||||
stripePriceId: 'price_1S4GipQh1LFc4XrXKxrUDfnE',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 29000,
|
||||
unitAmount: null,
|
||||
upTo: 130000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -439,19 +439,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Year',
|
||||
stripePriceId: 'price_1S4GioQh1LFc4XrXMTbLurFo',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 0,
|
||||
unitAmount: null,
|
||||
upTo: 50000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -459,19 +459,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Month',
|
||||
stripePriceId: 'price_1S4GinQh1LFc4XrXP3sgt8Cn',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 99900,
|
||||
unitAmount: null,
|
||||
upTo: 700000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -479,19 +479,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Month',
|
||||
stripePriceId: 'price_1S4GigQh1LFc4XrXGsuGslfk',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 39900,
|
||||
unitAmount: null,
|
||||
upTo: 240000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -499,19 +499,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Month',
|
||||
stripePriceId: 'price_1S4GifQh1LFc4XrXCsT2PvH2',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 19900,
|
||||
unitAmount: null,
|
||||
upTo: 110000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -519,19 +519,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Month',
|
||||
stripePriceId: 'price_1S4GifQh1LFc4XrXZ0ZIrjeM',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 9900,
|
||||
unitAmount: null,
|
||||
upTo: 50000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -539,19 +539,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Month',
|
||||
stripePriceId: 'price_1S4GieQh1LFc4XrX8njwswjQ',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 2900,
|
||||
unitAmount: null,
|
||||
upTo: 10000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
@@ -559,19 +559,19 @@ export const mockBillingPlans = {
|
||||
],
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceMeteredDTO',
|
||||
__typename: 'BillingPriceMetered',
|
||||
priceUsageType: 'METERED',
|
||||
recurringInterval: 'Month',
|
||||
stripePriceId: 'price_1S4GieQh1LFc4XrXDpVbLuuE',
|
||||
tiers: [
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: 0,
|
||||
unitAmount: null,
|
||||
upTo: 5000000,
|
||||
},
|
||||
{
|
||||
__typename: 'BillingPriceTierDTO',
|
||||
__typename: 'BillingPriceTier',
|
||||
flatAmount: null,
|
||||
unitAmount: null,
|
||||
upTo: null,
|
||||
|
||||
Reference in New Issue
Block a user