import { initContract } from '@ts-rest/core'; import { ZSendDocumentForSigningMutationSchema as SendDocumentMutationSchema, ZAuthorizationHeadersSchema, ZCreateDocumentMutationResponseSchema, ZCreateDocumentMutationSchema, ZCreateFieldMutationSchema, ZCreateRecipientMutationSchema, ZDeleteDocumentMutationSchema, ZDeleteFieldMutationSchema, ZDeleteRecipientMutationSchema, ZGetDocumentsQuerySchema, ZSuccessfulDocumentResponseSchema, ZSuccessfulFieldResponseSchema, 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: ZSuccessfulDocumentResponseSchema, 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', }, 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, }, );