import { initContract } from '@ts-rest/core'; import { ZSendDocumentForSigningMutationSchema as SendDocumentMutationSchema, ZAuthorizationHeadersSchema, ZCreateDocumentMutationSchema, ZCreateRecipientMutationSchema, ZDeleteDocumentMutationSchema, ZGetDocumentsQuerySchema, ZSuccessfulDocumentResponseSchema, ZSuccessfulRecipientResponseSchema, ZSuccessfulResponseSchema, ZSuccessfulSigningResponseSchema, ZUnsuccessfulResponseSchema, ZUploadDocumentSuccessfulSchema, } 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: ZSuccessfulDocumentResponseSchema, 401: ZUnsuccessfulResponseSchema, 404: ZUnsuccessfulResponseSchema, }, summary: 'Get a single document', }, createDocument: { method: 'POST', path: '/api/v1/documents', body: ZCreateDocumentMutationSchema, responses: { 200: ZUploadDocumentSuccessfulSchema, 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', }, }, { baseHeaders: ZAuthorizationHeadersSchema, }, );