openapi: 3.0.3 info: title: 'DoliPDF API Documentation' description: '' version: 1.0.0 servers: - url: 'https://pdf.cap-rel.fr' tags: - name: Endpoints description: '' - name: 'Login/Logout management' description: "\nAPIs for managing auth process" - name: 'Ouverture de compte' description: "\nOpen an account from a client module, without copying a key.\n\nThe module sends what it knows of the company and gets back the address of\nthe order page, already filled in, with a secret it keeps. The person\norders and pays on that page; meanwhile the module asks, with its secret,\nhow the order stands, and receives the API key the moment it is paid.\n\nNothing is written to the central billing instance here: a robot calling\nthis in a loop leaves local rows that expire, and the order itself is\nplaced by a person, on the page, behind the same guards as the web." paths: /api/v1/softwareInfos: get: summary: 'Display a listing of the resource.' operationId: displayAListingOfTheResource description: '' parameters: [] responses: 503: description: '' content: text/plain: schema: type: string example: "\n\n \n \n \n\n Service indisponible\n\n \n \n \n\n \n\n \n \n \n
\n
\n
\n
\n 503
\n\n
\n Mise à jour en cours, merci de réessayer plus tard
\n
\n
\n
\n \n\n" tags: - Endpoints security: [] post: summary: 'Store a newly created resource in storage.' operationId: storeANewlyCreatedResourceInStorage description: '' parameters: [] responses: { } tags: - Endpoints security: [] '/api/v1/softwareInfos/{id}': get: summary: 'Display the specified resource.' operationId: displayTheSpecifiedResource description: '' parameters: [] responses: 503: description: '' content: text/plain: schema: type: string example: "\n\n \n \n \n\n Service indisponible\n\n \n \n \n\n \n\n \n \n \n
\n
\n
\n
\n 503
\n\n
\n Mise à jour en cours, merci de réessayer plus tard
\n
\n
\n
\n \n\n" tags: - Endpoints security: [] put: summary: 'Update the specified resource in storage.' operationId: updateTheSpecifiedResourceInStorage description: '' parameters: [] responses: { } tags: - Endpoints security: [] delete: summary: 'Remove the specified resource from storage.' operationId: removeTheSpecifiedResourceFromStorage description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the softwareInfo.' example: consequatur required: true schema: type: string /api/v1/pdf: post: summary: 'Convert the uploaded ODT document and answer the PDF, base64 encoded.' operationId: convertTheUploadedODTDocumentAndAnswerThePDFBase64Encoded description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/softwareInfos: get: summary: 'Display a listing of the resource.' operationId: displayAListingOfTheResource description: '' parameters: [] responses: 503: description: '' content: text/plain: schema: type: string example: "\n\n \n \n \n\n Service indisponible\n\n \n \n \n\n \n\n \n \n \n
\n
\n
\n
\n 503
\n\n
\n Mise à jour en cours, merci de réessayer plus tard
\n
\n
\n
\n \n\n" tags: - Endpoints security: [] post: summary: 'Store a newly created resource in storage.' operationId: storeANewlyCreatedResourceInStorage description: '' parameters: [] responses: { } tags: - Endpoints security: [] '/api/softwareInfos/{id}': get: summary: 'Display the specified resource.' operationId: displayTheSpecifiedResource description: '' parameters: [] responses: 503: description: '' content: text/plain: schema: type: string example: "\n\n \n \n \n\n Service indisponible\n\n \n \n \n\n \n\n \n \n \n
\n
\n
\n
\n 503
\n\n
\n Mise à jour en cours, merci de réessayer plus tard
\n
\n
\n
\n \n\n" tags: - Endpoints security: [] put: summary: 'Update the specified resource in storage.' operationId: updateTheSpecifiedResourceInStorage description: '' parameters: [] responses: { } tags: - Endpoints security: [] delete: summary: 'Remove the specified resource from storage.' operationId: removeTheSpecifiedResourceFromStorage description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the softwareInfo.' example: consequatur required: true schema: type: string /api/pdf: post: summary: 'Convert the uploaded ODT document and answer the PDF, base64 encoded.' operationId: convertTheUploadedODTDocumentAndAnswerThePDFBase64Encoded description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/v1/ping: post: summary: 'Check if the server is ready and my token is good' operationId: checkIfTheServerIsReadyAndMyTokenIsGood description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "scenario=\"Operation successful\n{\n \"profile\": {\n \"id\": 3,\n \"firstname\": \"john\",\n \"name\": \"doe\",\n \"email\": \"john.doe@utptosign.ext\",\n \"email_verified_at\": null,\n \"language_code_id\": null,\n \"mobile\": \"+33698744401\",\n \"created_at\": \"2022-06-15T05:47:36.000000Z\",\n \"updated_at\": \"2022-06-15T21:23:24.000000Z\",\n \"deleted_at\": null\n },\n \"message\": \"server is ready\",\n \"status\": 1,\n \"access\": {\n \"state\": \"active\",\n \"remaining\": 482,\n \"order_url\": null\n }\n}\n\nThe \"access\" block tells whether the next conversion would be served,\nwithout serving one: state is active, offered, no_subscription or\nquota_exceeded; remaining is null when the plan is not metered;\norder_url is set whenever ordering is the way out." 401: description: 'Missing, unknown or malformed key' content: text/plain: schema: type: string example: Unauthenticated 403: description: 'Locked account' content: application/json: schema: type: object example: message: 'Account locked ! reason' properties: message: type: string example: 'Account locked ! reason' tags: - 'Login/Logout management' security: [] /api/v1/profile: post: summary: 'Get user profile' operationId: getUserProfile description: '' parameters: [] responses: { } tags: - 'Login/Logout management' security: [] /api/ping: post: summary: 'Check if the server is ready and my token is good' operationId: checkIfTheServerIsReadyAndMyTokenIsGood description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "scenario=\"Operation successful\n{\n \"profile\": {\n \"id\": 3,\n \"firstname\": \"john\",\n \"name\": \"doe\",\n \"email\": \"john.doe@utptosign.ext\",\n \"email_verified_at\": null,\n \"language_code_id\": null,\n \"mobile\": \"+33698744401\",\n \"created_at\": \"2022-06-15T05:47:36.000000Z\",\n \"updated_at\": \"2022-06-15T21:23:24.000000Z\",\n \"deleted_at\": null\n },\n \"message\": \"server is ready\",\n \"status\": 1,\n \"access\": {\n \"state\": \"active\",\n \"remaining\": 482,\n \"order_url\": null\n }\n}\n\nThe \"access\" block tells whether the next conversion would be served,\nwithout serving one: state is active, offered, no_subscription or\nquota_exceeded; remaining is null when the plan is not metered;\norder_url is set whenever ordering is the way out." 401: description: 'Missing, unknown or malformed key' content: text/plain: schema: type: string example: Unauthenticated 403: description: 'Locked account' content: application/json: schema: type: object example: message: 'Account locked ! reason' properties: message: type: string example: 'Account locked ! reason' tags: - 'Login/Logout management' security: [] /api/profile: post: summary: 'Get user profile' operationId: getUserProfile description: '' parameters: [] responses: { } tags: - 'Login/Logout management' security: [] /api/v1/checkout: post: summary: 'Prepare an order.' operationId: prepareAnOrder description: "Every field is optional: they only fill in the order page, where the\nperson completes and corrects them. A value that does not fit its\nfield is left out rather than refused, so a Dolibarr with an\nincomplete company card still gets a link." parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: id: 9d3c... order_url: 'https://service.example/commande/9d3c...?expires=...&signature=...' claim_secret: s3cr3t... expires_at: '2026-10-14T12:00:00+00:00' properties: id: type: string example: 9d3c... order_url: type: string example: 'https://service.example/commande/9d3c...?expires=...&signature=...' claim_secret: type: string example: s3cr3t... expires_at: type: string example: '2026-10-14T12:00:00+00:00' tags: - 'Ouverture de compte' requestBody: required: false content: application/json: schema: type: object properties: plan: type: string description: 'The plan code to preselect.' example: '250' email: type: string description: 'The email of the company.' example: compta@example.com name: type: string description: 'The company name.' example: 'Example SARL' country: type: string description: 'Two-letter ISO country code.' example: FR siren: type: string description: 'French SIREN, 9 digits.' example: '732829320' address: type: string description: 'Street address.' example: '1 rue de la Paix' zip: type: string description: 'Postal code.' example: '75002' town: type: string description: Town. example: Paris security: [] '/api/v1/checkout/{checkout}': get: summary: 'Where a prepared order stands.' operationId: whereAPreparedOrderStands description: "Send the secret received on creation in the X-Checkout-Secret header.\nThe API key is in the answer once, the first time the order is seen\npaid: store it then. An order placed for an address that already had\nan account carries no key, that account keeps its own.\n\nAdd verify=1 when the person says he has paid: the central billing\ninstance is then asked directly, at most every 30 seconds." parameters: - in: query name: verify description: 'Ask the billing instance now.' example: 1 required: false schema: type: integer description: 'Ask the billing instance now.' example: 1 responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: status: awaiting_order order_url: 'https://service.example/commande/...' properties: status: type: string example: awaiting_order order_url: type: string example: 'https://service.example/commande/...' - description: '' type: object example: status: awaiting_payment order_url: 'https://service.example/commande/...' properties: status: type: string example: awaiting_payment order_url: type: string example: 'https://service.example/commande/...' - description: '' type: object example: status: paid api_key: 12|abcdef... existing_account: false properties: status: type: string example: paid api_key: type: string example: 12|abcdef... existing_account: type: boolean example: false 404: description: '' content: application/json: schema: type: object example: message: 'Unknown checkout.' properties: message: type: string example: 'Unknown checkout.' 410: description: '' content: application/json: schema: type: object example: status: expired properties: status: type: string example: expired tags: - 'Ouverture de compte' security: [] parameters: - in: path name: checkout description: 'The id received on creation.' example: consequatur required: true schema: type: string /api/checkout: post: summary: 'Prepare an order.' operationId: prepareAnOrder description: "Every field is optional: they only fill in the order page, where the\nperson completes and corrects them. A value that does not fit its\nfield is left out rather than refused, so a Dolibarr with an\nincomplete company card still gets a link." parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: id: 9d3c... order_url: 'https://service.example/commande/9d3c...?expires=...&signature=...' claim_secret: s3cr3t... expires_at: '2026-10-14T12:00:00+00:00' properties: id: type: string example: 9d3c... order_url: type: string example: 'https://service.example/commande/9d3c...?expires=...&signature=...' claim_secret: type: string example: s3cr3t... expires_at: type: string example: '2026-10-14T12:00:00+00:00' tags: - 'Ouverture de compte' requestBody: required: false content: application/json: schema: type: object properties: plan: type: string description: 'The plan code to preselect.' example: '250' email: type: string description: 'The email of the company.' example: compta@example.com name: type: string description: 'The company name.' example: 'Example SARL' country: type: string description: 'Two-letter ISO country code.' example: FR siren: type: string description: 'French SIREN, 9 digits.' example: '732829320' address: type: string description: 'Street address.' example: '1 rue de la Paix' zip: type: string description: 'Postal code.' example: '75002' town: type: string description: Town. example: Paris security: [] '/api/checkout/{checkout}': get: summary: 'Where a prepared order stands.' operationId: whereAPreparedOrderStands description: "Send the secret received on creation in the X-Checkout-Secret header.\nThe API key is in the answer once, the first time the order is seen\npaid: store it then. An order placed for an address that already had\nan account carries no key, that account keeps its own.\n\nAdd verify=1 when the person says he has paid: the central billing\ninstance is then asked directly, at most every 30 seconds." parameters: - in: query name: verify description: 'Ask the billing instance now.' example: 1 required: false schema: type: integer description: 'Ask the billing instance now.' example: 1 responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: status: awaiting_order order_url: 'https://service.example/commande/...' properties: status: type: string example: awaiting_order order_url: type: string example: 'https://service.example/commande/...' - description: '' type: object example: status: awaiting_payment order_url: 'https://service.example/commande/...' properties: status: type: string example: awaiting_payment order_url: type: string example: 'https://service.example/commande/...' - description: '' type: object example: status: paid api_key: 12|abcdef... existing_account: false properties: status: type: string example: paid api_key: type: string example: 12|abcdef... existing_account: type: boolean example: false 404: description: '' content: application/json: schema: type: object example: message: 'Unknown checkout.' properties: message: type: string example: 'Unknown checkout.' 410: description: '' content: application/json: schema: type: object example: status: expired properties: status: type: string example: expired tags: - 'Ouverture de compte' security: [] parameters: - in: path name: checkout description: 'The id received on creation.' example: consequatur required: true schema: type: string