{ "openapi": "3.0.0", "info": { "title": "Abby Public API", "description": "Official public API for Abby - Business management for freelancers and micro-enterprises.", "version": "1.0", "contact": { "name": "Abby Support", "url": "https://abby.fr" } }, "servers": [ { "url": "https://api.abby.fr", "description": "Production server" } ], "paths": { "/v2/billing/estimate/{customerId}": { "post": { "operationId": "EstimateController-createEstimateByContactOrOrganizationId", "parameters": [ { "name": "customerId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateEstimateByCustomerIdDto" } } } }, "responses": { "201": { "description": "Estimate created successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadEstimateDto" } } } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" } }, "security": [ { "bearer": [] } ], "summary": "Create a new estimate with a customerId that can be a contactId or an organizationId", "tags": [ "estimate" ] } }, "/v2/billing/estimate/{estimateId}/timeline": { "patch": { "operationId": "EstimateController-updateTimeline", "parameters": [ { "name": "estimateId", "required": true, "in": "path", "description": "ID of the estimate to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateEstimateTimelineDto" } } } }, "responses": { "200": { "description": "Estimate timeline updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadEstimateDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Update estimate timeline", "tags": [ "estimate" ] } }, "/v2/billing/estimate/{estimateId}/sign": { "patch": { "operationId": "EstimateController-sign", "parameters": [ { "name": "estimateId", "required": true, "in": "path", "description": "ID of the estimate or purchase order to sign", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Estimate or purchase order signed successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadEstimateDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Sign estimate or purchase order", "tags": [ "estimate" ] } }, "/v2/billing/estimate/{estimateId}/unsign": { "patch": { "operationId": "EstimateController-unsign", "parameters": [ { "name": "estimateId", "required": true, "in": "path", "description": "ID of the estimate or purchase order to unsign", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Estimate or purchase order unsigned successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadEstimateDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Unsign estimate or purchase order", "tags": [ "estimate" ] } }, "/v2/billing/estimate/{estimateId}/refuse": { "patch": { "operationId": "EstimateController-refuse", "parameters": [ { "name": "estimateId", "required": true, "in": "path", "description": "ID of the estimate or purchase order to refuse", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Estimate or purchase order refused successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadEstimateDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Refuse estimate or purchase order", "tags": [ "estimate" ] } }, "/v2/billing/estimate/{estimateId}/unrefuse": { "patch": { "operationId": "EstimateController-unrefuse", "parameters": [ { "name": "estimateId", "required": true, "in": "path", "description": "ID of the estimate or purchase order to unrefuse", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Estimate or purchase order unrefused successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadEstimateDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Unrefuse estimate or purchase order", "tags": [ "estimate" ] } }, "/v2/billing/estimate/{id}/advance": { "post": { "operationId": "EstimateController-createAdvance", "parameters": [ { "name": "id", "required": true, "in": "path", "description": "ID of the estimate to update", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Invoice advance created successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadAdvanceDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Create invoice advance", "tags": [ "estimate" ] } }, "/v2/billing/estimate/{estimateId}/general-informations": { "patch": { "operationId": "EstimateController-updateGeneralInformations", "parameters": [ { "name": "estimateId", "required": true, "in": "path", "description": "ID of the estimate to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateEstimateGeneralInformationsDto" } } } }, "responses": { "200": { "description": "Estimate general informations updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadEstimateDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Estimate not found" } }, "security": [ { "bearer": [] } ], "summary": "Update estimate general informations", "tags": [ "estimate" ] } }, "/v2/billing/estimate/{estimateId}/locale": { "put": { "operationId": "EstimateController-updateLocale", "parameters": [ { "name": "estimateId", "required": true, "in": "path", "description": "ID of the estimate to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBillingLocaleDto" } } } }, "responses": { "200": { "description": "Estimate locale updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadEstimateDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Estimate not found" } }, "security": [ { "bearer": [] } ], "summary": "Update estimate locale", "tags": [ "estimate" ] } }, "/v2/billing/estimate/{estimateId}/currency": { "put": { "operationId": "EstimateController-updateCurrency", "parameters": [ { "name": "estimateId", "required": true, "in": "path", "description": "ID of the estimate to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBillingCurrencyDto" } } } }, "responses": { "200": { "description": "Asset currency updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadEstimateDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Estimate not found" } }, "security": [ { "bearer": [] } ], "summary": "Update asset currency", "tags": [ "estimate" ] } }, "/v2/billing/estimate/{estimateId}/advance-lines": { "patch": { "operationId": "EstimateController-updateAdvanceLines", "parameters": [ { "name": "estimateId", "required": true, "in": "path", "description": "ID of the estimate to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateEstimateAdvanceLinesDto" } } } }, "responses": { "200": { "description": "Estimate advance lines updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadEstimateDto" } } } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "404": { "description": "Estimate not found" } }, "security": [ { "bearer": [] } ], "summary": "Update estimate advance lines", "tags": [ "estimate" ] } }, "/v2/billing/invoice/{invoiceId}": { "get": { "operationId": "InvoiceController-getInvoice", "parameters": [ { "name": "invoiceId", "required": true, "in": "path", "description": "ID of the invoice to retrieve", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Invoice retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadInvoiceDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Get an invoice by ID", "tags": [ "invoice" ] } }, "/v2/billing/invoice/{customerId}": { "post": { "operationId": "InvoiceController-createInvoiceByContactOrOrganizationId", "parameters": [ { "name": "customerId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "201": { "description": "Invoice created successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadInvoiceDto" } } } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" } }, "security": [ { "bearer": [] } ], "summary": "Create a new invoice with a customerId that can be a contactId or an organizationId", "tags": [ "invoice" ] } }, "/v2/billing/invoice/{invoiceId}/lines": { "patch": { "deprecated": true, "description": "Use the PATCH /v2/billing/{billingId}/lines endpoint instead", "operationId": "InvoiceController-updateInvoiceLines", "parameters": [ { "name": "invoiceId", "required": true, "in": "path", "description": "ID of the invoice to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBillingLinesDto" } } } }, "responses": { "200": { "description": "Invoice lines updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadInvoiceDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Update invoice lines", "tags": [ "invoice" ] } }, "/v2/billing/invoice/{invoiceId}/delivery-address": { "patch": { "deprecated": true, "description": "Use the PATCH /v2/billing/{billingId}/delivery-address endpoint instead", "operationId": "InvoiceController-updateInvoiceDeliveryAddress", "parameters": [ { "name": "invoiceId", "required": true, "in": "path", "description": "ID of the invoice to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateInvoiceDeliveryAddressDto" } } } }, "responses": { "200": { "description": "Invoice delivery address updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadInvoiceDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "** DEPRECATED 1.91 read description ** Update invoice delivery address", "tags": [ "invoice" ] } }, "/v2/billing/invoice/{invoiceId}/timeline": { "patch": { "operationId": "InvoiceController-updateTimeline", "parameters": [ { "name": "invoiceId", "required": true, "in": "path", "description": "ID of the invoice to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateInvoiceTimelineDto" } } } }, "responses": { "200": { "description": "Invoice timeline updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadInvoiceDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Update invoice timeline", "tags": [ "invoice" ] } }, "/v2/billing/invoice/{invoiceId}/payment-request": { "patch": { "operationId": "InvoiceController-updateInvoicePaymentRequest", "parameters": [ { "name": "invoiceId", "required": true, "in": "path", "description": "ID of the invoice to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateInvoicePaymentRequestDto" } } } }, "responses": { "200": { "description": "Payment request updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadInvoiceDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Create or update invoice payment request infos", "tags": [ "invoice" ] } }, "/v2/billing/invoice/{invoiceId}/finalize": { "patch": { "deprecated": true, "description": "Use the PATCH /v2/billing/{billingId}/finalize endpoint instead", "operationId": "InvoiceController-finalizeInvoice", "parameters": [ { "name": "invoiceId", "required": true, "in": "path", "description": "ID of the invoice to finalize", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Invoice finalized successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadInvoiceDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "** DEPRECATED 1.91 read description ** Finalize an invoice", "tags": [ "invoice" ] } }, "/v2/billing/invoice/{invoiceId}/general-informations": { "patch": { "operationId": "InvoiceController-updateInvoiceGeneralInformations", "parameters": [ { "name": "invoiceId", "required": true, "in": "path", "description": "ID of the invoice to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateInvoiceGeneralInformationsDto" } } } }, "responses": { "200": { "description": "Invoice general informations updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadInvoiceDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Update invoice general informations", "tags": [ "invoice" ] } }, "/v2/billing/invoice/{invoiceId}/locale": { "put": { "operationId": "InvoiceController-updateInvoiceLocale", "parameters": [ { "name": "invoiceId", "required": true, "in": "path", "description": "ID of the invoice to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBillingLocaleDto" } } } }, "responses": { "200": { "description": "Invoice locale updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadInvoiceDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Update invoice locale", "tags": [ "invoice" ] } }, "/v2/billing/invoice/{invoiceId}/currency": { "put": { "operationId": "InvoiceController-updateInvoiceCurrency", "parameters": [ { "name": "invoiceId", "required": true, "in": "path", "description": "ID of the invoice to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBillingCurrencyDto" } } } }, "responses": { "200": { "description": "Invoice currency updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadInvoiceDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Update invoice currency", "tags": [ "invoice" ] } }, "/v2/billing/invoice/{invoiceId}/display-settings": { "patch": { "deprecated": true, "description": "Use the PATCH /v2/billing/{billingId}/display-settings endpoint instead", "operationId": "InvoiceController-updateDisplaySettings", "parameters": [ { "name": "invoiceId", "required": true, "in": "path", "description": "ID de la facture à mettre à jour", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBillingDisplaySettingsDto" } } } }, "responses": { "200": { "description": "Paramètres d'affichage de la facture mis à jour avec succès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadInvoiceDto" } } } }, "401": { "description": "Non autorisé" }, "404": { "description": "Facture non trouvée" } }, "security": [ { "bearer": [] } ], "summary": "** DEPRECATED ** Mettre à jour les paramètres d'affichage de la facture", "tags": [ "invoice" ] } }, "/v2/billing/invoice/{invoiceId}/bank-information": { "patch": { "deprecated": true, "description": "Use the PATCH /v2/billing/{billingId}/bank-information endpoint instead", "operationId": "InvoiceController-updateInvoiceBankInformation", "parameters": [ { "name": "invoiceId", "required": true, "in": "path", "description": "ID of the invoice to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateInvoiceBankInformationDto" } } } }, "responses": { "200": { "description": "Invoice bank information updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadInvoiceDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "** DEPRECATED 1.91 read description ** Update invoice bank information", "tags": [ "invoice" ] } }, "/v2/billing/invoice/{invoiceId}/frequency": { "post": { "operationId": "InvoiceController-createInvoiceFrequency", "parameters": [ { "name": "invoiceId", "required": true, "in": "path", "description": "ID of the invoice to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateInvoiceFrequencyDto" } } } }, "responses": { "200": { "description": "Invoice frequency created successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadInvoiceDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Create invoice frequency", "tags": [ "invoice" ] }, "delete": { "operationId": "InvoiceController-deleteInvoiceFrequency", "parameters": [ { "name": "invoiceId", "required": true, "in": "path", "description": "ID of the invoice to update", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Invoice frequency deleted successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadInvoiceDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Create invoice frequency", "tags": [ "invoice" ] }, "put": { "operationId": "InvoiceController-updateInvoiceFrequency", "parameters": [ { "name": "invoiceId", "required": true, "in": "path", "description": "ID of the invoice to update", "schema": { "type": "string" } }, { "name": "frequencyId", "required": true, "in": "path", "description": "ID of the frequency to update", "schema": {} } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateInvoiceFrequencyDto" } } } }, "responses": { "200": { "description": "Invoice bank information updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadInvoiceDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Update invoice frequency", "tags": [ "invoice" ] } }, "/v2/billing/invoice/{invoiceId}/asset": { "post": { "operationId": "InvoiceController-createAsset", "parameters": [ { "name": "invoiceId", "required": true, "in": "path", "description": "ID of the invoice to create asset from", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Asset created successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadAssetDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Create asset from invoice", "tags": [ "invoice" ] } }, "/v2/billing/{billingId}/download": { "get": { "operationId": "BillingController-downloadPDF", "parameters": [ { "name": "billingId", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "locale", "required": false, "in": "query", "description": "Locale for the PDF generation", "schema": { "$ref": "#/components/schemas/BillingLocale" } } ], "responses": { "200": { "description": "", "content": { "application/pdf": { "schema": { "type": "string", "format": "binary" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Billing document not found" } }, "security": [ { "bearer": [] } ], "summary": "Download a billing document", "tags": [ "Billing" ] } }, "/v2/billing/{documentId}/archive": { "patch": { "operationId": "BillingController-archiveBillingDocument", "parameters": [ { "name": "documentId", "required": true, "in": "path", "description": "ID of the document to archive", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Document archived successfully", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ReadInvoiceDto" }, { "$ref": "#/components/schemas/ReadEstimateDto" }, { "$ref": "#/components/schemas/ReadAdvanceDto" }, { "$ref": "#/components/schemas/ReadAssetDto" } ] } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Document not found" } }, "security": [ { "bearer": [] } ], "summary": "Archive a document", "tags": [ "Billing" ] } }, "/v2/billing/{documentId}/unarchive": { "patch": { "operationId": "BillingController-unarchiveBillingDocument", "parameters": [ { "name": "documentId", "required": true, "in": "path", "description": "ID of the document to unarchive", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Document unarchived successfully", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ReadInvoiceDto" }, { "$ref": "#/components/schemas/ReadEstimateDto" }, { "$ref": "#/components/schemas/ReadAdvanceDto" }, { "$ref": "#/components/schemas/ReadAssetDto" } ] } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Document not found" } }, "security": [ { "bearer": [] } ], "summary": "Unarchive a document", "tags": [ "Billing" ] } }, "/v2/billing/{documentId}/title": { "patch": { "operationId": "BillingController-updateTitle", "parameters": [ { "name": "documentId", "required": true, "in": "path", "description": "ID of the document to update title", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTitleDto" } } } }, "responses": { "200": { "description": "Title updated successfully", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ReadInvoiceDto" }, { "$ref": "#/components/schemas/ReadEstimateDto" }, { "$ref": "#/components/schemas/ReadAdvanceDto" }, { "$ref": "#/components/schemas/ReadAssetDto" } ] } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Update title of a document", "tags": [ "Billing" ] } }, "/v2/billing/{documentId}": { "delete": { "operationId": "BillingController-deleteBillingDocument", "parameters": [ { "name": "documentId", "required": true, "in": "path", "description": "ID of the document to delete", "schema": { "type": "string" } } ], "responses": { "204": { "description": "Document deleted successfully" }, "401": { "description": "Unauthorized" }, "404": { "description": "Document not found" } }, "security": [ { "bearer": [] } ], "summary": "Definitely delete a document", "tags": [ "Billing" ] }, "get": { "operationId": "BillingController-getBillingById", "parameters": [ { "name": "documentId", "required": true, "in": "path", "description": "ID of the billing document", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Billing document retrieved successfully", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ReadInvoiceDto" }, { "$ref": "#/components/schemas/ReadEstimateDto" }, { "$ref": "#/components/schemas/ReadAdvanceDto" }, { "$ref": "#/components/schemas/ReadAssetDto" } ] } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Billing document not found" } }, "security": [ { "bearer": [] } ], "summary": "Get a billing document by ID (any type)", "tags": [ "Billing" ] } }, "/v2/billing/send-test-signature": { "post": { "operationId": "BillingController-sendTestEmailSignature", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SendTestEmailSignatureDto" } } } }, "responses": { "204": { "description": "Email sent successfully" }, "401": { "description": "Unauthorized" } }, "security": [ { "bearer": [] } ], "tags": [ "Billing" ] } }, "/v2/billing/{billingId}/email/{emailType}/render": { "get": { "operationId": "BillingController-renderEmail", "parameters": [ { "name": "billingId", "required": true, "in": "path", "description": "ID of the billing to render", "schema": { "type": "string" } }, { "name": "emailType", "required": true, "in": "path", "description": "Type of email to render", "schema": { "$ref": "#/components/schemas/BillingEmailType" } } ], "responses": { "200": { "description": "Email rendu avec succès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadBillingEmailDto" } } } }, "401": { "description": "Non autorisé" }, "404": { "description": "Document non trouvée" } }, "security": [ { "bearer": [] } ], "summary": "Render a billing email", "tags": [ "Billing" ] } }, "/v2/billing/{billingId}/email/{emailType}/test": { "post": { "operationId": "BillingController-sendEmailTest", "parameters": [ { "name": "billingId", "required": true, "in": "path", "description": "ID of the billing to send the email test", "schema": { "type": "string" } }, { "name": "emailType", "required": true, "in": "path", "description": "Type of email to send", "schema": { "$ref": "#/components/schemas/BillingEmailType" } } ], "responses": { "204": { "description": "Email sent successfully" }, "401": { "description": "Non autorisé" }, "404": { "description": "Document non trouvée" } }, "security": [ { "bearer": [] } ], "summary": "Send an invoice email test", "tags": [ "Billing" ] } }, "/v2/billing/{billingId}/send-by-email": { "post": { "operationId": "BillingController-sendByEmail", "parameters": [ { "name": "billingId", "required": true, "in": "path", "description": "ID of the billing document to send", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SendBillingByEmailDto" } } } }, "responses": { "204": { "description": "Email sent successfully" }, "400": { "description": "Too many emails sent for this billing" }, "401": { "description": "Unauthorized" }, "403": { "description": "Plan feature not available" }, "404": { "description": "Billing document not found" } }, "security": [ { "bearer": [] } ], "summary": "Send billing document by email", "tags": [ "Billing" ] } }, "/v2/billing/{billingId}/bank-information": { "patch": { "operationId": "BillingController-updateBankInformation", "parameters": [ { "name": "billingId", "required": true, "in": "path", "description": "ID of the billing to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBillingBankInformationDto" } } } }, "responses": { "200": { "description": "Billing bank information updated successfully", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ReadInvoiceDto" }, { "$ref": "#/components/schemas/ReadEstimateDto" }, { "$ref": "#/components/schemas/ReadAdvanceDto" }, { "$ref": "#/components/schemas/ReadAssetDto" } ] } } } }, "400": { "description": "asset.cannot_update_bank_information" }, "401": { "description": "Unauthorized" }, "404": { "description": "Billing not found" } }, "security": [ { "bearer": [] } ], "summary": "Update document bank information", "tags": [ "Billing" ] } }, "/v2/billing/{billingId}/delivery-address": { "patch": { "operationId": "BillingController-updateBillingDeliveryAddress", "parameters": [ { "name": "billingId", "required": true, "in": "path", "description": "ID of the billing to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBillingDeliveryAddressDto" } } } }, "responses": { "200": { "description": "Billing delivery address updated successfully", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ReadInvoiceDto" }, { "$ref": "#/components/schemas/ReadEstimateDto" }, { "$ref": "#/components/schemas/ReadAdvanceDto" }, { "$ref": "#/components/schemas/ReadAssetDto" } ] } } } }, "400": { "description": "asset.cannot_update_delivery_address" }, "401": { "description": "Unauthorized" }, "404": { "description": "Billing not found" } }, "security": [ { "bearer": [] } ], "summary": "Update document delivery address", "tags": [ "Billing" ] } }, "/v2/billing/{billingId}/finalize": { "patch": { "operationId": "BillingController-finalize", "parameters": [ { "name": "billingId", "required": true, "in": "path", "description": "ID of the billing to finalize", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Billing finalized successfully", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ReadInvoiceDto" }, { "$ref": "#/components/schemas/ReadEstimateDto" }, { "$ref": "#/components/schemas/ReadAdvanceDto" }, { "$ref": "#/components/schemas/ReadAssetDto" } ] } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Finalize a billing document", "tags": [ "Billing" ] } }, "/v2/billing/{billingId}/lines": { "patch": { "operationId": "BillingController-updateLines", "parameters": [ { "name": "billingId", "required": true, "in": "path", "description": "ID of the billing to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBillingLinesDto" } } } }, "responses": { "200": { "description": "Billing lines updated successfully", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ReadInvoiceDto" }, { "$ref": "#/components/schemas/ReadEstimateDto" }, { "$ref": "#/components/schemas/ReadAssetDto" } ] } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Billing not found" } }, "security": [ { "bearer": [] } ], "summary": "Update billing lines", "tags": [ "Billing" ] } }, "/v2/billing/{billingId}/sap-products": { "patch": { "operationId": "BillingController-migrateSapProducts", "parameters": [ { "name": "billingId", "required": true, "in": "path", "description": "ID of the invoice to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MigrateSapProductsDto" } } } }, "responses": { "200": { "description": "Invoice lines updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadInvoiceDto" } } } }, "400": { "description": "Bad request - only invoices are supported" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Invoice not found" } }, "security": [ { "bearer": [] } ], "summary": "Migrate invoice lines for SAP compliance", "tags": [ "Billing" ] } }, "/v2/billing/{billingId}/include-discount-disbursement": { "patch": { "operationId": "BillingController-toggleIncludeDiscountDisbursement", "parameters": [ { "name": "billingId", "required": true, "in": "path", "description": "ID of the billing to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { "includeDiscountDisbursement": { "type": "boolean" } } } } } }, "responses": { "200": { "description": "Billing updated successfully", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ReadInvoiceDto" }, { "$ref": "#/components/schemas/ReadEstimateDto" }, { "$ref": "#/components/schemas/ReadAssetDto" } ] } } } } }, "security": [ { "bearer": [] } ], "summary": "Toggle includeDiscountDisbursement option on billing (no parent allowed)", "tags": [ "Billing" ] } }, "/v2/billing/{billingId}/display-settings": { "patch": { "operationId": "BillingController-updateDisplaySettings", "parameters": [ { "name": "billingId", "required": true, "in": "path", "description": "ID of the billing document to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBillingDisplaySettingsDto" } } } }, "responses": { "200": { "description": "Billing display settings updated successfully", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ReadInvoiceDto" }, { "$ref": "#/components/schemas/ReadEstimateDto" }, { "$ref": "#/components/schemas/ReadAdvanceDto" }, { "$ref": "#/components/schemas/ReadAssetDto" } ] } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Billing document not found" } }, "security": [ { "bearer": [] } ], "summary": "Update billing display settings", "tags": [ "Billing" ] } }, "/v2/billing/payment-account": { "get": { "operationId": "BillingController-retrievePaymentAccount", "parameters": [], "responses": { "200": { "description": "Payment account retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadPaymentAccountDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Payment account not found" } }, "security": [ { "bearer": [] } ], "summary": "Retrieve payment account", "tags": [ "Billing" ] } }, "/v2/billing/advance/{advanceId}/general-informations": { "patch": { "operationId": "AdvanceController-updateGeneralInformations", "parameters": [ { "name": "advanceId", "required": true, "in": "path", "description": "ID of the advance to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateAdvanceGeneralInformationsDto" } } } }, "responses": { "200": { "description": "Advance general informations updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadAdvanceDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Advance not found" } }, "security": [ { "bearer": [] } ], "summary": "Update advance general informations", "tags": [ "advance" ] } }, "/v2/billing/advance/{advanceId}/asset": { "post": { "operationId": "AdvanceController-createAsset", "parameters": [ { "name": "advanceId", "required": true, "in": "path", "description": "ID of the invoice to create asset from", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Asset created successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadAssetDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Advance not found" } }, "security": [ { "bearer": [] } ], "summary": "Create asset from advance", "tags": [ "advance" ] } }, "/v2/billing/asset/{assetId}": { "get": { "operationId": "AssetController-getAsset", "parameters": [ { "name": "assetId", "required": true, "in": "path", "description": "ID of the asset to retrieve", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Asset retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadAssetDto" } } } }, "404": { "description": "Asset not found" } }, "security": [ { "bearer": [] } ], "summary": "Get an asset by ID", "tags": [ "asset" ] } }, "/v2/billing/asset/{assetId}/general-informations": { "patch": { "operationId": "AssetController-updateGeneralInformations", "parameters": [ { "name": "assetId", "required": true, "in": "path", "description": "ID of the asset to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateAssetGeneralInformationsDto" } } } }, "responses": { "200": { "description": "Asset general informations updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadAssetDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Asset not found" } }, "security": [ { "bearer": [] } ], "summary": "Update asset general informations", "tags": [ "asset" ] } }, "/v2/billing/asset/{assetId}/locale": { "put": { "operationId": "AssetController-updateLocale", "parameters": [ { "name": "assetId", "required": true, "in": "path", "description": "ID of the asset to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBillingLocaleDto" } } } }, "responses": { "200": { "description": "Asset locale updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadAssetDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Asset not found" } }, "security": [ { "bearer": [] } ], "summary": "Update asset locale", "tags": [ "asset" ] } }, "/v2/billing/asset/{assetId}/currency": { "put": { "operationId": "AssetController-updateCurrency", "parameters": [ { "name": "assetId", "required": true, "in": "path", "description": "ID of the asset to update", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBillingCurrencyDto" } } } }, "responses": { "200": { "description": "Asset currency updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadAssetDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Asset not found" } }, "security": [ { "bearer": [] } ], "summary": "Update asset currency", "tags": [ "asset" ] } }, "/v2/customer-portal/payments": { "get": { "operationId": "CustomerPortalController-getPayments", "parameters": [ { "name": "id", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "token", "required": true, "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetrieveCustomerPortalPaymentsDto" } } } } }, "summary": "Retrieve customer portal billings and metadata", "tags": [ "Customer Portal" ] } }, "/contact": { "post": { "operationId": "ContactController-createContact", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateContactDto" } } } }, "responses": { "201": { "description": "The contact has been successfully created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadContactDto" } } } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" } }, "security": [ { "bearer": [] } ], "summary": "Create a new contact", "tags": [ "contact" ] } }, "/contact/{id}": { "get": { "operationId": "ContactController-getContact", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The contact has been successfully retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadContactDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Contact not found" } }, "security": [ { "bearer": [] } ], "summary": "Get a contact by ID", "tags": [ "contact" ] }, "put": { "operationId": "ContactController-updateContact", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateContactDto" } } } }, "responses": { "200": { "description": "The contact has been successfully updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadContactDto" } } } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "404": { "description": "Contact not found" } }, "security": [ { "bearer": [] } ], "summary": "Update a contact", "tags": [ "contact" ] }, "delete": { "operationId": "ContactController-deleteContact", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "401": { "description": "Unauthorized" }, "404": { "description": "Contact not found" }, "default": { "description": "The contact has been successfully deleted." } }, "security": [ { "bearer": [] } ], "summary": "Delete a contact", "tags": [ "contact" ] } }, "/contact/by-legacy/{legacyId}": { "get": { "operationId": "ContactController-getContactByLegacyId", "parameters": [ { "name": "legacyId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The contact has been successfully retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadContactDto" } } } }, "401": { "description": "Unauthorized" }, "404": { "description": "Contact not found" } }, "security": [ { "bearer": [] } ], "summary": "Get a contact by legacy ID", "tags": [ "contact" ] } }, "/contacts": { "get": { "description": "Get a paginated list of contacts for the current company", "operationId": "ContactsController-retrieveContacts", "parameters": [ { "name": "page", "required": false, "in": "query", "schema": { "type": "number" } }, { "name": "limit", "required": false, "in": "query", "schema": { "type": "number" } }, { "name": "search", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "orderBy", "required": false, "in": "query", "schema": { "$ref": "#/components/schemas/ContactOrderBy" } }, { "name": "orderDirection", "required": false, "in": "query", "schema": { "$ref": "#/components/schemas/OrderDirection" } }, { "name": "archived", "required": false, "in": "query", "schema": { "type": "boolean" } }, { "name": "forCertificate", "required": false, "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "Successfully retrieved contacts", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadContactsDto" } } } }, "401": { "description": "" }, "500": { "description": "" } }, "security": [ { "bearer": [] } ], "summary": "Retrieve contacts", "tags": [ "contact" ] } }, "/organization": { "post": { "operationId": "OrganizationController-createOrganization", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrganizationDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadOrganizationDto" } } } } }, "security": [ { "bearer": [] } ], "tags": [ "organization" ] } }, "/organization/{id}": { "get": { "operationId": "OrganizationController-retrieveOrganization", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadOrganizationDto" } } } } }, "security": [ { "bearer": [] } ], "tags": [ "organization" ] }, "put": { "operationId": "OrganizationController-updateOrganization", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrganizationDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadOrganizationDto" } } } } }, "security": [ { "bearer": [] } ], "tags": [ "organization" ] } }, "/organization/{id}/contacts": { "get": { "operationId": "OrganizationController-retrieveOrganizationContacts", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadContactListItemDto" } } } } } }, "security": [ { "bearer": [] } ], "tags": [ "organization" ] } }, "/organization/{id}/contact": { "post": { "operationId": "OrganizationController-createOrganizationContact", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrganizationContactDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadContactDto" } } } } }, "security": [ { "bearer": [] } ], "tags": [ "organization" ] } }, "/organization/contact/{id}": { "put": { "operationId": "OrganizationController-updateOrganizationContact", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrganizationContactDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadContactDto" } } } } }, "security": [ { "bearer": [] } ], "tags": [ "organization" ] } }, "/organization/{organizationId}": { "delete": { "operationId": "OrganizationController-deleteOrganization", "parameters": [ { "name": "organizationId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "security": [ { "bearer": [] } ], "tags": [ "organization" ] } }, "/organization/{organizationId}/default-contact": { "patch": { "operationId": "OrganizationController-setDefaultContact", "parameters": [ { "name": "organizationId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SetDefaultContactDto" } } } }, "responses": { "200": { "description": "" } }, "security": [ { "bearer": [] } ], "tags": [ "organization" ] } }, "/organizations": { "get": { "operationId": "OrganizationsController-retrieveOrganizations", "parameters": [ { "name": "page", "required": true, "in": "query", "schema": { "type": "number" } }, { "name": "limit", "required": true, "in": "query", "schema": { "type": "number" } }, { "name": "search", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "orderBy", "required": false, "in": "query", "schema": { "$ref": "#/components/schemas/OrganizationOrderBy" } }, { "name": "orderDirection", "required": false, "in": "query", "schema": { "$ref": "#/components/schemas/OrderDirection" } }, { "name": "archived", "required": false, "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadOrganizationsDto" } } } } }, "security": [ { "bearer": [] } ], "tags": [ "organization" ] } }, "/v2/opportunity/categories": { "get": { "operationId": "OpportunityController-retrieveCategories", "parameters": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadCategoryDto" } } } } } }, "security": [ { "bearer": [] } ], "tags": [ "Opportunity" ] } }, "/v2/opportunity/{id}": { "get": { "operationId": "OpportunityController-retrieveOpportunity", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadOpportunityDto" } } } } }, "security": [ { "bearer": [] } ], "tags": [ "Opportunity" ] }, "put": { "operationId": "OpportunityController-updateOpportunity", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOpportunityDto" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadOpportunityDto" } } } } }, "security": [ { "bearer": [] } ], "tags": [ "Opportunity" ] }, "delete": { "operationId": "OpportunityController-deleteOpportunity", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "security": [ { "bearer": [] } ], "tags": [ "Opportunity" ] } }, "/v2/opportunity": { "post": { "operationId": "OpportunityController-createOpportunity", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOpportunityDto" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadOpportunityDto" } } } } }, "security": [ { "bearer": [] } ], "tags": [ "Opportunity" ] } }, "/v2/company/me": { "get": { "operationId": "CompanyController-getMe", "parameters": [], "responses": { "200": { "description": "Current company, user and preferences retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadMeDto" } } } }, "401": { "description": "Unauthorized" } }, "security": [ { "bearer": [] } ], "summary": "Get current company, user and preferences", "tags": [ "company" ] } } }, "components": { "securitySchemes": { "ApiKeyAuth": { "type": "http", "scheme": "bearer", "bearerFormat": "API Key", "description": "API key authentication. Pass your API key as a Bearer token." } }, "schemas": { "AddressDto": { "type": "object", "properties": { "line1": { "type": "string", "example": "10 Rue Lecourbe", "description": "First line of the address" }, "line2": { "type": "string", "example": "Apartment 4B", "description": "Second line of the address" }, "city": { "type": "string", "example": "Paris", "description": "City of the address" }, "zipCode": { "type": "string", "example": "75015", "description": "Zip code of the address" }, "country": { "example": "FR", "description": "Country code of the address", "allOf": [ { "$ref": "#/components/schemas/CountryCode" } ] } }, "required": [ "line1", "city", "zipCode", "country" ] }, "AdvanceItemDto": { "type": "object", "properties": { "value": { "type": "number", "description": "The value of the advance (amount or percentage)", "example": 100 }, "mode": { "description": "The mode of the advance (amount or percentage)", "example": "AMOUNT", "allOf": [ { "$ref": "#/components/schemas/AdvanceMode" } ] }, "paymentCondition": { "type": "string", "description": "Payment condition for the advance", "enum": [ "SIGNATURE", "ORDER", "OTHER" ], "example": "ORDER" }, "customPaymentCondition": { "type": "string", "description": "Custom payment condition if OTHER is selected", "nullable": true, "example": "Custom payment terms" } }, "required": [ "value", "mode" ] }, "AdvanceMode": { "type": "string", "enum": [ "AMOUNT", "PERCENTAGE" ], "description": "The mode of the advance (amount or percentage)" }, "BankInformationDto": { "type": "object", "properties": { "bic": { "type": "string", "example": "12345678901234567890" }, "iban": { "type": "string", "example": "FR76123456789012345678901234567890" }, "holder": { "type": "string", "example": "John Doe" } }, "required": [ "bic", "iban", "holder" ] }, "BankInformationsDto": { "type": "object", "properties": { "iban": { "type": "string", "description": "International Bank Account Number", "example": "DE89370400440532013000" }, "bic": { "type": "string", "description": "Bank Identifier Code", "example": "DEUTDEFF" }, "holder": { "type": "string", "description": "Name of the account holder", "example": "John Doe" } }, "required": [ "iban", "bic", "holder" ] }, "BillingCompatibilityVersion": { "type": "string", "enum": [ "V1", "V2" ] }, "BillingDiscountAdvancePaymentDto": { "type": "object", "properties": { "value": { "example": "none", "description": "Type de remise sur acompte", "allOf": [ { "$ref": "#/components/schemas/DiscountAdvancePayment" } ] }, "otherValue": { "type": "string", "description": "Description custom si `value` vaut `other`", "example": "Autre" } }, "required": [ "value" ] }, "BillingEmailType": { "type": "string", "enum": [ "invoice_simple", "invoice_reminder", "invoice_recurring", "estimate_simple" ] }, "BillingLatePenaltyDto": { "type": "object", "properties": { "value": { "example": "three_time_legal_rate", "allOf": [ { "$ref": "#/components/schemas/LatePenalty" } ] }, "otherValue": { "type": "string", "description": "Description custom si `value` vaut `other`", "example": "Trois fois le taux actuel en vigueur soit 6,2 %" } }, "required": [ "value" ] }, "BillingLegalsDto": { "type": "object", "properties": { "headerNote": { "type": "string", "example": "Header note" }, "footerNote": { "type": "string", "example": "Footer note" }, "generalTermsAndConditionsOfSale": { "type": "string", "example": "General terms and conditions" }, "mentionMediator": { "type": "string", "example": "Mention mediateur" }, "vatMention": { "example": "not_subject", "allOf": [ { "$ref": "#/components/schemas/VatMention" } ] }, "paymentMethods": { "type": "array", "example": [ "credit_card", "direct_debit" ], "items": { "$ref": "#/components/schemas/PaymentMethod" } }, "otherPaymentMethod": { "type": "string", "description": "Other payment method", "example": "Lydia" } }, "required": [ "vatMention", "paymentMethods" ] }, "BillingLocale": { "type": "string", "enum": [ "fr", "en", "de", "it", "nl", "pt", "es" ] }, "BillingLumpSumCompensationDto": { "type": "object", "properties": { "value": { "example": "forty_euros", "allOf": [ { "$ref": "#/components/schemas/LumpSumCompensation" } ] }, "otherValue": { "type": "string", "description": "Description custom si `value` vaut `other`", "example": "Indemnité forfaitaire de 40€" } }, "required": [ "value" ] }, "BillingReminderDto": { "type": "object", "properties": { "inCopy": { "type": "boolean", "description": "Indicates if the sender should be in copy of the reminder", "example": true }, "frequency": { "description": "The frequency at which reminders should be sent", "example": "on_due_date", "allOf": [ { "$ref": "#/components/schemas/ReminderFrequency" } ] }, "numberOfRemindersToSend": { "type": "number", "description": "The number of reminders to be sent", "example": 3 }, "active": { "type": "boolean", "description": "Indicates if the reminder is active", "example": true }, "recipients": { "description": "Array of email addresses to receive the reminder", "example": [ "john.doe@example.com" ], "type": "array", "items": { "type": "string" } } }, "required": [ "inCopy", "frequency", "numberOfRemindersToSend", "active" ] }, "BillingState": { "type": "string", "enum": [ "draft", "finalized", "signed", "refused", "paid" ] }, "BillingType": { "type": "string", "enum": [ "estimate", "invoice", "asset", "advance", "purchase_order" ] }, "ClientAddressDto": { "type": "object", "properties": { "address": { "type": "string", "description": "The street address of the client", "example": "123 Main Street", "nullable": true }, "complement": { "type": "string", "description": "Additional address information", "example": "Apt 4B", "nullable": true }, "city": { "type": "string", "description": "The city of the address", "example": "New York", "nullable": true }, "zipCode": { "type": "string", "description": "The zip code or postal code of the address", "example": "10001", "nullable": true }, "state": { "type": "string", "description": "The state or province of the address", "example": "NY" }, "country": { "description": "The country of the address", "example": "FR", "allOf": [ { "$ref": "#/components/schemas/CountryCode" } ] } }, "required": [ "address", "city", "zipCode", "country" ] }, "ClientPreferencesDto": { "type": "object", "properties": { "language": { "description": "The client's preferred language for billing", "example": "en", "allOf": [ { "$ref": "#/components/schemas/BillingLocale" } ] }, "currency": { "description": "The client's preferred currency for transactions", "example": "USD", "allOf": [ { "$ref": "#/components/schemas/CurrencyCode" } ] }, "paymentMethods": { "description": "The client's preferred payment methods", "example": [ "cheque", "stripe" ], "type": "array", "items": { "type": "string" } } } }, "ClientState": { "type": "string", "enum": [ "synced", "pending", "end_user_action_required", "error" ], "description": "Current client state" }, "CompanyDto": { "type": "object", "properties": { "id": { "type": "string", "description": "Identifiant unique de l'entreprise", "example": "123e4567-e89b-12d3-a456-426614174000" }, "commercialName": { "type": "string", "description": "Nom commercial de l'entreprise", "example": "Ma Super Entreprise" }, "siret": { "type": "string", "description": "Numéro SIRET de l'entreprise", "example": "12345678901234" }, "legalStatut": { "description": "Statut juridique de l'entreprise", "example": 3, "allOf": [ { "$ref": "#/components/schemas/LegalStatus" } ] }, "address": { "type": "string", "description": "Adresse de l'entreprise", "example": "123 rue du Commerce" }, "city": { "type": "string", "description": "Ville de l'entreprise", "example": "Paris" }, "isInTestMode": { "type": "boolean", "description": "Indique si l'entreprise est en mode test", "example": false } }, "required": [ "id", "commercialName", "siret", "legalStatut", "address", "city", "isInTestMode" ] }, "ContactOrderBy": { "type": "string", "enum": [ "name", "createdAt" ] }, "ConvertedAmountsDto": { "type": "object", "properties": { "amountWithoutTaxBeforeDiscount": { "type": "number", "example": 1100 }, "amountWithoutTaxAfterDiscount": { "type": "number", "example": 1000 }, "amountWithTaxAfterDiscount": { "type": "number", "example": 1200 }, "remainingAmountWithoutTax": { "type": "number", "example": 500 }, "remainingAmountWithTax": { "type": "number", "example": 600 }, "remainingAmountToBill": { "type": "number", "example": 600 }, "vatDetails": { "type": "array", "items": { "$ref": "#/components/schemas/VatDetailDto" } }, "discountAmount": { "type": "number", "example": 100 }, "billedAmountWithoutTax": { "type": "number", "example": 100 }, "billedAmountWithTax": { "type": "number", "example": 100 }, "remainingAmountWithoutTaxWithoutDisbursement": { "type": "number", "example": 100 }, "amountWithoutTaxBeforeDiscountWithoutDisbursement": { "type": "number", "example": 100 } }, "required": [ "amountWithoutTaxBeforeDiscount", "amountWithoutTaxAfterDiscount", "amountWithTaxAfterDiscount", "remainingAmountWithoutTax", "remainingAmountWithTax", "remainingAmountToBill", "vatDetails", "billedAmountWithoutTax", "billedAmountWithTax", "remainingAmountWithoutTaxWithoutDisbursement", "amountWithoutTaxBeforeDiscountWithoutDisbursement" ] }, "ConvertedAmountsLineDto": { "type": "object", "properties": { "priceWithoutTaxBeforeDiscount": { "type": "number", "example": 100 }, "discountAmount": { "type": "number", "example": 10 }, "priceWithoutTaxAfterDiscount": { "type": "number", "example": 90 }, "vatAmount": { "type": "number", "example": 18 }, "priceTotalTax": { "type": "number", "example": 108 } }, "required": [ "priceWithoutTaxBeforeDiscount", "priceWithoutTaxAfterDiscount", "vatAmount", "priceTotalTax" ] }, "CountryCode": { "type": "string", "enum": [ "AF", "AX", "AL", "DZ", "AS", "AD", "AO", "AI", "AQ", "AG", "AN", "AR", "AM", "AW", "AU", "AT", "AZ", "BS", "BH", "BD", "BB", "BY", "BE", "BZ", "BJ", "BM", "BT", "BO", "BQ", "BA", "BW", "BV", "BR", "IO", "BN", "BG", "BF", "BI", "KH", "CM", "CA", "CV", "KY", "CF", "TD", "CL", "CN", "CX", "CC", "CO", "KM", "CG", "CD", "CK", "CR", "CI", "HR", "CU", "CW", "CY", "CZ", "DK", "DJ", "DM", "DO", "EC", "EG", "SV", "GQ", "ER", "EE", "ET", "FK", "FO", "FJ", "FI", "FR", "GF", "PF", "TF", "GA", "GM", "GE", "DE", "GH", "GI", "GR", "GL", "GD", "GP", "GU", "GT", "GG", "GN", "GW", "GY", "HT", "HM", "VA", "HN", "HK", "HU", "IS", "IN", "ID", "IR", "IQ", "IE", "IM", "IL", "IT", "JM", "JP", "JE", "JO", "KZ", "KE", "KI", "KR", "XK", "KP", "KW", "KG", "LA", "LV", "LB", "LS", "LR", "LY", "LI", "LT", "LU", "MO", "MK", "MG", "MW", "MY", "MV", "ML", "MT", "MH", "MQ", "MR", "MU", "YT", "MX", "FM", "MD", "MC", "MN", "ME", "MS", "MA", "MZ", "MM", "NA", "NR", "NP", "NL", "NC", "NZ", "NI", "NE", "NG", "NU", "NF", "MP", "NO", "OM", "PK", "PW", "PS", "PA", "PG", "PY", "PE", "PH", "PN", "PL", "PT", "PR", "QA", "RE", "RO", "RU", "RW", "BL", "SH", "KN", "LC", "MF", "PM", "VC", "WS", "SM", "ST", "SA", "SN", "RS", "SC", "SL", "SG", "SX", "SK", "SI", "SB", "SO", "ZA", "GS", "SS", "ES", "LK", "SD", "SR", "SJ", "SZ", "SE", "CH", "SY", "TW", "TJ", "TZ", "TH", "TL", "TG", "TK", "TO", "TT", "TN", "TR", "TM", "TC", "TV", "UG", "UA", "AE", "GB", "US", "UM", "UY", "UZ", "VU", "VE", "VN", "VG", "VI", "WF", "EH", "YE", "ZM", "ZW" ], "description": "Country code of the address" }, "CreateContactDto": { "type": "object", "properties": { "firstname": { "type": "string", "description": "The first name of the contact", "example": "John" }, "lastname": { "type": "string", "description": "The last name of the contact", "example": "Doe" }, "phone": { "type": "string", "description": "The phone number of the contact", "example": "+1234567890" }, "jobTitle": { "type": "string", "description": "The job title of the contact", "example": "Software Engineer" }, "emails": { "description": "The email addresses of the contact", "example": [ "john.doe@example.com", "johnd@work.com" ], "type": "array", "items": { "type": "string" } }, "notes": { "type": "string", "description": "Additional notes about the contact", "example": "Prefers email communication" }, "billingAddress": { "description": "The billing address of the contact", "allOf": [ { "$ref": "#/components/schemas/ClientAddressDto" } ] }, "deliveryAddress": { "description": "The delivery address of the contact", "allOf": [ { "$ref": "#/components/schemas/ClientAddressDto" } ] }, "bankInformations": { "description": "The bank information of the contact", "allOf": [ { "$ref": "#/components/schemas/BankInformationsDto" } ] }, "preferences": { "description": "The preferences of the contact", "allOf": [ { "$ref": "#/components/schemas/ClientPreferencesDto" } ] } }, "required": [ "firstname", "lastname" ] }, "CreateEstimateByCustomerIdDto": { "type": "object", "properties": { "estimateType": { "default": "estimate", "allOf": [ { "$ref": "#/components/schemas/EstimateType" } ] } } }, "CreateInvoiceFrequencyDto": { "type": "object", "properties": { "from": { "type": "string" }, "to": { "type": "string" }, "frequency": { "type": "number" }, "interval": { "example": "month", "allOf": [ { "$ref": "#/components/schemas/FrequencyInterval" } ] }, "finalizeInvoice": { "type": "boolean" }, "sendByMail": { "type": "boolean" }, "inCopy": { "type": "boolean" } }, "required": [ "from", "to", "frequency", "interval", "finalizeInvoice", "sendByMail", "inCopy" ] }, "CreateOpportunityDto": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the opportunity", "example": "New Project Lead" }, "description": { "type": "string", "description": "The description of the opportunity", "example": "Potential client interested in our services" }, "dueDate": { "type": "string", "description": "The due date as ISO date string YYYY-MM-DD", "example": "2025-11-26" }, "amount": { "type": "number", "description": "The amount in cents", "example": 100000 }, "customerId": { "type": "string", "description": "The legacy customer ID", "example": "507f1f77bcf86cd799439011" }, "categoryId": { "type": "string", "description": "The category ID", "example": "123e4567-e89b-12d3-a456-426614174000" }, "afterRank": { "type": "string", "description": "The rank to insert after", "example": "0|hzzzzz:" } }, "required": [ "name", "amount", "customerId", "categoryId" ] }, "CreateOrganizationContactDto": { "type": "object", "properties": { "firstname": { "type": "string" }, "lastname": { "type": "string" }, "phone": { "type": "string" }, "jobTitle": { "type": "string" }, "emails": { "type": "array", "items": { "type": "string" } }, "notes": { "type": "string" } }, "required": [ "firstname", "lastname" ] }, "CreateOrganizationDto": { "type": "object", "properties": { "name": { "type": "string", "description": "The official name of the organization", "example": "Acme Corporation" }, "commercialName": { "type": "string", "description": "The commercial or trading name of the organization", "example": "Acme Corp" }, "emails": { "type": "array", "items": { "type": "string" } }, "siret": { "type": "string", "description": "The SIRET number (required for French organizations)", "example": "12345678901234" }, "vatNumber": { "type": "string", "description": "The VAT number of the organization", "example": "FR12345678901" }, "billingAddress": { "description": "The billing address of the organization", "allOf": [ { "$ref": "#/components/schemas/ClientAddressDto" } ] }, "deliveryAddress": { "description": "The delivery address of the organization", "allOf": [ { "$ref": "#/components/schemas/ClientAddressDto" } ] }, "notes": { "type": "string", "description": "Additional notes about the organization", "example": "Preferred supplier for anvils and TNT" }, "bankInformations": { "description": "The bank information of the organization", "allOf": [ { "$ref": "#/components/schemas/BankInformationsDto" } ] }, "preferences": { "description": "The preferences of the organization", "allOf": [ { "$ref": "#/components/schemas/ClientPreferencesDto" } ] } }, "required": [ "name" ] }, "CurrencyCode": { "type": "string", "enum": [ "EUR", "GBP", "CHF", "USD", "AUD", "CAD", "JPY", "CNH", "CZK", "DKK", "BGN", "PLN", "HUF", "RON", "SEK", "NOK", "TRY", "BRL", "HKD", "ILS", "INR", "KRW", "MXN" ] }, "CurrencyOrigin": { "type": "string", "enum": [ "ECB", "USER" ] }, "CustomerPortalBillingDto": { "type": "object", "properties": { "id": { "type": "string" }, "number": { "type": "string" }, "date": { "type": "number" }, "billingState": { "allOf": [ { "$ref": "#/components/schemas/BillingState" } ] }, "billingType": { "allOf": [ { "$ref": "#/components/schemas/BillingType" } ] }, "amount": { "type": "number" }, "signatureId": { "type": "string" }, "signature": { "type": "object" }, "dueDate": { "type": "number" }, "validityDate": { "type": "number" } }, "required": [ "id", "number", "date", "billingState", "billingType", "amount" ] }, "CustomerPortalCompanyDto": { "type": "object", "properties": { "commercialName": { "type": "string" }, "name": { "type": "string" } }, "required": [ "commercialName", "name" ] }, "CustomerPortalCustomerDto": { "type": "object", "properties": { "name": { "type": "string" }, "firstname": { "type": "string" }, "lastname": { "type": "string" } }, "required": [ "name" ] }, "DiscountAdvancePayment": { "type": "string", "enum": [ "none", "other" ], "description": "Type de remise sur acompte" }, "DiscountDto": { "type": "object", "properties": { "mode": { "example": "PERCENTAGE", "description": "The mode of discount application, either percentage or fixed amount", "allOf": [ { "$ref": "#/components/schemas/DiscountMode" } ] }, "amount": { "type": "number", "description": "The amount for the discount (1000 for 10% or 10€)", "example": 1000 } }, "required": [ "mode", "amount" ] }, "DiscountLineDto": { "type": "object", "properties": { "amount": { "type": "number", "example": 1000, "description": "Montant de la remise, 1000 pour 10% ou 10€" }, "mode": { "example": "PERCENTAGE", "description": "Mode de la réduction en pourcentage ou en euros", "allOf": [ { "$ref": "#/components/schemas/DiscountMode" } ] } }, "required": [ "amount", "mode" ] }, "DiscountMode": { "type": "string", "enum": [ "PERCENTAGE", "AMOUNT" ], "description": "Mode de la réduction en pourcentage ou en euros" }, "DisplayBillingSettingsDto": { "type": "object", "properties": { "displayFullName": { "type": "boolean", "example": true }, "displayEmail": { "type": "boolean", "example": true }, "displayPhoneNumber": { "type": "boolean", "example": true }, "displaySAPAgreement": { "type": "boolean", "example": true }, "displayLegalStatus": { "type": "boolean", "example": true }, "displayRequiredMentionsProduct": { "type": "boolean", "example": true }, "displayMemberOfAnApprovedAssociation": { "type": "boolean", "example": true }, "displayAbbyLogo": { "type": "boolean", "example": true }, "displayTitle": { "type": "boolean", "example": true }, "displayGoodForApproval": { "type": "boolean", "example": true }, "displayEstimateNumber": { "type": "boolean", "example": true } }, "required": [ "displayFullName", "displayEmail", "displayPhoneNumber", "displaySAPAgreement", "displayLegalStatus", "displayRequiredMentionsProduct", "displayMemberOfAnApprovedAssociation", "displayAbbyLogo", "displayTitle" ] }, "DisplaySettingsDto": { "type": "object", "properties": { "displayFullName": { "type": "boolean", "example": true }, "displayEmail": { "type": "boolean", "example": true }, "displayPhoneNumber": { "type": "boolean", "example": true }, "displaySAPAgreement": { "type": "boolean", "example": true }, "displayLegalStatus": { "type": "boolean", "example": true }, "displayRequiredMentionsProduct": { "type": "boolean", "example": true }, "displayGoodForApproval": { "type": "boolean", "example": true }, "displayMemberOfAnApprovedAssociation": { "type": "boolean", "example": true }, "displayAbbyLogo": { "type": "boolean", "example": true }, "displayTitle": { "type": "boolean", "example": true } }, "required": [ "displayFullName", "displayEmail", "displayPhoneNumber", "displaySAPAgreement", "displayLegalStatus", "displayRequiredMentionsProduct", "displayMemberOfAnApprovedAssociation", "displayAbbyLogo", "displayTitle" ] }, "ElectronicSignatureRequirementDto": { "type": "object", "properties": { "name": { "type": "string", "example": "hasNonEmptyCustomerContact" }, "message": { "type": "string", "example": "Vous devez sélectionner un contact à votre organisation cliente pour pouvoir activer la signature en ligne." } }, "required": [ "name", "message" ] }, "ElectronicSignatureStatus": { "type": "string", "enum": [ "requested", "activated", "on_going", "refused", "signed", "cancelled" ] }, "EstimateElectronicSignatureDto": { "type": "object", "properties": { "id": { "type": "string", "example": "12345678901234567890" }, "canceledAt": { "type": "number", "example": 1617619200, "nullable": true }, "procedureId": { "type": "string", "example": "12345678901234567890", "nullable": true }, "magicLink": { "type": "string", "example": "https://magic-link.com", "nullable": true }, "signedAt": { "type": "number", "example": 1617619200, "nullable": true }, "refusedAt": { "type": "number", "example": 1617619200, "nullable": true }, "status": { "example": "requested", "allOf": [ { "$ref": "#/components/schemas/ElectronicSignatureStatus" } ] } }, "required": [ "id", "canceledAt", "procedureId", "magicLink", "signedAt", "refusedAt", "status" ] }, "EstimateTotalDto": { "type": "object", "properties": { "amountWithoutTaxBeforeDiscount": { "type": "number", "example": 1100 }, "amountWithoutTaxAfterDiscount": { "type": "number", "example": 1000 }, "amountWithTaxAfterDiscount": { "type": "number", "example": 1200 }, "remainingAmountWithoutTax": { "type": "number", "example": 500 }, "remainingAmountWithTax": { "type": "number", "example": 600 }, "remainingAmountToBill": { "type": "number", "example": 600 }, "vatDetails": { "type": "array", "items": { "$ref": "#/components/schemas/VatDetailDto" } }, "discountAmount": { "type": "number", "example": 100 }, "convertedAmounts": { "$ref": "#/components/schemas/ConvertedAmountsDto" }, "billedAmountWithoutTax": { "type": "number", "example": 100 }, "billedAmountWithTax": { "type": "number", "example": 100 }, "amountWithoutTaxBeforeDiscountWithoutDisbursement": { "type": "number", "example": 100 }, "remainingAmountWithoutTaxWithoutDisbursement": { "type": "number", "example": 100 } }, "required": [ "amountWithoutTaxBeforeDiscount", "amountWithoutTaxAfterDiscount", "amountWithTaxAfterDiscount", "remainingAmountWithoutTax", "remainingAmountWithTax", "remainingAmountToBill", "vatDetails", "billedAmountWithoutTax", "billedAmountWithTax", "amountWithoutTaxBeforeDiscountWithoutDisbursement", "remainingAmountWithoutTaxWithoutDisbursement" ] }, "EstimateType": { "type": "string", "enum": [ "estimate", "purchase_order" ] }, "FinalizeRequirementDto": { "type": "object", "properties": { "name": { "type": "string", "example": "hasValidAmount" }, "message": { "type": "string", "example": "Le montant de la somme des avoirs ne peut pas être supérieur au montant total de la facture." } }, "required": [ "name", "message" ] }, "FrequencyDto": { "type": "object", "properties": { "id": { "type": "string", "example": "123e4567-e89b-12d3-a456-426614174000" }, "from": { "type": "string" }, "to": { "type": "string" }, "nextBillingAt": { "type": "string" }, "frequency": { "type": "number" }, "interval": { "example": "month", "allOf": [ { "$ref": "#/components/schemas/FrequencyInterval" } ] }, "finalizeInvoice": { "type": "boolean" }, "sendByMail": { "type": "boolean" }, "inCopy": { "type": "boolean" } }, "required": [ "id", "from", "to", "nextBillingAt", "frequency", "interval", "finalizeInvoice", "sendByMail", "inCopy" ] }, "FrequencyInterval": { "type": "string", "enum": [ "day", "week", "month", "year" ] }, "LatePenalty": { "type": "string", "enum": [ "three_time_legal_rate", "bce_director_rate_plus_ten_points", "other" ] }, "LatePenaltyDto": { "type": "object", "properties": { "value": { "example": "three_time_legal_rate", "allOf": [ { "$ref": "#/components/schemas/LatePenalty" } ] }, "otherValue": { "type": "string", "description": "Description custom si `value` vaut `other`", "example": "Trois fois le taux actuel en vigueur soit 6,2 %" } }, "required": [ "value" ] }, "LegalStatus": { "type": "string", "enum": [ "micro_enterprise", "sas", "sarl", "sasu", "ei", "eurl", "eirl", "sa", "snc", "other", "sasu_sas", "eurl_sarl", "sci", "association" ] }, "LumpSumCompensation": { "type": "string", "enum": [ "forty_euros", "other" ] }, "LumpSumCompensationDto": { "type": "object", "properties": { "value": { "example": "forty_euros", "allOf": [ { "$ref": "#/components/schemas/LumpSumCompensation" } ] }, "otherValue": { "type": "string", "description": "Description custom si `value` vaut `other`", "example": "Indemnité forfaitaire de 40€" } }, "required": [ "value" ] }, "MigrateSapProductLineDto": { "type": "object", "properties": { "lineId": { "type": "string", "example": "123e4567-e89b-12d3-a456-426614174000", "description": "ID of the billing line to update" }, "ignore": { "type": "boolean", "example": false, "description": "If true, the line will not be included as a personal service product" }, "quantityUnit": { "example": "hour", "description": "Quantity unit required when ignore is not true. Only HOUR or FIXED_RATE are allowed for SAP products.", "allOf": [ { "$ref": "#/components/schemas/ProductUnit" } ] }, "personalServiceActivity": { "example": "BRICOLAGE", "description": "Personal service activity required when ignore is not true.", "allOf": [ { "$ref": "#/components/schemas/PersonalServiceActivity" } ] } }, "required": [ "lineId" ] }, "MigrateSapProductsDto": { "type": "object", "properties": { "lines": { "description": "Lines to migrate for SAP compliance", "type": "array", "items": { "$ref": "#/components/schemas/MigrateSapProductLineDto" } } }, "required": [ "lines" ] }, "NotificationPreferencesDto": { "type": "object", "properties": { "push": { "description": "Notifications push", "allOf": [ { "$ref": "#/components/schemas/PushNotificationPreferencesDto" } ] } }, "required": [ "push" ] }, "OpportunityDto": { "type": "object", "properties": { "id": { "type": "string", "example": "123e4567-e89b-12d3-a456-426614174000" }, "name": { "type": "string", "example": "Big Sale Opportunity" } }, "required": [ "id", "name" ] }, "OrderDirection": { "type": "string", "enum": [ "ASC", "DESC" ] }, "OrganizationDto": { "type": "object", "properties": { "id": { "type": "string", "description": "Organization ID", "example": "123e4567-e89b-12d3-a456-426614174000" }, "name": { "type": "string", "description": "Organization name", "example": "Acme Corp" } }, "required": [ "id", "name" ] }, "OrganizationOrderBy": { "type": "string", "enum": [ "name", "createdAt" ] }, "PaymentAccountIssueReason": { "type": "string", "enum": [ "MISSING_INFO", "UNDER_REVIEW", "FRAUD_SUSPECTED", "TERMS_VIOLATION", "UNKNOWN" ], "description": "The reason of the payment account" }, "PaymentAccountStatus": { "type": "string", "enum": [ "enabled", "disabled" ], "description": "The status of the payment account" }, "PaymentCondition": { "type": "string", "enum": [ "SIGNATURE", "ORDER", "OTHER" ], "description": "Payment condition for the advance" }, "PaymentDelay": { "type": "string", "enum": [ "at_reception", "end_of_month", "seven_days", "ten_days", "fifteen_days", "thirty_days", "thirty_days_end_of_month", "forty_five_days", "forty_five_days_end_of_month", "sixty_days", "sixty_days_end_of_month", "ninety_days", "ninety_days_end_of_month", "one_hundred_and_twenty_days", "other" ] }, "PaymentMethod": { "type": "string", "enum": [ "transfer", "direct_debit", "credit_card", "cheque", "universal_employment_service_cheque", "cash", "paypal", "stripe", "other" ] }, "PaymentProvider": { "type": "string", "enum": [ "stripe_connect" ], "description": "The provider of the payment account" }, "PaymentRequestDto": { "type": "object", "properties": { "idDemandePaiement": { "type": "string", "example": "123e4567-e89b-12d3-a456-426614174000" }, "dateDebutEmploi": { "type": "number", "example": 1736408178 }, "dateFinEmploi": { "type": "number", "example": 1736408178 }, "dateVirement": { "type": "number", "example": 1736408178 }, "advanceAlreadyPayed": { "type": "number", "example": "400" }, "mntVirement": { "type": "number", "example": "1200" }, "statut": { "example": "112", "allOf": [ { "$ref": "#/components/schemas/PaymentRequestStatusUrssafTp" } ] } }, "required": [ "dateDebutEmploi", "dateFinEmploi" ] }, "PaymentRequestPayloadDto": { "type": "object", "properties": { "advanceAlreadyPaid": { "type": "number", "description": "Amount in cents of the advance already paid. This amount must not exceed 50% of the total including or excluding tax of the invoice.", "example": 1000 }, "dateDebutEmploi": { "type": "number", "description": "Date of the beginning of the employment period.", "example": 1739364926 }, "dateFinEmploi": { "type": "number", "description": "Date of the end of the employment period.", "example": 1739364926 } }, "required": [ "advanceAlreadyPaid", "dateDebutEmploi", "dateFinEmploi" ] }, "PaymentRequestStatusUrssafTp": { "type": "string", "enum": [ 0, "10", "20", "30", "40", "50", "70", "60", "110", "111", "120", "112", "ERR_PARTICULIER_INCONNU", "ERR_CMPT_BLOQUE", "ERR_FACTURE_DOUBLON", "ERR_NBRE_PREST_MAX", "ERR_DATE_FUTUR", "ERR_DATE_PAIEMENT_AVANT_EXP", "ERR_PERIODE_EMPLOI_MOIS_NON_UNIQUE", "ERR_DATE_FIN_AVANT_DATE_DEB", "ERR_MONTANT_ACOMPTE", "ERR_TOTAL_PRESTATIONS", "ERR_CODE_NATURE", "ERR_CODE_ACTIVITE", "ERR_CODE_ACTIVITE_NATURE", "ERR_MNT_PREST_HT_TVA", "ERR_MNT_PREST_TTC", "ERR_VALEUR_NEGATIVE", "ERR_PRESTATAIRE_EMETTEUR_INCONNU", "ERR_LIEN_PARTICULIER_PRESTATAIRE", "ERR_PRESTATAIRE_FACTURATION_INCONNU", "ERR_CRITERE_RECHERCHE_VIDE", "ERR_DGFIP_R2P_INCONNU", "ERR_DATE_NAISSANCE_FUTUR", "ERR_LIEU_NAISSANCE_DEPT", "ERR_LIEU_NAISSANCE_COMN", "ERR_LIEU_NAISSANCE_PAYS", "ERR_DGFIP_IMPOTPART_INCONNU", "ERR_CONTACT", "ERR_CONTACT_ADRESSE_TYPE_VOIE", "ERR_CONTACT_ADRESSE_LETTRE_VOIE", "ERR_CONTACT_ADRESSE_TYPEVOIE", "ERR_CONTACT_ADRESSE_LIBELLEVOIE", "ERR_CONTACT_ADRESSE_INFORMATION_SUPPLEMENTAIRE", "ERR_CONTACT_ADRESSE_COMMUNE", "ERR_COORDONNEES_BANCAIRES", "ERR_FORMAT_VALEUR", "ERR_NBRE_MAX_RESULTAT", "ERR_RECHERCHE_VIDE", "ERR_ECV_PARTICULIERS_EXISTENT", "ERREUR_REFERENCE_PARTICULIER_EXISTANTE_TYPE", "ERR_LIEU_NAISSANCE_OBLIGATOIRE", "ERREUR_LIEU_NAISSANCE_INVALIDE", "ERR_RECHERCHE_PARTICULIER", "ERR_FORMAT_NUMINTERVENANT", "ERR_NUMINTERVENANT_MANQUANT", "ERR_NUMINTERVENANT_BLOQUE", "ERR_MANDAT_ECHU", "ERREUR_VALIDATION", "ERREUR_TECHNIQUE", "ERREUR_INCONNUE" ] }, "PersonalServiceActivity": { "type": "string", "enum": [ "GARDE_ENFANT_HANDICAPE", "ACCOMPAGNEMENT_ENFANT_HANDICAPE", "AIDE_HUMAINE", "CONDUITE_VEHICULE_PERSONNEL", "AIDE_AU_DEPLACEMENT", "ENTRETIEN_DE_LA_MAISON", "JARDINAGE", "BRICOLAGE", "GARDE_ENFANT_PLUS_DE_6_ANS", "SOUTIEN_SCOLAIRE_COURS_A_DOMICILE", "SOIN_ESTHETIQUE_A_DOMICILE", "PREPARATION_REPAS_A_DOMICILE", "LIVRAISON_REPAS_A_DOMICILE", "COLLECTE_ET_LIVRAISON_DE_LINGE_REPASSE", "LIVRAISON_COURSES_A_DOMICILE", "ASSISTANCE_INFORMATIQUE", "SOINS_ET_PROMENADES_ANIMAUX_DE_COMPAGNIE_POUR_PERSONNES_DEPENDANTES", "MAINTENANCE_ENTRETIEN_ET_VIGILANCE_DE_LA_RESIDENCE_PRINCIPALE", "ASSISTANCE_ADMINISTRATIVE", "ACCOMPAGNEMENT_ENFANT_PLUS_DE_6_ANS", "TELEASSISTANCE", "INTERPRETE_LANGUE_DES_SIGNES", "CONDUITE_VEHICULE_PERSONNEL_EN_CAS_INVALIDITE_TEMPORAIRE", "ACCOMPAGNEMENT_DEPLACEMENTS_EN_DEHORS_DU_DOMICILE", "ASSISTANCE_PERSONNES_TEMPORAIREMENT_DEPENDANTES_A_DOMICILE", "COORDINATION_ET_GESTION", "DIVERS_NON_ELIGIBLE" ] }, "PreferencesDto": { "type": "object", "properties": { "rentability": { "description": "Préférences de rentabilité", "allOf": [ { "$ref": "#/components/schemas/RentabilityPreferencesDto" } ] }, "notification": { "description": "Préférences de notification", "allOf": [ { "$ref": "#/components/schemas/NotificationPreferencesDto" } ] } }, "required": [ "rentability", "notification" ] }, "ProductType": { "type": "string", "enum": [ "sale_of_goods", "service_delivery", "commercial_or_craft_services", "sale_of_manufactured_goods", "disbursement" ] }, "ProductUnit": { "type": "string", "enum": [ "unit", "gram", "hour", "day", "week", "fixed_rate", "year", "character", "line", "license", "article", "month", "kilogram", "kilometer", "liter", "batch", "meter", "square_meter", "cubic_meter", "linear_meter", "person", "ton", "word", "page", "leaflet", "paragraph", "minute", "overnight_stay" ] }, "PushNotificationPreferencesDto": { "type": "object", "properties": { "urssafReminder": { "type": "boolean", "description": "Urssaf reminders" } }, "required": [ "urssafReminder" ] }, "ReadAdvanceDto": { "type": "object", "properties": { "id": { "type": "string", "example": "123e4567-e89b-12d3-a456-426614174000" }, "number": { "type": "string", "example": "INV-2023-001" }, "title": { "type": "string", "example": "Invoice Title", "description": "Title of the billing document" }, "type": { "example": "invoice", "allOf": [ { "$ref": "#/components/schemas/BillingType" } ] }, "state": { "example": "paid", "allOf": [ { "$ref": "#/components/schemas/BillingState" } ] }, "customer": { "$ref": "#/components/schemas/ReadBillingCustomerDto" }, "locale": { "example": "fr", "allOf": [ { "$ref": "#/components/schemas/BillingLocale" } ] }, "emittedAt": { "type": "number", "example": 1617187200 }, "archivedAt": { "type": "number", "example": 1617360000 }, "opportunity": { "$ref": "#/components/schemas/OpportunityDto" }, "locked": { "type": "boolean", "example": false }, "finalizable": { "type": "boolean", "example": true }, "test": { "type": "boolean" }, "isEditable": { "type": "boolean", "example": true }, "currencyCode": { "example": "EUR", "allOf": [ { "$ref": "#/components/schemas/CurrencyCode" } ] }, "currency": { "$ref": "#/components/schemas/ReadCurrencyDto" }, "lastDownloadAt": { "type": "number", "example": 1617619200 }, "attachments": { "type": "array", "items": { "$ref": "#/components/schemas/ReadFileDto" } }, "finalizeRequirements": { "type": "array", "items": { "$ref": "#/components/schemas/FinalizeRequirementDto" } }, "emitter": { "$ref": "#/components/schemas/ReadBillingEmitterDto" }, "bankInformation": { "$ref": "#/components/schemas/ReadBankInformationDto" }, "billingLegals": { "$ref": "#/components/schemas/BillingLegalsDto" }, "createdAt": { "type": "number", "example": 1617619200 }, "updatedAt": { "type": "number", "example": 1617619200 }, "deliveryDate": { "type": "number", "example": 1619865600 }, "compatibilityVersion": { "example": "V2", "allOf": [ { "$ref": "#/components/schemas/BillingCompatibilityVersion" } ] }, "isDeletable": { "type": "boolean", "example": false }, "displayDeliveryAddress": { "type": "boolean", "example": true }, "finalizedAt": { "type": "number", "example": 1617619200 }, "lastSendByEmailAt": { "type": "number", "example": 1617446400 }, "paymentDelay": { "example": "at_reception", "allOf": [ { "$ref": "#/components/schemas/PaymentDelay" } ] }, "dueAt": { "type": "number", "example": 1619865600 }, "paidAt": { "type": "number", "example": 1617273600 }, "lastReminderSentAt": { "type": "number", "example": 1617532800 }, "isReminderActivated": { "type": "boolean", "example": true }, "designation": { "type": "string", "example": "Advance 10% of 1000€" }, "isOnlinePaymentActivated": { "type": "boolean", "example": true }, "description": { "type": "string", "example": "Advance description" }, "total": { "$ref": "#/components/schemas/TotalDto" }, "discount": { "$ref": "#/components/schemas/DiscountDto" }, "displaySettings": { "$ref": "#/components/schemas/DisplaySettingsDto" }, "parent": { "$ref": "#/components/schemas/ReadEstimateDto" }, "advanceMode": { "example": "AMOUNT", "allOf": [ { "$ref": "#/components/schemas/AdvanceMode" } ] }, "advancePercentage": { "type": "number", "example": 10 }, "advanceAmount": { "type": "number", "example": 1000 }, "reminder": { "$ref": "#/components/schemas/BillingReminderDto" }, "latePenalty": { "$ref": "#/components/schemas/BillingLatePenaltyDto" }, "lumpSumCompensation": { "$ref": "#/components/schemas/BillingLumpSumCompensationDto" }, "discountAdvancePayment": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BillingDiscountAdvancePaymentDto" } ] }, "hasAssociatedTransaction": { "type": "boolean", "example": false, "description": "Indicates if the customer has an associated transaction" }, "includeDisbursement": { "type": "boolean", "example": true, "description": "Indicates if the advance includes disbursement" }, "canceledAt": { "type": "number", "example": 1617619200 } }, "required": [ "id", "type", "state", "customer", "locale", "emittedAt", "finalizable", "test", "isEditable", "currencyCode", "currency", "attachments", "finalizeRequirements", "emitter", "billingLegals", "createdAt", "updatedAt", "compatibilityVersion", "isDeletable", "displayDeliveryAddress", "paymentDelay", "isReminderActivated", "designation", "isOnlinePaymentActivated", "total", "displaySettings", "advanceMode", "advancePercentage", "advanceAmount", "hasAssociatedTransaction", "includeDisbursement" ] }, "ReadAdvanceItemLineDto": { "type": "object", "properties": { "value": { "type": "number", "description": "The value of the advance (amount or percentage)", "example": 100 }, "mode": { "description": "The mode of the advance (amount or percentage)", "example": "AMOUNT", "allOf": [ { "$ref": "#/components/schemas/AdvanceMode" } ] }, "paymentCondition": { "description": "Payment condition for the advance", "example": "ORDER", "allOf": [ { "$ref": "#/components/schemas/PaymentCondition" } ] }, "customPaymentCondition": { "type": "string", "description": "Custom payment condition if OTHER is selected", "nullable": true, "example": "Custom payment terms" } }, "required": [ "value", "mode" ] }, "ReadAdvanceItemLineTotalsDto": { "type": "object", "properties": { "totalAmountWithoutTax": { "type": "number", "description": "Total amount of all advances", "example": 350 }, "totalAmountWithTax": { "type": "number", "description": "Total amount of all advances after discount", "example": 350 }, "remainingTotalAmountWithoutTax": { "type": "number", "description": "Remaining total amount without tax", "example": 350 }, "remainingTotalAmountWithTax": { "type": "number", "description": "Remaining total amount with tax", "example": 350 } }, "required": [ "totalAmountWithoutTax", "totalAmountWithTax", "remainingTotalAmountWithoutTax", "remainingTotalAmountWithTax" ] }, "ReadAssetDto": { "type": "object", "properties": { "id": { "type": "string", "example": "123e4567-e89b-12d3-a456-426614174000" }, "number": { "type": "string", "example": "INV-2023-001" }, "title": { "type": "string", "example": "Invoice Title", "description": "Title of the billing document" }, "type": { "example": "invoice", "allOf": [ { "$ref": "#/components/schemas/BillingType" } ] }, "state": { "example": "paid", "allOf": [ { "$ref": "#/components/schemas/BillingState" } ] }, "customer": { "$ref": "#/components/schemas/ReadBillingCustomerDto" }, "locale": { "example": "fr", "allOf": [ { "$ref": "#/components/schemas/BillingLocale" } ] }, "emittedAt": { "type": "number", "example": 1617187200 }, "archivedAt": { "type": "number", "example": 1617360000 }, "opportunity": { "$ref": "#/components/schemas/OpportunityDto" }, "locked": { "type": "boolean", "example": false }, "finalizable": { "type": "boolean", "example": true }, "test": { "type": "boolean" }, "isEditable": { "type": "boolean", "example": true }, "currencyCode": { "example": "EUR", "allOf": [ { "$ref": "#/components/schemas/CurrencyCode" } ] }, "currency": { "$ref": "#/components/schemas/ReadCurrencyDto" }, "lastDownloadAt": { "type": "number", "example": 1617619200 }, "attachments": { "type": "array", "items": { "$ref": "#/components/schemas/ReadFileDto" } }, "finalizeRequirements": { "type": "array", "items": { "$ref": "#/components/schemas/FinalizeRequirementDto" } }, "emitter": { "$ref": "#/components/schemas/ReadBillingEmitterDto" }, "bankInformation": { "$ref": "#/components/schemas/ReadBankInformationDto" }, "billingLegals": { "$ref": "#/components/schemas/BillingLegalsDto" }, "createdAt": { "type": "number", "example": 1617619200 }, "updatedAt": { "type": "number", "example": 1617619200 }, "deliveryDate": { "type": "number", "example": 1619865600 }, "compatibilityVersion": { "example": "V2", "allOf": [ { "$ref": "#/components/schemas/BillingCompatibilityVersion" } ] }, "isDeletable": { "type": "boolean", "example": false }, "displayDeliveryAddress": { "type": "boolean", "example": true }, "finalizedAt": { "type": "number", "example": 1617619200 }, "lastSendByEmailAt": { "type": "number", "example": 1617619200 }, "lines": { "type": "array", "items": { "$ref": "#/components/schemas/ReadBillingDetailsLineDto" } }, "total": { "$ref": "#/components/schemas/ReadInvoiceTotalDto" }, "discount": { "$ref": "#/components/schemas/DiscountDto" }, "parent": { "oneOf": [ { "$ref": "#/components/schemas/ReadInvoiceDto" }, { "$ref": "#/components/schemas/ReadAdvanceDto" } ] }, "refundAt": { "type": "number", "example": 1617187200 }, "latePenalty": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BillingLatePenaltyDto" } ] }, "lumpSumCompensation": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BillingLumpSumCompensationDto" } ] }, "discountAdvancePayment": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BillingDiscountAdvancePaymentDto" } ] }, "displaySettings": { "$ref": "#/components/schemas/DisplayBillingSettingsDto" }, "dueAt": { "type": "number", "example": 1619865600 }, "paymentDelay": { "example": "at_reception", "allOf": [ { "$ref": "#/components/schemas/PaymentDelay" } ] }, "includeDiscountDisbursement": { "type": "boolean", "example": true } }, "required": [ "id", "type", "state", "customer", "locale", "emittedAt", "finalizable", "test", "isEditable", "currencyCode", "currency", "attachments", "finalizeRequirements", "emitter", "billingLegals", "createdAt", "updatedAt", "compatibilityVersion", "isDeletable", "displayDeliveryAddress", "lines", "total", "displaySettings", "paymentDelay", "includeDiscountDisbursement" ] }, "ReadBankInformationDto": { "type": "object", "properties": { "bic": { "type": "string", "example": "12345678901234567890" }, "iban": { "type": "string", "example": "12345678901234567890" }, "holder": { "type": "string", "example": "John Doe" } }, "required": [ "bic", "iban", "holder" ] }, "ReadBillingCustomerDto": { "type": "object", "properties": { "id": { "type": "string", "example": "123e4567-e89b-12d3-a456-426614174000", "description": "Unique identifier of the customer" }, "legacyId": { "type": "string", "example": "123e4567", "description": "Legacy identifier of the customer" }, "currency": { "example": "EUR", "description": "Preferred currency of the customer", "allOf": [ { "$ref": "#/components/schemas/CurrencyCode" } ] }, "firstname": { "type": "string", "example": "John", "description": "First name of the customer" }, "lastname": { "type": "string", "example": "Doe", "description": "Last name of the customer" }, "phoneNumber": { "type": "string", "example": "+33 6 12 34 56 78", "description": "Phone number of the customer" }, "emails": { "example": [ "john.doe@example.com" ], "description": "Email addresses of the customer", "type": "array", "items": { "type": "string" } }, "billingAddress": { "description": "Billing address of the customer", "allOf": [ { "$ref": "#/components/schemas/AddressDto" } ] }, "deliveryAddress": { "description": "Delivery address of the customer", "allOf": [ { "$ref": "#/components/schemas/AddressDto" } ] }, "deliveryAddressIsSame": { "type": "boolean", "example": true, "description": "Tell if delivery and billing address are deep equal or not" }, "language": { "type": "string", "example": "fr", "description": "Preferred language of the customer" }, "name": { "type": "string", "example": "John Doe", "description": "Full name of the customer" }, "commercialName": { "type": "string", "example": "Doe Enterprises", "description": "Commercial name of the customer" }, "siren": { "type": "string", "example": "123 456 789", "description": "SIREN number of the customer" }, "siret": { "type": "string", "example": "123 456 789 00012", "description": "SIRET number of the customer" }, "nafCode": { "type": "string", "example": "62.02A", "description": "NAF code of the customer" }, "vatNumber": { "type": "string", "example": "FR12345678900", "description": "VAT number of the customer" }, "token": { "type": "string", "example": "863aadf3-3cbe-4ba6-ad01-5c3edb05a669", "description": "Token associated with the customer" }, "parent": { "description": "Parent customer information", "allOf": [ { "$ref": "#/components/schemas/ReadBillingCustomerDto" } ] }, "contactId": { "type": "string", "example": "123e4567-e89b-12d3-a456-426614174001", "description": "Contact identifier associated with the customer" }, "organizationId": { "type": "string", "example": "123e4567-e89b-12d3-a456-426614174002", "description": "Organization identifier associated with the customer" }, "isDefault": { "type": "boolean", "example": true, "description": "Indicates if this is the default customer" }, "test": { "type": "boolean", "example": false, "description": "Indicates if this is a test customer" } }, "required": [ "id", "legacyId", "billingAddress", "deliveryAddressIsSame", "token", "test" ] }, "ReadBillingDetailsLineDto": { "type": "object", "properties": { "generatedId": { "type": "string", "example": "123e4567-e89b-12d3-a456-426614174000" }, "id": { "type": "string", "example": "123e4567-e89b-12d3-a456-426614174000" }, "unitPrice": { "type": "number", "example": 50 }, "productId": { "type": "string", "example": "123e4567-e89b-12d3-a456-426614174000" }, "quantity": { "type": "number", "example": 2 }, "quantityUnit": { "example": "hour", "allOf": [ { "$ref": "#/components/schemas/ProductUnit" } ] }, "designation": { "type": "string", "example": "Consulting Services" }, "reference": { "type": "string", "example": "CONS-001" }, "description": { "type": "string", "example": "Detailed description of the service" }, "isDeliveryOfGoods": { "type": "boolean" }, "type": { "example": "commercial_or_craft_services", "allOf": [ { "$ref": "#/components/schemas/ProductType" } ] }, "vatCode": { "example": "FR_2000", "allOf": [ { "$ref": "#/components/schemas/VatCode" } ] }, "personalServiceActivity": { "example": "BRICOLAGE", "allOf": [ { "$ref": "#/components/schemas/PersonalServiceActivity" } ] }, "priceWithoutTaxBeforeDiscount": { "type": "number", "example": 100 }, "discountAmount": { "type": "number", "example": 1000 }, "discount": { "$ref": "#/components/schemas/DiscountLineDto" }, "priceWithoutTaxAfterDiscount": { "type": "number", "example": 90 }, "vatAmount": { "type": "number", "example": 18 }, "priceTotalTax": { "type": "number", "example": 108 }, "convertedAmounts": { "$ref": "#/components/schemas/ConvertedAmountsLineDto" }, "isTaxIncluded": { "type": "boolean", "example": false, "description": "Indicates whether the unit price includes tax (TTC) or excludes tax (HT)" } }, "required": [ "unitPrice", "designation", "isDeliveryOfGoods", "priceWithoutTaxBeforeDiscount", "discountAmount", "discount", "priceWithoutTaxAfterDiscount", "vatAmount", "priceTotalTax" ] }, "ReadBillingEmailDto": { "type": "object", "properties": { "subject": { "type": "string", "description": "The subject of the email with rendered variables", "example": "Reminder for invoice F-2025-12235" }, "content": { "type": "string", "description": "The content of the email with rendered variables", "example": "Please pay my invoice F-2025-12235 with the amount of 10,00 €" } }, "required": [ "subject", "content" ] }, "ReadBillingEmitterDto": { "type": "object", "properties": { "name": { "type": "string", "example": "John Doe Enterprise" }, "fullName": { "type": "string", "example": "John Doe" }, "email": { "type": "string", "example": "john.doe@example.com" }, "phone": { "type": "string", "example": "+33 6 12 34 56 78" }, "commercialName": { "type": "string", "example": "Le magasin de John Doe" }, "siret": { "type": "string", "example": "12345678901234567890" }, "vatNumber": { "type": "string", "example": "FR12345678901234" }, "rcsNumber": { "type": "string", "example": "RCS Paris" }, "legalStatus": { "example": "ei", "allOf": [ { "$ref": "#/components/schemas/LegalStatus" } ] }, "sapAgreementNumber": { "type": "string", "example": "SAP123456789" }, "hasVat": { "type": "boolean", "example": true } } }, "ReadCategoryDto": { "type": "object", "properties": { "id": { "type": "string", "description": "The category ID", "example": "123e4567-e89b-12d3-a456-426614174000" }, "companyId": { "type": "string", "description": "The company ID", "example": "123e4567-e89b-12d3-a456-426614174000" }, "name": { "type": "string", "description": "The name of the category", "example": "Qualified Leads" }, "rank": { "type": "string", "description": "The rank for ordering", "example": "0|hzzzzz:" }, "showDueDate": { "type": "boolean", "description": "Show due date on opportunities", "example": true }, "showAmount": { "type": "boolean", "description": "Show amount on opportunities", "example": true }, "showCustomer": { "type": "boolean", "description": "Show customer on opportunities", "example": true }, "color": { "type": "string", "description": "The color of the category (hex)", "example": "#6366f1" }, "isLost": { "type": "boolean", "description": "Whether this is a lost category", "example": false }, "isDone": { "type": "boolean", "description": "Whether this is a done category", "example": false }, "count": { "type": "number", "description": "Number of opportunities in this category", "example": 5 } }, "required": [ "id", "companyId", "name", "rank", "showDueDate", "showAmount", "showCustomer", "color", "isLost", "isDone", "count" ] }, "ReadContactDto": { "type": "object", "properties": { "id": { "type": "string", "description": "Contact ID", "example": "123e4567-e89b-12d3-a456-426614174000" }, "emails": { "description": "Contact email addresses", "example": [ "john@example.com", "johndoe@company.com" ], "type": "array", "items": { "type": "string" } }, "organization": { "description": "Organization information", "allOf": [ { "$ref": "#/components/schemas/OrganizationDto" } ] }, "defaultContact": { "type": "boolean", "description": "Whether this is the default contact", "example": true }, "createdAt": { "type": "number", "description": "Contact creation timestamp", "example": 1617187200 }, "archivedAt": { "type": "number", "description": "Contact archival timestamp", "example": 1617187200 }, "hasBillings": { "type": "boolean", "description": "Whether the contact has billings", "example": true }, "test": { "type": "boolean", "description": "Whether this is a test contact", "example": false }, "phone": { "type": "string", "description": "Contact phone number", "example": "+33123456789" }, "firstname": { "type": "string", "description": "Contact first name", "example": "John" }, "lastname": { "type": "string", "description": "Contact last name", "example": "Doe" }, "billingAddress": { "description": "Billing address", "allOf": [ { "$ref": "#/components/schemas/ClientAddressDto" } ] }, "deliveryAddress": { "description": "Delivery address", "allOf": [ { "$ref": "#/components/schemas/ClientAddressDto" } ] }, "jobTitle": { "type": "string", "description": "Contact job title", "example": "Software Engineer" }, "bankInformations": { "description": "Bank information", "allOf": [ { "$ref": "#/components/schemas/BankInformationsDto" } ] }, "hasTiersPrestation": { "type": "boolean", "description": "Whether the contact has third-party services", "example": false }, "notes": { "type": "string", "description": "Additional notes about the contact", "example": "Prefers email communication" }, "language": { "description": "Contact language preference", "example": "en", "allOf": [ { "$ref": "#/components/schemas/BillingLocale" } ] }, "currency": { "description": "Preferred currency", "example": "EUR", "allOf": [ { "$ref": "#/components/schemas/CurrencyCode" } ] }, "paymentMethods": { "description": "Accepted payment methods", "example": [ "cash", "credit_card" ], "allOf": [ { "$ref": "#/components/schemas/PaymentMethod" } ] } }, "required": [ "id", "createdAt", "hasBillings", "test", "firstname", "lastname", "hasTiersPrestation" ] }, "ReadContactListItemDto": { "type": "object", "properties": { "archivedAt": { "type": "number", "description": "Contact archival timestamp", "example": 1617187200 }, "createdAt": { "type": "number", "description": "Contact creation timestamp", "example": 1617187200 }, "test": { "type": "boolean", "description": "Whether this is a test contact", "example": false }, "defaultContact": { "type": "boolean", "description": "Whether this is the default contact", "example": true }, "emails": { "description": "Contact email addresses", "example": [ "john@example.com", "johndoe@company.com" ], "type": "array", "items": { "type": "string" } }, "hasBillings": { "type": "boolean", "description": "Whether the contact has billings", "example": true }, "id": { "type": "string", "description": "Contact ID", "example": "123e4567-e89b-12d3-a456-426614174000" }, "fullname": { "type": "string", "description": "Contact full name", "example": "John Doe" }, "organization": { "description": "Organization information", "allOf": [ { "$ref": "#/components/schemas/OrganizationDto" } ] }, "tiersPrestation": { "description": "Third-party service information", "allOf": [ { "$ref": "#/components/schemas/TiersPrestationDto" } ] } }, "required": [ "createdAt", "test", "hasBillings", "id", "fullname" ] }, "ReadContactsDto": { "type": "object", "properties": { "countWithoutFilters": { "type": "number" }, "totalDocs": { "type": "number" }, "limit": { "type": "number" }, "totalPages": { "type": "number" }, "hasNextPage": { "type": "boolean" }, "hasPrevPage": { "type": "boolean" }, "nextPage": { "type": "number" }, "page": { "type": "number" }, "prevPage": { "type": "number" }, "docs": { "type": "array", "items": { "$ref": "#/components/schemas/ReadContactListItemDto" } } }, "required": [ "countWithoutFilters", "totalDocs", "limit", "totalPages", "hasNextPage", "hasPrevPage", "nextPage", "page", "prevPage", "docs" ] }, "ReadCurrencyDto": { "type": "object", "properties": { "currencyCode": { "example": "EUR", "allOf": [ { "$ref": "#/components/schemas/CurrencyCode" } ] }, "currencyDate": { "type": "number", "example": 1617187200 }, "currencyRate": { "type": "number", "example": 1.2 }, "origin": { "example": "ECB", "allOf": [ { "$ref": "#/components/schemas/CurrencyOrigin" } ] } }, "required": [ "currencyCode", "currencyDate", "currencyRate", "origin" ] }, "ReadCustomerAddressDto": { "type": "object", "properties": { "line1": { "type": "string", "description": "First line of address" }, "line2": { "type": "string", "description": "Second line of address" }, "city": { "type": "string", "description": "City name" }, "zipCode": { "type": "string", "description": "Postal/ZIP code" }, "country": { "description": "Country code enum value", "allOf": [ { "$ref": "#/components/schemas/CountryCode" } ] } }, "required": [ "line1", "city", "zipCode", "country" ] }, "ReadCustomerDto": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier" }, "legacyId": { "type": "string", "description": "Legacy system identifier" }, "paymentMethods": { "description": "List of payment method identifiers", "type": "array", "items": { "type": "string" } }, "currency": { "description": "Preferred currency code", "allOf": [ { "$ref": "#/components/schemas/CurrencyCode" } ] }, "firstname": { "type": "string", "description": "Customer first name" }, "lastname": { "type": "string", "description": "Customer last name" }, "phoneNumber": { "type": "string", "description": "Contact phone number" }, "emails": { "description": "List of email addresses", "type": "array", "items": { "type": "string" } }, "billingAddress": { "description": "Billing address information", "allOf": [ { "$ref": "#/components/schemas/ReadCustomerAddressDto" } ] }, "deliveryAddress": { "description": "Delivery address information", "allOf": [ { "$ref": "#/components/schemas/ReadCustomerAddressDto" } ] }, "deliveryAddressIsSame": { "type": "boolean", "example": true, "description": "Tell if delivery and billing address are deep equal or not" }, "language": { "type": "string", "description": "Preferred language code" }, "name": { "type": "string", "description": "Business name" }, "commercialName": { "type": "string", "description": "Commercial/trading name" }, "siren": { "type": "string", "description": "SIREN number" }, "siret": { "type": "string", "description": "SIRET number" }, "nafCode": { "type": "string", "description": "NAF/APE code" }, "vatNumber": { "type": "string", "description": "VAT identification number" }, "token": { "type": "string", "description": "Customer token" }, "tiersPrestationIsActivated": { "type": "boolean", "description": "Tiers prestation activation status" }, "tiersPrestation": { "description": "Tiers prestation details", "allOf": [ { "$ref": "#/components/schemas/ReadTiersPrestationDto" } ] }, "parent": { "description": "Parent customer information", "allOf": [ { "$ref": "#/components/schemas/ReadCustomerDto" } ] }, "contactId": { "type": "string", "description": "Associated contact ID" }, "organizationId": { "type": "string", "description": "Associated organization ID" }, "isDefault": { "type": "boolean", "description": "Default status flag" }, "test": { "type": "boolean", "description": "Test account flag" }, "archivedAt": { "type": "number", "description": "Archived at" } }, "required": [ "id", "legacyId", "billingAddress", "deliveryAddressIsSame", "token", "test" ] }, "ReadEstimateAdvanceLinesDto": { "type": "object", "properties": { "advances": { "description": "Array of advance items", "example": [ { "value": 100, "mode": "AMOUNT", "paymentCondition": "ORDER" }, { "value": 25, "mode": "PERCENTAGE", "paymentCondition": "SIGNATURE" } ], "type": "array", "items": { "$ref": "#/components/schemas/ReadAdvanceItemLineDto" } }, "totals": { "description": "Totals of the advance items", "example": { "totalAmountWithoutTax": 350, "totalAmountWithTax": 350, "remainingTotalAmountWithoutTax": 350, "remainingTotalAmountWithTax": 350 }, "allOf": [ { "$ref": "#/components/schemas/ReadAdvanceItemLineTotalsDto" } ] }, "convertedTotals": { "description": "Converted totals of the advance items", "example": { "totalAmountWithoutTax": 350, "totalAmountWithTax": 350, "remainingTotalAmountWithoutTax": 350, "remainingTotalAmountWithTax": 350 }, "allOf": [ { "$ref": "#/components/schemas/ReadAdvanceItemLineTotalsDto" } ] } }, "required": [ "advances", "totals", "convertedTotals" ] }, "ReadEstimateDto": { "type": "object", "properties": { "id": { "type": "string", "example": "123e4567-e89b-12d3-a456-426614174000" }, "number": { "type": "string", "example": "INV-2023-001" }, "title": { "type": "string", "example": "Invoice Title", "description": "Title of the billing document" }, "type": { "example": "invoice", "allOf": [ { "$ref": "#/components/schemas/BillingType" } ] }, "state": { "example": "paid", "allOf": [ { "$ref": "#/components/schemas/BillingState" } ] }, "customer": { "$ref": "#/components/schemas/ReadBillingCustomerDto" }, "locale": { "example": "fr", "allOf": [ { "$ref": "#/components/schemas/BillingLocale" } ] }, "emittedAt": { "type": "number", "example": 1617187200 }, "archivedAt": { "type": "number", "example": 1617360000 }, "opportunity": { "$ref": "#/components/schemas/OpportunityDto" }, "locked": { "type": "boolean", "example": false }, "finalizable": { "type": "boolean", "example": true }, "test": { "type": "boolean" }, "isEditable": { "type": "boolean", "example": true }, "currencyCode": { "example": "EUR", "allOf": [ { "$ref": "#/components/schemas/CurrencyCode" } ] }, "currency": { "$ref": "#/components/schemas/ReadCurrencyDto" }, "lastDownloadAt": { "type": "number", "example": 1617619200 }, "attachments": { "type": "array", "items": { "$ref": "#/components/schemas/ReadFileDto" } }, "finalizeRequirements": { "type": "array", "items": { "$ref": "#/components/schemas/FinalizeRequirementDto" } }, "emitter": { "$ref": "#/components/schemas/ReadBillingEmitterDto" }, "bankInformation": { "$ref": "#/components/schemas/ReadBankInformationDto" }, "billingLegals": { "$ref": "#/components/schemas/BillingLegalsDto" }, "createdAt": { "type": "number", "example": 1617619200 }, "updatedAt": { "type": "number", "example": 1617619200 }, "deliveryDate": { "type": "number", "example": 1617619200 }, "compatibilityVersion": { "example": "V2", "allOf": [ { "$ref": "#/components/schemas/BillingCompatibilityVersion" } ] }, "isDeletable": { "type": "boolean", "example": true }, "displayDeliveryAddress": { "type": "boolean", "example": true }, "finalizedAt": { "type": "number", "example": 1617619200 }, "lastSendByEmailAt": { "type": "number", "example": 1617446400 }, "paymentDelay": { "example": "at_reception", "allOf": [ { "$ref": "#/components/schemas/PaymentDelay" } ] }, "expiredAt": { "type": "number", "example": 1619865600 }, "refusedAt": { "type": "number", "example": 1619865600 }, "signedAt": { "type": "number", "example": 1619865600 }, "lines": { "type": "array", "items": { "$ref": "#/components/schemas/ReadBillingDetailsLineDto" } }, "total": { "$ref": "#/components/schemas/EstimateTotalDto" }, "discount": { "$ref": "#/components/schemas/DiscountDto" }, "latePenalty": { "$ref": "#/components/schemas/LatePenaltyDto" }, "lumpSumCompensation": { "$ref": "#/components/schemas/LumpSumCompensationDto" }, "discountAdvancePayment": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BillingDiscountAdvancePaymentDto" } ] }, "displaySettings": { "$ref": "#/components/schemas/DisplaySettingsDto" }, "advances": { "type": "array", "items": { "$ref": "#/components/schemas/ReadAdvanceDto" } }, "advanceEstimateLines": { "$ref": "#/components/schemas/ReadEstimateAdvanceLinesDto" }, "withElectronicSignature": { "type": "boolean", "example": true }, "electronicSignature": { "$ref": "#/components/schemas/EstimateElectronicSignatureDto" }, "dueAt": { "type": "number", "example": 1619865600 }, "electronicSignatureRequirements": { "type": "array", "items": { "$ref": "#/components/schemas/ElectronicSignatureRequirementDto" } }, "hasFinalInvoice": { "type": "boolean", "example": true }, "includeDiscountDisbursement": { "type": "boolean", "example": true } }, "required": [ "id", "type", "state", "customer", "locale", "emittedAt", "finalizable", "test", "isEditable", "currencyCode", "currency", "attachments", "finalizeRequirements", "emitter", "billingLegals", "createdAt", "updatedAt", "compatibilityVersion", "isDeletable", "displayDeliveryAddress", "paymentDelay", "expiredAt", "lines", "total", "displaySettings", "advances", "advanceEstimateLines", "withElectronicSignature", "electronicSignature", "electronicSignatureRequirements", "hasFinalInvoice", "includeDiscountDisbursement" ] }, "ReadFileDto": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "extension": { "type": "string" }, "mimeType": { "type": "string" }, "url": { "type": "string" }, "relativeUrl": { "type": "string" }, "isCertified": { "type": "boolean" }, "isCertifiable": { "type": "boolean" } }, "required": [ "id", "name", "extension", "mimeType", "url", "relativeUrl" ] }, "ReadInvoiceDto": { "type": "object", "properties": { "id": { "type": "string", "example": "123e4567-e89b-12d3-a456-426614174000" }, "number": { "type": "string", "example": "INV-2023-001" }, "title": { "type": "string", "example": "Invoice Title", "description": "Title of the billing document" }, "type": { "example": "invoice", "allOf": [ { "$ref": "#/components/schemas/BillingType" } ] }, "state": { "example": "paid", "allOf": [ { "$ref": "#/components/schemas/BillingState" } ] }, "customer": { "$ref": "#/components/schemas/ReadBillingCustomerDto" }, "locale": { "example": "fr", "allOf": [ { "$ref": "#/components/schemas/BillingLocale" } ] }, "emittedAt": { "type": "number", "example": 1617187200 }, "archivedAt": { "type": "number", "example": 1617360000 }, "opportunity": { "$ref": "#/components/schemas/OpportunityDto" }, "locked": { "type": "boolean", "example": false }, "finalizable": { "type": "boolean", "example": true }, "test": { "type": "boolean" }, "isEditable": { "type": "boolean", "example": true }, "currencyCode": { "example": "EUR", "allOf": [ { "$ref": "#/components/schemas/CurrencyCode" } ] }, "currency": { "$ref": "#/components/schemas/ReadCurrencyDto" }, "lastDownloadAt": { "type": "number", "example": 1617619200 }, "attachments": { "type": "array", "items": { "$ref": "#/components/schemas/ReadFileDto" } }, "finalizeRequirements": { "type": "array", "items": { "$ref": "#/components/schemas/FinalizeRequirementDto" } }, "emitter": { "$ref": "#/components/schemas/ReadBillingEmitterDto" }, "bankInformation": { "$ref": "#/components/schemas/ReadBankInformationDto" }, "billingLegals": { "$ref": "#/components/schemas/BillingLegalsDto" }, "createdAt": { "type": "number", "example": 1617619200 }, "updatedAt": { "type": "number", "example": 1617619200 }, "deliveryDate": { "type": "number", "example": 1619865600 }, "compatibilityVersion": { "example": "V2", "allOf": [ { "$ref": "#/components/schemas/BillingCompatibilityVersion" } ] }, "isDeletable": { "type": "boolean", "example": false }, "displayDeliveryAddress": { "type": "boolean", "example": true }, "finalizedAt": { "type": "number", "example": 1617619200 }, "lastSendByEmailAt": { "type": "number", "example": 1617446400 }, "paymentDelay": { "example": "at_reception", "allOf": [ { "$ref": "#/components/schemas/PaymentDelay" } ] }, "dueAt": { "type": "number", "example": 1619865600 }, "paidAt": { "type": "number", "example": 1617273600 }, "lastReminderSentAt": { "type": "number", "example": 1617532800 }, "isReminderActivated": { "type": "boolean", "example": true }, "isOnlinePaymentActivated": { "type": "boolean", "example": true }, "isFinalInvoice": { "type": "boolean", "example": true }, "lines": { "type": "array", "items": { "$ref": "#/components/schemas/ReadBillingDetailsLineDto" } }, "total": { "$ref": "#/components/schemas/ReadInvoiceTotalDto" }, "reminder": { "$ref": "#/components/schemas/ReminderDto" }, "discount": { "$ref": "#/components/schemas/DiscountDto" }, "latePenalty": { "$ref": "#/components/schemas/LatePenaltyDto" }, "lumpSumCompensation": { "$ref": "#/components/schemas/BillingLumpSumCompensationDto" }, "discountAdvancePayment": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BillingDiscountAdvancePaymentDto" } ] }, "displaySettings": { "$ref": "#/components/schemas/DisplayBillingSettingsDto" }, "paymentRequest": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/PaymentRequestDto" } ] }, "parent": { "$ref": "#/components/schemas/ReadEstimateDto" }, "frequency": { "$ref": "#/components/schemas/FrequencyDto" }, "hasAssociatedTransaction": { "type": "boolean", "example": false, "description": "Indicates if the customer has an associated transaction" }, "includeDiscountDisbursement": { "type": "boolean", "example": true }, "expiredAt": { "type": "number", "example": 1617619200 }, "canceledAt": { "type": "number", "example": 1617619200 } }, "required": [ "id", "type", "state", "customer", "locale", "emittedAt", "finalizable", "test", "isEditable", "currencyCode", "currency", "attachments", "finalizeRequirements", "emitter", "billingLegals", "createdAt", "updatedAt", "compatibilityVersion", "isDeletable", "displayDeliveryAddress", "paymentDelay", "dueAt", "isReminderActivated", "isOnlinePaymentActivated", "isFinalInvoice", "lines", "total", "displaySettings", "hasAssociatedTransaction", "includeDiscountDisbursement" ] }, "ReadInvoiceTotalDto": { "type": "object", "properties": { "amountWithoutTaxBeforeDiscount": { "type": "number", "example": 1100 }, "amountWithoutTaxAfterDiscount": { "type": "number", "example": 1000 }, "amountWithTaxAfterDiscount": { "type": "number", "example": 1200 }, "remainingAmountWithoutTax": { "type": "number", "example": 500 }, "remainingAmountWithTax": { "type": "number", "example": 600 }, "remainingReconciliateAmount": { "type": "number", "example": 600 }, "discountAmount": { "type": "number", "example": 100 }, "vatDetails": { "type": "array", "items": { "$ref": "#/components/schemas/VatDetailDto" } }, "amountWithoutTaxBeforeDiscountWithoutDisbursement": { "type": "number", "example": 100 }, "convertedAmounts": { "$ref": "#/components/schemas/ReadInvoiceTotalWithoutConvertedAmountsDto" } }, "required": [ "amountWithoutTaxBeforeDiscount", "amountWithoutTaxAfterDiscount", "amountWithTaxAfterDiscount", "remainingAmountWithoutTax", "remainingAmountWithTax", "remainingReconciliateAmount", "vatDetails", "amountWithoutTaxBeforeDiscountWithoutDisbursement" ] }, "ReadInvoiceTotalWithoutConvertedAmountsDto": { "type": "object", "properties": { "amountWithoutTaxBeforeDiscount": { "type": "number", "example": 1100 }, "amountWithoutTaxAfterDiscount": { "type": "number", "example": 1000 }, "amountWithTaxAfterDiscount": { "type": "number", "example": 1200 }, "remainingAmountWithoutTax": { "type": "number", "example": 500 }, "remainingAmountWithTax": { "type": "number", "example": 600 }, "remainingReconciliateAmount": { "type": "number", "example": 600 }, "discountAmount": { "type": "number", "example": 100 }, "vatDetails": { "type": "array", "items": { "$ref": "#/components/schemas/VatDetailDto" } }, "amountWithoutTaxBeforeDiscountWithoutDisbursement": { "type": "number", "example": 100 } }, "required": [ "amountWithoutTaxBeforeDiscount", "amountWithoutTaxAfterDiscount", "amountWithTaxAfterDiscount", "remainingAmountWithoutTax", "remainingAmountWithTax", "remainingReconciliateAmount", "vatDetails", "amountWithoutTaxBeforeDiscountWithoutDisbursement" ] }, "ReadMeDto": { "type": "object", "properties": { "company": { "description": "Informations de l'entreprise", "allOf": [ { "$ref": "#/components/schemas/CompanyDto" } ] }, "preferences": { "description": "Préférences de l'entreprise", "allOf": [ { "$ref": "#/components/schemas/PreferencesDto" } ] }, "user": { "description": "Informations de l'utilisateur", "allOf": [ { "$ref": "#/components/schemas/UserDto" } ] } }, "required": [ "company", "preferences", "user" ] }, "ReadOpportunityDto": { "type": "object", "properties": { "id": { "type": "string", "description": "The opportunity ID", "example": "123e4567-e89b-12d3-a456-426614174000" }, "createdAt": { "type": "number", "description": "The creation date as Unix timestamp", "example": 1700000000 }, "name": { "type": "string", "description": "The name of the opportunity", "example": "New Project Lead" }, "description": { "type": "string", "description": "The description of the opportunity", "example": "Potential client interested in our services" }, "dueDate": { "type": "number", "description": "The due date as Unix timestamp", "example": 1700000000 }, "amount": { "type": "number", "description": "The amount in cents", "example": 100000 }, "rank": { "type": "string", "description": "The rank for ordering", "example": "0|hzzzzz:" }, "customerId": { "type": "string", "description": "The legacy customer ID", "example": "507f1f77bcf86cd799439011" }, "categoryId": { "type": "string", "description": "The category ID", "example": "123e4567-e89b-12d3-a456-426614174000" }, "category": { "description": "The category of the opportunity", "allOf": [ { "$ref": "#/components/schemas/ReadCategoryDto" } ] }, "customer": { "description": "The customer of the opportunity", "allOf": [ { "$ref": "#/components/schemas/ReadCustomerDto" } ] } }, "required": [ "id", "createdAt", "name", "amount", "rank", "customerId", "categoryId", "category", "customer" ] }, "ReadOrganizationDto": { "type": "object", "properties": { "language": { "description": "The client's preferred language for billing", "example": "en", "allOf": [ { "$ref": "#/components/schemas/BillingLocale" } ] }, "currency": { "description": "The client's preferred currency for transactions", "example": "USD", "allOf": [ { "$ref": "#/components/schemas/CurrencyCode" } ] }, "paymentMethods": { "description": "The client's preferred payment methods", "example": [ "cheque", "stripe" ], "type": "array", "items": { "type": "string" } }, "id": { "type": "string" }, "name": { "type": "string" }, "commercialName": { "type": "string" }, "emails": { "type": "array", "items": { "type": "string" } }, "siret": { "type": "string" }, "vatNumber": { "type": "string" }, "countContacts": { "type": "number" }, "billingAddress": { "$ref": "#/components/schemas/ClientAddressDto" }, "deliveryAddress": { "$ref": "#/components/schemas/ClientAddressDto" }, "bankInformations": { "$ref": "#/components/schemas/BankInformationsDto" }, "notes": { "type": "string" }, "createdAt": { "type": "number", "description": "Contact creation timestamp", "example": 1617187200 }, "archivedAt": { "type": "number", "description": "Contact archival timestamp", "example": 1617187200 }, "hasBillings": { "type": "boolean" }, "test": { "type": "boolean" } }, "required": [ "id", "name", "commercialName", "emails", "siret", "vatNumber", "countContacts", "billingAddress", "deliveryAddress", "bankInformations", "notes", "createdAt", "archivedAt", "hasBillings", "test" ] }, "ReadOrganizationsDto": { "type": "object", "properties": { "countWithoutFilters": { "type": "number" }, "totalDocs": { "type": "number" }, "limit": { "type": "number" }, "totalPages": { "type": "number" }, "hasNextPage": { "type": "boolean" }, "hasPrevPage": { "type": "boolean" }, "nextPage": { "type": "number" }, "page": { "type": "number" }, "prevPage": { "type": "number" }, "docs": { "type": "array", "items": { "$ref": "#/components/schemas/ReadOrganizationDto" } } }, "required": [ "countWithoutFilters", "totalDocs", "limit", "totalPages", "hasNextPage", "hasPrevPage", "nextPage", "page", "prevPage", "docs" ] }, "ReadPaymentAccountDto": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the payment account", "example": "1234567890" }, "externalId": { "type": "string", "description": "The external ID of the payment account", "example": "acct_1234567890" }, "provider": { "description": "The provider of the payment account", "example": "stripe_connect", "allOf": [ { "$ref": "#/components/schemas/PaymentProvider" } ] }, "status": { "description": "The status of the payment account", "example": "enabled", "allOf": [ { "$ref": "#/components/schemas/PaymentAccountStatus" } ] }, "reason": { "description": "The reason of the payment account", "example": "MISSING_INFO", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/PaymentAccountIssueReason" } ] } }, "required": [ "id", "externalId", "provider", "status", "reason" ] }, "ReadTiersPrestationDto": { "type": "object", "properties": { "idClient": { "type": "string", "description": "Client identifier" }, "registeredAt": { "type": "number", "description": "Registration timestamp" }, "status": { "description": "Current client state", "allOf": [ { "$ref": "#/components/schemas/ClientState" } ] } }, "required": [ "idClient", "registeredAt", "status" ] }, "ReminderDto": { "type": "object", "properties": { "inCopy": { "type": "boolean", "example": true }, "frequency": { "example": "every_week", "allOf": [ { "$ref": "#/components/schemas/ReminderFrequency" } ] }, "numberOfRemindersToSend": { "type": "number", "example": 3 }, "active": { "type": "boolean", "example": true }, "recipients": { "type": "array", "items": { "type": "string" } } }, "required": [ "inCopy", "frequency", "numberOfRemindersToSend", "active", "recipients" ] }, "ReminderFrequency": { "type": "string", "enum": [ "on_due_date", "every_week" ], "description": "The frequency at which reminders should be sent" }, "RentabilityPreferencesDto": { "type": "object", "properties": { "defaultProductMargin": { "type": "number", "description": "Marge par défaut pour les produits (en pourcentage)", "example": 20 }, "defaultOverheadCosts": { "type": "number", "description": "Coûts généraux par défaut (en pourcentage)", "example": 15 } }, "required": [ "defaultProductMargin", "defaultOverheadCosts" ] }, "RetrieveCustomerPortalPaymentsDto": { "type": "object", "properties": { "customer": { "$ref": "#/components/schemas/CustomerPortalCustomerDto" }, "billings": { "type": "array", "items": { "$ref": "#/components/schemas/CustomerPortalBillingDto" } }, "company": { "$ref": "#/components/schemas/CustomerPortalCompanyDto" }, "email": { "type": "string" }, "phone": { "type": "string" } }, "required": [ "customer", "billings", "company", "email" ] }, "SendBillingByEmailDto": { "type": "object", "properties": { "emails": { "description": "List of email addresses to send the billing document to", "example": [ "client@example.com" ], "maxItems": 10, "type": "array", "items": { "type": "string" } }, "subject": { "type": "string", "description": "Email subject", "example": "Your invoice #INV-2024-001", "maxLength": 255 }, "content": { "type": "string", "description": "Email content (HTML supported)", "example": "

Please find attached your invoice.

" }, "inCopy": { "type": "boolean", "description": "Whether to send a copy to the sender", "example": true, "default": false } }, "required": [ "emails", "subject", "content" ] }, "SendTestEmailSignatureDto": { "type": "object", "properties": { "content": { "type": "string" } } }, "SetDefaultContactDto": { "type": "object", "properties": { "defaultContactId": { "type": "string" } }, "required": [ "defaultContactId" ] }, "TiersPrestationDto": { "type": "object", "properties": { "state": { "description": "Client state", "example": "synced", "allOf": [ { "$ref": "#/components/schemas/ClientState" } ] } }, "required": [ "state" ] }, "TotalDto": { "type": "object", "properties": { "amountWithoutTaxBeforeDiscount": { "type": "number", "example": 1100 }, "amountWithoutTaxAfterDiscount": { "type": "number", "example": 1000 }, "amountWithTaxAfterDiscount": { "type": "number", "example": 1200 }, "remainingAmountWithoutTax": { "type": "number", "example": 500 }, "remainingAmountWithTax": { "type": "number", "example": 600 }, "remainingReconciliateAmount": { "type": "number", "example": 600 }, "vatDetails": { "type": "array", "items": { "$ref": "#/components/schemas/VatDetailDto" } }, "discountAmount": { "type": "number", "example": 100 }, "convertedAmounts": { "$ref": "#/components/schemas/ConvertedAmountsDto" } }, "required": [ "amountWithoutTaxBeforeDiscount", "amountWithoutTaxAfterDiscount", "amountWithTaxAfterDiscount", "remainingAmountWithoutTax", "remainingAmountWithTax", "remainingReconciliateAmount", "vatDetails" ] }, "UpdateAdvanceGeneralInformationsDto": { "type": "object", "properties": { "headerNote": { "type": "string", "description": "Custom note to be displayed in the header of the billing", "example": "Thank you for your business!" }, "footerNote": { "type": "string", "description": "Custom note to be displayed in the footer of the billing", "example": "Please pay within 30 days." }, "generalTermsAndConditionsOfSale": { "type": "string", "description": "General terms and conditions of sale to be included in the billing", "example": "All goods remain our property until paid in full." }, "mentionMediator": { "type": "string", "description": "Mention mediateur to be included in the billing", "example": "Mention mediateur" }, "paymentMethods": { "description": "Array of accepted payment methods for the billing", "example": [ "transfer", "direct_debit" ], "type": "array", "items": { "type": "string" } }, "otherPaymentMethod": { "type": "string", "description": "Other payment method", "example": "Lydia" }, "vatMention": { "description": "Vat mention applicable for a billing", "example": "vat_not_applicable", "allOf": [ { "$ref": "#/components/schemas/VatMention" } ] }, "latePenalty": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BillingLatePenaltyDto" } ] }, "lumpSumCompensation": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BillingLumpSumCompensationDto" } ] }, "discountAdvancePayment": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BillingDiscountAdvancePaymentDto" } ] }, "isOnlinePaymentActivated": { "type": "boolean", "description": "Indicates if online payment is activated for this invoice", "example": true }, "reminder": { "description": "Reminder settings for the invoice", "example": { "inCopy": true, "frequency": "on_due_date", "numberOfRemindersToSend": 3, "active": true, "recipients": [ "john.doe@example.com" ] }, "allOf": [ { "$ref": "#/components/schemas/BillingReminderDto" } ] } } }, "UpdateAssetGeneralInformationsDto": { "type": "object", "properties": { "headerNote": { "type": "string", "description": "Custom note to be displayed in the header of the billing", "example": "Thank you for your business!" }, "footerNote": { "type": "string", "description": "Custom note to be displayed in the footer of the billing", "example": "Please pay within 30 days." }, "generalTermsAndConditionsOfSale": { "type": "string", "description": "General terms and conditions of sale to be included in the billing", "example": "All goods remain our property until paid in full." }, "mentionMediator": { "type": "string", "description": "Mention mediateur to be included in the billing", "example": "Mention mediateur" }, "paymentMethods": { "description": "Array of accepted payment methods for the billing", "example": [ "transfer", "direct_debit" ], "type": "array", "items": { "type": "string" } }, "otherPaymentMethod": { "type": "string", "description": "Other payment method", "example": "Lydia" }, "vatMention": { "description": "Vat mention applicable for a billing", "example": "vat_not_applicable", "allOf": [ { "$ref": "#/components/schemas/VatMention" } ] }, "latePenalty": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BillingLatePenaltyDto" } ] }, "lumpSumCompensation": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BillingLumpSumCompensationDto" } ] }, "discountAdvancePayment": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BillingDiscountAdvancePaymentDto" } ] } } }, "UpdateBillingBankInformationDto": { "type": "object", "properties": { "bankInformation": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BankInformationDto" } ] } }, "required": [ "bankInformation" ] }, "UpdateBillingCurrencyDto": { "type": "object", "properties": { "currency": { "example": "EUR", "description": "The currency which will be used with the billing", "allOf": [ { "$ref": "#/components/schemas/CurrencyCode" } ] }, "currencyRate": { "type": "number", "example": 1.2, "description": "The conversion rate from the billing currency to the new currency" } }, "required": [ "currency" ] }, "UpdateBillingDeliveryAddressDto": { "type": "object", "properties": { "deliveryAddress": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/UpdateDeliveryAddressDto" } ] }, "displayDeliveryAddress": { "type": "boolean", "description": "Display delivery address" } }, "required": [ "deliveryAddress", "displayDeliveryAddress" ] }, "UpdateBillingDisplaySettingsDto": { "type": "object", "properties": { "displayFullName": { "type": "boolean", "description": "Afficher le nom complet", "example": true }, "displayEmail": { "type": "boolean", "description": "Afficher l'email", "example": true }, "displayPhoneNumber": { "type": "boolean", "description": "Afficher le numéro de téléphone", "example": true }, "displaySAPAgreement": { "type": "boolean", "description": "Afficher l'accord SAP", "example": true }, "displayLegalStatus": { "type": "boolean", "description": "Afficher le statut légal", "example": true }, "displayRequiredMentionsProduct": { "type": "boolean", "description": "Afficher les mentions obligatoires du produit", "example": true }, "displayMemberOfAnApprovedAssociation": { "type": "boolean", "description": "Afficher \"Membre d'une association agréée\"", "example": true }, "displayAbbyLogo": { "type": "boolean", "description": "Afficher le logo Abby", "example": true }, "displayTitle": { "type": "boolean", "description": "Afficher le titre de la facture", "example": true }, "displayGoodForApproval": { "type": "boolean", "description": "Afficher la mention bon pour accord", "example": true }, "displayEstimateNumber": { "type": "boolean", "description": "Afficher le numéro du devis ou du bon de commande", "example": true } }, "required": [ "displayFullName", "displayEmail", "displayPhoneNumber", "displaySAPAgreement", "displayLegalStatus", "displayRequiredMentionsProduct", "displayMemberOfAnApprovedAssociation", "displayAbbyLogo", "displayTitle" ] }, "UpdateBillingLinesDto": { "type": "object", "properties": { "lines": { "description": "Array of billing lines, each representing a product or service", "type": "array", "items": { "$ref": "#/components/schemas/UpdateLineDto" } }, "discount": { "description": "Optional discount to be applied to the entire billing", "allOf": [ { "$ref": "#/components/schemas/DiscountDto" } ] } }, "required": [ "lines" ] }, "UpdateBillingLocaleDto": { "type": "object", "properties": { "locale": { "example": "fr", "description": "The locale of the billing document", "allOf": [ { "$ref": "#/components/schemas/BillingLocale" } ] } }, "required": [ "locale" ] }, "UpdateContactDto": { "type": "object", "properties": { "firstname": { "type": "string" }, "lastname": { "type": "string" }, "phone": { "type": "string" }, "jobTitle": { "type": "string" }, "emails": { "type": "array", "items": { "type": "string" } }, "billingAddress": { "$ref": "#/components/schemas/ClientAddressDto" }, "deliveryAddress": { "$ref": "#/components/schemas/ClientAddressDto" }, "bankInformations": { "$ref": "#/components/schemas/BankInformationsDto" }, "preferences": { "$ref": "#/components/schemas/ClientPreferencesDto" } }, "required": [ "firstname", "lastname" ] }, "UpdateDeliveryAddressDto": { "type": "object", "properties": { "line1": { "type": "string", "description": "First line of address" }, "line2": { "type": "string", "description": "Second line of address" }, "city": { "type": "string", "description": "City name" }, "zipCode": { "type": "string", "description": "Postal/ZIP code" }, "country": { "description": "Country code enum value", "allOf": [ { "$ref": "#/components/schemas/CountryCode" } ] } }, "required": [ "line1", "city", "zipCode", "country" ] }, "UpdateEstimateAdvanceLinesDto": { "type": "object", "properties": { "advances": { "description": "Array of advance items", "example": [ { "value": 100, "mode": "AMOUNT", "paymentCondition": "ORDER" }, { "value": 50, "mode": "PERCENTAGE", "paymentCondition": "SIGNATURE" } ], "type": "array", "items": { "$ref": "#/components/schemas/AdvanceItemDto" } } }, "required": [ "advances" ] }, "UpdateEstimateGeneralInformationsDto": { "type": "object", "properties": { "headerNote": { "type": "string", "description": "Custom note to be displayed in the header of the billing", "example": "Thank you for your business!" }, "footerNote": { "type": "string", "description": "Custom note to be displayed in the footer of the billing", "example": "Please pay within 30 days." }, "generalTermsAndConditionsOfSale": { "type": "string", "description": "General terms and conditions of sale to be included in the billing", "example": "All goods remain our property until paid in full." }, "mentionMediator": { "type": "string", "description": "Mention mediateur to be included in the billing", "example": "Mention mediateur" }, "paymentMethods": { "description": "Array of accepted payment methods for the billing", "example": [ "transfer", "direct_debit" ], "type": "array", "items": { "type": "string" } }, "otherPaymentMethod": { "type": "string", "description": "Other payment method", "example": "Lydia" }, "vatMention": { "description": "Vat mention applicable for a billing", "example": "vat_not_applicable", "allOf": [ { "$ref": "#/components/schemas/VatMention" } ] }, "latePenalty": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BillingLatePenaltyDto" } ] }, "lumpSumCompensation": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BillingLumpSumCompensationDto" } ] }, "discountAdvancePayment": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BillingDiscountAdvancePaymentDto" } ] } } }, "UpdateEstimateTimelineDto": { "type": "object", "properties": { "emittedAt": { "type": "number", "description": "The timestamp when the invoice was emitted", "example": 1617187200 }, "paymentDelay": { "description": "The payment delay for the invoice", "example": "thirty_days", "allOf": [ { "$ref": "#/components/schemas/PaymentDelay" } ] }, "customDueDate": { "type": "number", "description": "Custom due date for the invoice when payment delay is OTHER", "example": 1619865600 }, "deliveryDate": { "type": "number", "description": "The timestamp for delivery date", "example": 1617187200, "nullable": true }, "expiredAt": { "type": "number", "description": "The timestamp when the estimate expired", "example": 1617187200 } }, "required": [ "emittedAt", "paymentDelay", "expiredAt" ] }, "UpdateInvoiceBankInformationDto": { "type": "object", "properties": { "bankInformation": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BankInformationDto" } ] } }, "required": [ "bankInformation" ] }, "UpdateInvoiceDeliveryAddressDto": { "type": "object", "properties": { "deliveryAddress": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/UpdateDeliveryAddressDto" } ] }, "displayDeliveryAddress": { "type": "boolean", "description": "Display delivery address" } }, "required": [ "deliveryAddress", "displayDeliveryAddress" ] }, "UpdateInvoiceFrequencyDto": { "type": "object", "properties": { "from": { "type": "string" }, "to": { "type": "string" }, "frequency": { "type": "number" }, "interval": { "example": "month", "allOf": [ { "$ref": "#/components/schemas/FrequencyInterval" } ] }, "finalizeInvoice": { "type": "boolean" }, "sendByMail": { "type": "boolean" }, "inCopy": { "type": "boolean" } }, "required": [ "from", "to", "frequency", "interval", "finalizeInvoice", "sendByMail", "inCopy" ] }, "UpdateInvoiceGeneralInformationsDto": { "type": "object", "properties": { "headerNote": { "type": "string", "description": "Custom note to be displayed in the header of the billing", "example": "Thank you for your business!" }, "footerNote": { "type": "string", "description": "Custom note to be displayed in the footer of the billing", "example": "Please pay within 30 days." }, "generalTermsAndConditionsOfSale": { "type": "string", "description": "General terms and conditions of sale to be included in the billing", "example": "All goods remain our property until paid in full." }, "mentionMediator": { "type": "string", "description": "Mention mediateur to be included in the billing", "example": "Mention mediateur" }, "paymentMethods": { "description": "Array of accepted payment methods for the billing", "example": [ "transfer", "direct_debit" ], "type": "array", "items": { "type": "string" } }, "otherPaymentMethod": { "type": "string", "description": "Other payment method", "example": "Lydia" }, "vatMention": { "description": "Vat mention applicable for a billing", "example": "vat_not_applicable", "allOf": [ { "$ref": "#/components/schemas/VatMention" } ] }, "latePenalty": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BillingLatePenaltyDto" } ] }, "lumpSumCompensation": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BillingLumpSumCompensationDto" } ] }, "discountAdvancePayment": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/BillingDiscountAdvancePaymentDto" } ] }, "isOnlinePaymentActivated": { "type": "boolean", "description": "Indicates if online payment is activated for this invoice", "example": true }, "reminder": { "description": "Reminder settings for the invoice", "example": { "inCopy": true, "frequency": "on_due_date", "numberOfRemindersToSend": 3, "active": true, "recipients": [ "john.doe@example.com" ] }, "allOf": [ { "$ref": "#/components/schemas/BillingReminderDto" } ] } } }, "UpdateInvoicePaymentRequestDto": { "type": "object", "properties": { "paymentRequest": { "description": "The payment request for the invoice", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/PaymentRequestPayloadDto" } ] } }, "required": [ "paymentRequest" ] }, "UpdateInvoiceTimelineDto": { "type": "object", "properties": { "emittedAt": { "type": "number", "description": "The timestamp when the invoice was emitted", "example": 1617187200 }, "paymentDelay": { "description": "The payment delay for the invoice", "example": "thirty_days", "allOf": [ { "$ref": "#/components/schemas/PaymentDelay" } ] }, "customDueDate": { "type": "number", "description": "Custom due date for the invoice when payment delay is OTHER", "example": 1619865600 }, "deliveryDate": { "type": "number", "description": "The timestamp for delivery date", "example": 1617187200, "nullable": true } }, "required": [ "emittedAt", "paymentDelay" ] }, "UpdateLineDto": { "type": "object", "properties": { "generatedId": { "type": "string", "example": "123e4567-e89b-12d3-a456-426614174000", "description": "Warning: Client-side generated line id. This field will be deprecated and will be removed in the future." }, "productId": { "type": "string", "example": "123e4567-e89b-12d3-a456-426614174000", "description": "Unique identifier of the product, if applicable" }, "unitPrice": { "type": "number", "example": 1500, "description": "Price per unit in cents (e.g., 1500 for 15.00 euros)" }, "quantity": { "type": "number", "example": 2, "description": "Quantity of the product or service" }, "quantityUnit": { "example": "unit", "description": "Unit of measurement for the quantity (e.g., UNIT, HOUR, KILOGRAM)", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/ProductUnit" } ] }, "designation": { "type": "string", "example": "Premium Widget", "description": "Name or short description of the product or service" }, "reference": { "type": "string", "example": "WID-123", "description": "Product reference or SKU, if applicable" }, "description": { "type": "string", "example": "High-quality widget with advanced features", "description": "Detailed description of the product or service" }, "type": { "example": "sale_of_goods", "description": "Type of the product or service (e.g., SALE_OF_GOODS, SERVICE)", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/ProductType" } ] }, "vatCode": { "example": "FR_2000", "description": "VAT code applicable to the product or service", "allOf": [ { "$ref": "#/components/schemas/VatCode" } ] }, "personalServiceActivity": { "example": "BRICOLAGE", "description": "Personal service activity only available for products compatible with the tax credit", "allOf": [ { "$ref": "#/components/schemas/PersonalServiceActivity" } ] }, "discount": { "description": "Optional discount to be applied to the billing line", "allOf": [ { "$ref": "#/components/schemas/DiscountDto" } ] }, "isDeliveryOfGoods": { "type": "boolean", "description": "Mark a product line as delivery of goods to display it on document" }, "isTaxIncluded": { "type": "boolean", "description": "Indicates whether the unit price includes tax (TTC) or excludes tax (HT)", "default": false } }, "required": [ "unitPrice", "quantity", "quantityUnit", "designation", "type", "vatCode" ] }, "UpdateOpportunityDto": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the opportunity", "example": "Updated Project Lead" }, "description": { "type": "string", "description": "The description of the opportunity (null to remove)", "example": "Updated description" }, "dueDate": { "type": "string", "description": "The due date as ISO date string YYYY-MM-DD (null to remove)", "example": "2025-11-26" }, "amount": { "type": "number", "description": "The amount in cents", "example": 150000 }, "customerId": { "type": "string", "description": "The legacy customer ID", "example": "507f1f77bcf86cd799439011" }, "categoryId": { "type": "string", "description": "The category ID", "example": "123e4567-e89b-12d3-a456-426614174000" }, "afterRank": { "type": "string", "description": "The rank to insert after", "example": "0|hzzzzz:" } } }, "UpdateOrganizationContactDto": { "type": "object", "properties": { "firstname": { "type": "string" }, "lastname": { "type": "string" }, "phone": { "type": "string" }, "jobTitle": { "type": "string" }, "emails": { "type": "array", "items": { "type": "string" } }, "notes": { "type": "string" }, "defaultContact": { "type": "boolean" } }, "required": [ "firstname", "lastname" ] }, "UpdateOrganizationDto": { "type": "object", "properties": { "name": { "type": "string" }, "commercialName": { "type": "string" }, "emails": { "type": "array", "items": { "type": "string" } }, "siret": { "type": "string" }, "vatNumber": { "type": "string" }, "billingAddress": { "$ref": "#/components/schemas/ClientAddressDto" }, "deliveryAddress": { "$ref": "#/components/schemas/ClientAddressDto" }, "bankInformations": { "$ref": "#/components/schemas/BankInformationsDto" }, "notes": { "type": "string" }, "preferences": { "$ref": "#/components/schemas/ClientPreferencesDto" } }, "required": [ "name" ] }, "UpdateTitleDto": { "type": "object", "properties": { "title": { "type": "string", "description": "The title of the document", "example": "Invoice 1", "nullable": true } }, "required": [ "title" ] }, "UserDto": { "type": "object", "properties": { "id": { "type": "string", "description": "Identifiant unique de l'utilisateur", "example": "123e4567-e89b-12d3-a456-426614174000" }, "email": { "type": "string", "description": "Adresse email de l'utilisateur", "example": "user@example.com" }, "firstname": { "type": "string", "description": "Prénom de l'utilisateur", "example": "Jean" }, "lastname": { "type": "string", "description": "Nom de l'utilisateur", "example": "Dupont" }, "fullname": { "type": "string", "description": "Nom complet de l'utilisateur", "example": "Jean Dupont" }, "firebaseToken": { "type": "string", "description": "Token Firebase de l'utilisateur", "example": "firebase_token_example" }, "address": { "type": "string", "description": "Adresse de l'utilisateur", "example": "456 avenue des Utilisateurs", "nullable": true } }, "required": [ "id", "email", "firstname", "lastname", "fullname", "firebaseToken" ] }, "VatCode": { "type": "string", "enum": [ "FR_210", "FR_550", "FR_850", "FR_1000", "FR_2000", "FR_00HT", "FR_00UE", "FR_0HUE" ] }, "VatDetailDto": { "type": "object", "properties": { "vatCode": { "example": "FR_2000", "allOf": [ { "$ref": "#/components/schemas/VatCode" } ] }, "amount": { "type": "number", "example": 200 }, "vatRate": { "type": "number", "example": 20 } }, "required": [ "vatCode", "amount", "vatRate" ] }, "VatMention": { "type": "string", "enum": [ "not_subject", "second_hand_good", "art_object", "collection_antique", "travel_agency", "vat_not_applicable", "vat_not_applicable_2", "vat_exemption", "vat_exemption_eu_sale", "vat_exemption_eu_service", "vat_construction", "vat_psychologist", "vat_psychologist_2", "vat_reverse_charge", "vat_reverse_charge_2", "vat_reverse_charge_3", "vat_reverse_charge_4", "vat_reduced_rate", "vat_reduced_rate_2", "vat_article_261c_cgi", "vat_exemption_294_cgi" ] } } }, "security": [ { "ApiKeyAuth": [] } ] }