mirror of
https://github.com/documenso/documenso.git
synced 2025-11-21 20:21:38 +10:00
feat: open page api (#1419)
This commit is contained in:
25
apps/openpage-api/app/growth/completed-documents/route.ts
Normal file
25
apps/openpage-api/app/growth/completed-documents/route.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import cors from '@/lib/cors';
|
||||
import { getCompletedDocumentsMonthly } from '@/lib/growth/get-monthly-completed-document';
|
||||
|
||||
export async function GET(request: Request) {
|
||||
const completedDocuments = await getCompletedDocumentsMonthly();
|
||||
|
||||
return cors(
|
||||
request,
|
||||
new Response(JSON.stringify(completedDocuments), {
|
||||
status: 200,
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
},
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
export function OPTIONS(request: Request) {
|
||||
return cors(
|
||||
request,
|
||||
new Response(null, {
|
||||
status: 204,
|
||||
}),
|
||||
);
|
||||
}
|
||||
25
apps/openpage-api/app/growth/new-users/route.ts
Normal file
25
apps/openpage-api/app/growth/new-users/route.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import cors from '@/lib/cors';
|
||||
import { getUserMonthlyGrowth } from '@/lib/growth/get-user-monthly-growth';
|
||||
|
||||
export async function GET(request: Request) {
|
||||
const monthlyUsers = await getUserMonthlyGrowth();
|
||||
|
||||
return cors(
|
||||
request,
|
||||
new Response(JSON.stringify(monthlyUsers), {
|
||||
status: 200,
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
},
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
export function OPTIONS(request: Request) {
|
||||
return cors(
|
||||
request,
|
||||
new Response(null, {
|
||||
status: 204,
|
||||
}),
|
||||
);
|
||||
}
|
||||
39
apps/openpage-api/app/growth/route.ts
Normal file
39
apps/openpage-api/app/growth/route.ts
Normal file
@ -0,0 +1,39 @@
|
||||
import type { NextRequest } from 'next/server';
|
||||
|
||||
import cors from '@/lib/cors';
|
||||
|
||||
const paths = [
|
||||
{ path: '/total-customers', description: 'Total Customers' },
|
||||
{ path: '/total-users', description: 'Total Users' },
|
||||
{ path: '/new-users', description: 'New Users' },
|
||||
{ path: '/completed-documents', description: 'Completed Documents per Month' },
|
||||
{ path: '/total-completed-documents', description: 'Total Completed Documents' },
|
||||
{ path: '/signer-conversion', description: 'Signers That Signed Up' },
|
||||
{ path: '/total-signer-conversion', description: 'Total Signers That Signed Up' },
|
||||
];
|
||||
|
||||
export function GET(request: NextRequest) {
|
||||
const url = request.nextUrl.toString();
|
||||
const apis = paths.map(({ path, description }) => {
|
||||
return { path: url + path, description };
|
||||
});
|
||||
|
||||
return cors(
|
||||
request,
|
||||
new Response(JSON.stringify(apis), {
|
||||
status: 200,
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
},
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
export function OPTIONS(request: Request) {
|
||||
return cors(
|
||||
request,
|
||||
new Response(null, {
|
||||
status: 204,
|
||||
}),
|
||||
);
|
||||
}
|
||||
25
apps/openpage-api/app/growth/signer-conversion/route.ts
Normal file
25
apps/openpage-api/app/growth/signer-conversion/route.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import cors from '@/lib/cors';
|
||||
import { getSignerConversionMonthly } from '@/lib/growth/get-signer-conversion';
|
||||
|
||||
export async function GET(request: Request) {
|
||||
const signers = await getSignerConversionMonthly();
|
||||
|
||||
return cors(
|
||||
request,
|
||||
new Response(JSON.stringify(signers), {
|
||||
status: 200,
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
},
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
export function OPTIONS(request: Request) {
|
||||
return cors(
|
||||
request,
|
||||
new Response(null, {
|
||||
status: 204,
|
||||
}),
|
||||
);
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
import cors from '@/lib/cors';
|
||||
import { getCompletedDocumentsMonthly } from '@/lib/growth/get-monthly-completed-document';
|
||||
|
||||
export async function GET(request: Request) {
|
||||
const totalCompletedDocuments = await getCompletedDocumentsMonthly('cumulative');
|
||||
|
||||
return cors(
|
||||
request,
|
||||
new Response(JSON.stringify(totalCompletedDocuments), {
|
||||
status: 200,
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
},
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
export function OPTIONS(request: Request) {
|
||||
return cors(
|
||||
request,
|
||||
new Response(null, {
|
||||
status: 204,
|
||||
}),
|
||||
);
|
||||
}
|
||||
31
apps/openpage-api/app/growth/total-customers/route.ts
Normal file
31
apps/openpage-api/app/growth/total-customers/route.ts
Normal file
@ -0,0 +1,31 @@
|
||||
import cors from '@/lib/cors';
|
||||
import { transformData } from '@/lib/transform-data';
|
||||
|
||||
export async function GET(request: Request) {
|
||||
const res = await fetch('https://stargrazer-live.onrender.com/api/stats/stripe');
|
||||
const EARLY_ADOPTERS_DATA = await res.json();
|
||||
|
||||
const transformedData = transformData({
|
||||
data: EARLY_ADOPTERS_DATA,
|
||||
metric: 'earlyAdopters',
|
||||
});
|
||||
|
||||
return cors(
|
||||
request,
|
||||
new Response(JSON.stringify(transformedData), {
|
||||
status: 200,
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
},
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
export function OPTIONS(request: Request) {
|
||||
return cors(
|
||||
request,
|
||||
new Response(null, {
|
||||
status: 204,
|
||||
}),
|
||||
);
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
import cors from '@/lib/cors';
|
||||
import { getSignerConversionMonthly } from '@/lib/growth/get-signer-conversion';
|
||||
|
||||
export async function GET(request: Request) {
|
||||
const totalSigners = await getSignerConversionMonthly('cumulative');
|
||||
|
||||
return cors(
|
||||
request,
|
||||
new Response(JSON.stringify(totalSigners), {
|
||||
status: 200,
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
},
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
export function OPTIONS(request: Request) {
|
||||
return cors(
|
||||
request,
|
||||
new Response(null, {
|
||||
status: 204,
|
||||
}),
|
||||
);
|
||||
}
|
||||
25
apps/openpage-api/app/growth/total-users/route.ts
Normal file
25
apps/openpage-api/app/growth/total-users/route.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import cors from '@/lib/cors';
|
||||
import { getUserMonthlyGrowth } from '@/lib/growth/get-user-monthly-growth';
|
||||
|
||||
export async function GET(request: Request) {
|
||||
const totalUsers = await getUserMonthlyGrowth("cumulative");
|
||||
|
||||
return cors(
|
||||
request,
|
||||
new Response(JSON.stringify(totalUsers), {
|
||||
status: 200,
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
},
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
export function OPTIONS(request: Request) {
|
||||
return cors(
|
||||
request,
|
||||
new Response(null, {
|
||||
status: 204,
|
||||
}),
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user