mirror of
https://github.com/documenso/documenso.git
synced 2025-11-12 15:53:02 +10:00
192 lines
5.6 KiB
TypeScript
192 lines
5.6 KiB
TypeScript
import { initContract } from '@ts-rest/core';
|
|
|
|
import {
|
|
ZSendDocumentForSigningMutationSchema as SendDocumentMutationSchema,
|
|
ZAuthorizationHeadersSchema,
|
|
ZCreateDocumentFromTemplateMutationResponseSchema,
|
|
ZCreateDocumentFromTemplateMutationSchema,
|
|
ZCreateDocumentMutationResponseSchema,
|
|
ZCreateDocumentMutationSchema,
|
|
ZCreateFieldMutationSchema,
|
|
ZCreateRecipientMutationSchema,
|
|
ZDeleteDocumentMutationSchema,
|
|
ZDeleteFieldMutationSchema,
|
|
ZDeleteRecipientMutationSchema,
|
|
ZGetDocumentsQuerySchema,
|
|
ZSuccessfulDocumentResponseSchema,
|
|
ZSuccessfulFieldResponseSchema,
|
|
ZSuccessfulGetDocumentResponseSchema,
|
|
ZSuccessfulRecipientResponseSchema,
|
|
ZSuccessfulResponseSchema,
|
|
ZSuccessfulSigningResponseSchema,
|
|
ZUnsuccessfulResponseSchema,
|
|
ZUpdateFieldMutationSchema,
|
|
ZUpdateRecipientMutationSchema,
|
|
} from './schema';
|
|
|
|
const c = initContract();
|
|
|
|
export const ApiContractV1 = c.router(
|
|
{
|
|
getDocuments: {
|
|
method: 'GET',
|
|
path: '/api/v1/documents',
|
|
query: ZGetDocumentsQuerySchema,
|
|
responses: {
|
|
200: ZSuccessfulResponseSchema,
|
|
401: ZUnsuccessfulResponseSchema,
|
|
404: ZUnsuccessfulResponseSchema,
|
|
},
|
|
summary: 'Get all documents',
|
|
},
|
|
|
|
getDocument: {
|
|
method: 'GET',
|
|
path: '/api/v1/documents/:id',
|
|
responses: {
|
|
200: ZSuccessfulGetDocumentResponseSchema,
|
|
401: ZUnsuccessfulResponseSchema,
|
|
404: ZUnsuccessfulResponseSchema,
|
|
},
|
|
summary: 'Get a single document',
|
|
},
|
|
|
|
createDocument: {
|
|
method: 'POST',
|
|
path: '/api/v1/documents',
|
|
body: ZCreateDocumentMutationSchema,
|
|
responses: {
|
|
200: ZCreateDocumentMutationResponseSchema,
|
|
401: ZUnsuccessfulResponseSchema,
|
|
404: ZUnsuccessfulResponseSchema,
|
|
},
|
|
summary: 'Upload a new document and get a presigned URL',
|
|
},
|
|
|
|
createDocumentFromTemplate: {
|
|
method: 'POST',
|
|
path: '/api/v1/templates/:templateId/create-document',
|
|
body: ZCreateDocumentFromTemplateMutationSchema,
|
|
responses: {
|
|
200: ZCreateDocumentFromTemplateMutationResponseSchema,
|
|
401: ZUnsuccessfulResponseSchema,
|
|
404: ZUnsuccessfulResponseSchema,
|
|
},
|
|
summary: 'Upload a new document and get a presigned URL',
|
|
},
|
|
|
|
sendDocument: {
|
|
method: 'POST',
|
|
path: '/api/v1/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: '/api/v1/documents/:id',
|
|
body: ZDeleteDocumentMutationSchema,
|
|
responses: {
|
|
200: ZSuccessfulDocumentResponseSchema,
|
|
401: ZUnsuccessfulResponseSchema,
|
|
404: ZUnsuccessfulResponseSchema,
|
|
},
|
|
summary: 'Delete a document',
|
|
},
|
|
|
|
createRecipient: {
|
|
method: 'POST',
|
|
path: '/api/v1/documents/:id/recipients',
|
|
body: ZCreateRecipientMutationSchema,
|
|
responses: {
|
|
200: ZSuccessfulRecipientResponseSchema,
|
|
400: ZUnsuccessfulResponseSchema,
|
|
401: ZUnsuccessfulResponseSchema,
|
|
404: ZUnsuccessfulResponseSchema,
|
|
500: ZUnsuccessfulResponseSchema,
|
|
},
|
|
summary: 'Create a recipient for a document',
|
|
},
|
|
|
|
updateRecipient: {
|
|
method: 'PATCH',
|
|
path: '/api/v1/documents/:id/recipients/:recipientId',
|
|
body: ZUpdateRecipientMutationSchema,
|
|
responses: {
|
|
200: ZSuccessfulRecipientResponseSchema,
|
|
400: ZUnsuccessfulResponseSchema,
|
|
401: ZUnsuccessfulResponseSchema,
|
|
404: ZUnsuccessfulResponseSchema,
|
|
500: ZUnsuccessfulResponseSchema,
|
|
},
|
|
summary: 'Update a recipient for a document',
|
|
},
|
|
|
|
deleteRecipient: {
|
|
method: 'DELETE',
|
|
path: '/api/v1/documents/:id/recipients/:recipientId',
|
|
body: ZDeleteRecipientMutationSchema,
|
|
responses: {
|
|
200: ZSuccessfulRecipientResponseSchema,
|
|
400: ZUnsuccessfulResponseSchema,
|
|
401: ZUnsuccessfulResponseSchema,
|
|
404: ZUnsuccessfulResponseSchema,
|
|
500: ZUnsuccessfulResponseSchema,
|
|
},
|
|
summary: 'Delete a recipient from a document',
|
|
},
|
|
|
|
createField: {
|
|
method: 'POST',
|
|
path: '/api/v1/documents/:id/fields',
|
|
body: ZCreateFieldMutationSchema,
|
|
responses: {
|
|
200: ZSuccessfulFieldResponseSchema,
|
|
400: ZUnsuccessfulResponseSchema,
|
|
401: ZUnsuccessfulResponseSchema,
|
|
404: ZUnsuccessfulResponseSchema,
|
|
500: ZUnsuccessfulResponseSchema,
|
|
},
|
|
summary: 'Create a field for a document',
|
|
},
|
|
|
|
updateField: {
|
|
method: 'PATCH',
|
|
path: '/api/v1/documents/:id/fields/:fieldId',
|
|
body: ZUpdateFieldMutationSchema,
|
|
responses: {
|
|
200: ZSuccessfulFieldResponseSchema,
|
|
400: ZUnsuccessfulResponseSchema,
|
|
401: ZUnsuccessfulResponseSchema,
|
|
404: ZUnsuccessfulResponseSchema,
|
|
500: ZUnsuccessfulResponseSchema,
|
|
},
|
|
summary: 'Update a field for a document',
|
|
},
|
|
|
|
deleteField: {
|
|
method: 'DELETE',
|
|
path: '/api/v1/documents/:id/fields/:fieldId',
|
|
body: ZDeleteFieldMutationSchema,
|
|
responses: {
|
|
200: ZSuccessfulFieldResponseSchema,
|
|
400: ZUnsuccessfulResponseSchema,
|
|
401: ZUnsuccessfulResponseSchema,
|
|
404: ZUnsuccessfulResponseSchema,
|
|
500: ZUnsuccessfulResponseSchema,
|
|
},
|
|
summary: 'Delete a field from a document',
|
|
},
|
|
},
|
|
{
|
|
baseHeaders: ZAuthorizationHeadersSchema,
|
|
},
|
|
);
|