mirror of
https://github.com/documenso/documenso.git
synced 2025-11-13 08:13:56 +10:00
Extracts the API implementation to a package so we can potentially reuse it across different applications in the event that we move off using a Next.js API route. Additionally tidies up the tokens page and form to be more simplified.
85 lines
2.2 KiB
TypeScript
85 lines
2.2 KiB
TypeScript
import { initContract } from '@ts-rest/core';
|
|
|
|
import {
|
|
ZSendDocumentForSigningMutationSchema as SendDocumentMutationSchema,
|
|
ZAuthorizationHeadersSchema,
|
|
ZCreateDocumentMutationSchema,
|
|
ZDeleteDocumentMutationSchema,
|
|
ZGetDocumentsQuerySchema,
|
|
ZSuccessfulDocumentResponseSchema,
|
|
ZSuccessfulResponseSchema,
|
|
ZSuccessfulSigningResponseSchema,
|
|
ZUnsuccessfulResponseSchema,
|
|
ZUploadDocumentSuccessfulSchema,
|
|
} from './schema';
|
|
|
|
const c = initContract();
|
|
|
|
export const ApiContractV1 = c.router(
|
|
{
|
|
getDocuments: {
|
|
method: 'GET',
|
|
path: '/documents',
|
|
query: ZGetDocumentsQuerySchema,
|
|
responses: {
|
|
200: ZSuccessfulResponseSchema,
|
|
401: ZUnsuccessfulResponseSchema,
|
|
404: ZUnsuccessfulResponseSchema,
|
|
},
|
|
summary: 'Get all documents',
|
|
},
|
|
|
|
getDocument: {
|
|
method: 'GET',
|
|
path: `/documents/:id`,
|
|
responses: {
|
|
200: ZSuccessfulDocumentResponseSchema,
|
|
401: ZUnsuccessfulResponseSchema,
|
|
404: ZUnsuccessfulResponseSchema,
|
|
},
|
|
summary: 'Get a single document',
|
|
},
|
|
|
|
createDocument: {
|
|
method: 'POST',
|
|
path: '/documents',
|
|
body: ZCreateDocumentMutationSchema,
|
|
responses: {
|
|
200: ZUploadDocumentSuccessfulSchema,
|
|
401: ZUnsuccessfulResponseSchema,
|
|
404: ZUnsuccessfulResponseSchema,
|
|
},
|
|
summary: 'Upload a new document and get a presigned URL',
|
|
},
|
|
|
|
sendDocument: {
|
|
method: 'PATCH',
|
|
path: '/documents/:id/send',
|
|
body: SendDocumentMutationSchema,
|
|
responses: {
|
|
200: ZSuccessfulSigningResponseSchema,
|
|
400: ZUnsuccessfulResponseSchema,
|
|
401: ZUnsuccessfulResponseSchema,
|
|
404: ZUnsuccessfulResponseSchema,
|
|
500: ZUnsuccessfulResponseSchema,
|
|
},
|
|
summary: 'Send a document for signing',
|
|
},
|
|
|
|
deleteDocument: {
|
|
method: 'DELETE',
|
|
path: `/documents/:id`,
|
|
body: ZDeleteDocumentMutationSchema,
|
|
responses: {
|
|
200: ZSuccessfulDocumentResponseSchema,
|
|
401: ZUnsuccessfulResponseSchema,
|
|
404: ZUnsuccessfulResponseSchema,
|
|
},
|
|
summary: 'Delete a document',
|
|
},
|
|
},
|
|
{
|
|
baseHeaders: ZAuthorizationHeadersSchema,
|
|
},
|
|
);
|