openapi: 3.0.3 info: title: 'API documentation for uptosign' description: 'That is API documentation for uptosign webservice' version: 1.0.0 servers: - url: 'https://dev.uptosign.com' paths: /api/documents: post: summary: 'Start a new full document signing process for a PDF file and one or more peoples with one or more sign on x page(s)' description: "That is a json request with all informations : file (pdf, with content base64 encoded),\nuser1 informations, email is key, then (firstname, lastname, mobile phone with international prefix like '+336' for example, and sign posx and sign posy on document and page)\nuser2 informations, email is key, then (firstname, lastname, mobile phone with international prefix like '+336' for example, and sign posx and sign posy on document and page)\n\nBe carefull an enhancement of that process will permit to insert same user sign on multiple pages (look at \"array\" keys)\n.../..." parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_AUTH_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: 'Operation successful' content: application/json: schema: type: object example: id: 5847dd3c-ba58-4e6f-8fac-329ffb521667 action: sign message: null errors: null status: 0 properties: id: type: string example: 5847dd3c-ba58-4e6f-8fac-329ffb521667 action: type: string example: sign message: type: string example: null errors: type: string example: null status: type: integer example: 0 tags: - 'Documents management' requestBody: required: true content: application/json: schema: type: object properties: pdf: type: object description: 'The file to sign (must be a PDF non locked file) + informations (see after for more details).' example: [] properties: alerts: type: string description: 'option email address of people to alert in case of trouble' example: aliquid infos: type: string description: 'option email address of peoples to inform when process is done' example: saepe title: type: string description: 'option title of your sign project (used into mail invitations for example)' example: dolore content: type: string description: 'The content of the file encoded in base64.' example: 'base64_encode(file_get_contents("contract.pdf"))' filename: type: string description: 'The file name (example contract-with-john.pdf).' example: "contract.pdf\n\nSTAMP: please choose one of the three solution below\n\nSINGLE STAMP on a SINGLE PAGE:" posx: type: integer description: 'The uptosign stamp position on document (x, value=5000 for autoposition)' example: 10 posy: type: integer description: 'The uptosign stamp position on document (y, value=5000 for autoposition)' example: 13 signonpage: type: integer description: 'page number where we have to put stamp (1 = first page, -1 = last page, -2 = one page before the last one, 5000 for autoposition)' example: 20 stampnumber: type: integer description: "uptosign stamp to use (only one is possible)\n\nOR MULTIPOSITION STAMP:" example: 10 autoposition: type: boolean description: 'uptosign stamp automatic position on keyword position if autoposition = 1 (please put UPTOSIGN_STAMP_HERE string on your PDF)' example: false stampArray: type: array description: "as json encoded data x=>integer position x,y=>integer position y,p=>integer page,s=>integer stamp style number (1)\n\nexample:\n pdf.stampArray = ['x'=>120,'y'=>75,'p'=>1,'s'=>1]['x'=>100,'y'=>50,'p'=>2,'s'=>1]['x'=>20,'y'=>75,'p'=>5,'s'=>1];\n\nMORE CONFIGURATION:" example: - quae items: type: string conf: type: object description: '' example: endRedirect: reiciendis properties: endRedirect: type: string description: 'option https uri of end of process page (landing page)' example: reiciendis hideMailAndPhone: type: boolean description: 'option (1/0) to enable pseudo-hideMailAndPhone mode (mask mail & phone number on signed document & keep proof file for LTS)' example: true moreOptions: type: string description: 'option more options to become' example: voluptas hook: type: object description: '' example: uri: quidem properties: uri: type: string description: 'option https uri of webhook POST for tracking events about that process' example: quidem key: type: string description: "option hook secure key\n\nFROM: (you) ... uptosign user who initiate the sign process please choose one of the three solutions below" example: beatae from: type: object description: 'option The first sign people details' example: [] properties: email: type: string description: 'The user''s email address.' example: john@cap-rel.fr mobile: type: string description: 'The user''s mobile phone to send sms secret number (format +33601020304). Example +33601020304' example: ut firstname: type: string description: 'The user''s firstname.' example: John lastname: type: string description: 'The user''s lastname.' example: "Doe\n\n\nFROM SINGLE USER:" signPosX: type: integer description: 'The user''s sign position on document (x, value=5000 for autoposition)' example: 16 signPosY: type: integer description: 'The user''s sign position on document (y, value=5000 for autoposition)' example: 2 signPage: type: required description: "The user's sign page on document (5000 for autoposition))\n\nOR FROM AUTOPOSITION (MAGIC WORDS)" example: consequuntur autoposition: type: boolean description: "uptosign stamp automatic position on keyword position if autoposition = 1 (please put UPTOSIGN_SIGN_FROM_HERE string on your PDF)\n\nOR FROM multiple positions, multiple pages" example: true signArray: type: array description: "as json encoded data x=>integer position x,y=>integer position y,p=>integer page\n\nexample:\n from.signArray = ['x'=>120,'y'=>75,'p'=>1]['x'=>100,'y'=>50,'p'=>2]['x'=>20,'y'=>75,'p'=>5];\n\nTO: other peoples who come to sign document please choose one solution :\n\nSOLUTION ONE sign on one page" example: - voluptatem items: type: string to: type: object description: 'Array with list of others people requested to sign document (for the moment only one)' example: [] properties: email: type: string description: 'The user''s email address' example: jane@customer.fr mobile: type: string description: 'The user''s mobile phone to send sms secret number (format +33601020304). Example +33605060708' example: eaque firstname: type: string description: 'The user''s firstname.' example: Jane lastname: type: string description: 'The user''s lastname.' example: One signPosX: type: integer description: 'The user''s sign position on document (x, value=5000 for autoposition)' example: 11 signPosY: type: integer description: 'The user''s sign position on document (y, value=5000 for autoposition)' example: 14 signPage: type: integer description: "The user's sign page on document (5000 for autoposition))\n\n\nSOLUTION MAGIC WORDS" example: 15 autoposition: type: boolean description: "uptosign stamp automatic position on keyword position if autoposition = 1 (please put UPTOSIGN_SIGN_TO_HERE string on your PDF)\n\nMULTI SIGN PEOPLE ON DIFFERENT PAGES" example: true multiSign: type: object description: 'Array with list of others people requested to sign document' example: [] properties: [] 'multiSign[email]': type: string description: 'The user''s email address' example: jane@customer.fr 'multiSign[email': type: object description: '' example: mobile: pariatur properties: [] required: - pdf - conf - hook - to '/api/documents/{uuid}/download': get: summary: 'Download signed document' description: '' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_AUTH_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string 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, veuillez revenir plus tard...
\n
\n
\n
\n \n\n" tags: - 'Documents management' parameters: - in: path name: uuid description: 'uuid of document to download' example: nam required: true schema: type: string '/api/documents/{uuid}/downloadProof': get: summary: 'Download proof of a signed document only if not in hideMailAndPhone mode' description: '' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_AUTH_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string 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, veuillez revenir plus tard...
\n
\n
\n
\n \n\n" tags: - 'Documents management' parameters: - in: path name: uuid description: 'uuid of document to download' example: et required: true schema: type: string '/api/documents/{uuid}/history': get: summary: 'get details about document process' description: '' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_AUTH_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string 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, veuillez revenir plus tard...
\n
\n
\n
\n \n\n" tags: - 'Documents management' parameters: - in: path name: uuid description: '' example: 76496b5d-36d7-47d5-bc05-70d612db3ec1 required: true schema: type: string /api/people: get: summary: 'Display a listing of the resource.' description: '' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_AUTH_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string 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, veuillez revenir plus tard...
\n
\n
\n
\n \n\n" tags: - Endpoints post: summary: 'Store a newly created resource in storage.' description: '' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_AUTH_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: { } tags: - Endpoints '/api/people/{id}': get: summary: 'Display the specified resource.' description: '' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_AUTH_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string 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, veuillez revenir plus tard...
\n
\n
\n
\n \n\n" tags: - Endpoints put: summary: 'Update the specified resource in storage.' description: '' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_AUTH_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: { } tags: - Endpoints delete: summary: 'Remove the specified resource from storage.' description: '' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_AUTH_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: { } tags: - Endpoints parameters: - in: path name: id description: 'The ID of the person.' example: 1 required: true schema: type: integer '/api/softwareInfos/{softwareInfo}': get: summary: '' description: '' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_AUTH_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string 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, veuillez revenir plus tard...
\n
\n
\n
\n \n\n" tags: - Endpoints parameters: - in: path name: softwareInfo description: 'The softwareInfo.' example: id required: true schema: type: string /api/profile: post: summary: 'Get user profile' description: '' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_AUTH_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: { } tags: - 'Login/Logout management' /api/ping: post: summary: 'Check if the server is ready and my token is good' description: '' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_AUTH_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string 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}" tags: - 'Login/Logout management' /api/seals: post: summary: 'Start a new seal process for a PDF file and just seal it' description: 'That is a json request :' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_AUTH_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: 'Operation successful' content: application/json: schema: type: object example: id: 7eb45023-5b80-415e-a26b-3981852e2a43 action: seal message: null errors: null status: 0 properties: id: type: string example: 7eb45023-5b80-415e-a26b-3981852e2a43 action: type: string example: seal message: type: string example: null errors: type: string example: null status: type: integer example: 0 tags: - 'Seal management' requestBody: required: true content: application/json: schema: type: object properties: pdf: type: object description: 'The file in PDF format details' example: [] properties: content: type: string description: 'The content of the file encoded in base64.' example: 'base64_encode(file_get_contents("contract.pdf"))' filename: type: string description: 'The file name (example contract-with-john.pdf).' example: contract.pdf posx: type: integer description: 'The uptosign stamp position on document (x)' example: 4 posy: type: integer description: 'The uptosign stamp position on document (y)' example: 1 signonpage: type: integer description: 'page number where we have to put stamp (1 = first page, -1 = last page, -2 = one page before the last one)' example: 14 stampnumber: type: integer description: 'uptosign stamp to use' example: 12 alerts: type: string description: 'option email address of people to alert in case of trouble' example: rerum hook: type: object description: '' example: uri: sed properties: uri: type: string description: 'option https uri of webhook POST for tracking events about that process' example: sed key: type: string description: 'option hook secure key' example: distinctio required: - pdf - hook tags: - name: 'Documents management' description: "\nAPIs for managing documents with human signing process (user 1 mail -> handsign -> double check\nwith sms verify code then user 2 mail -> handsign -> double check with sms verify then document is done)." - name: Endpoints description: '' - name: 'Login/Logout management' description: "\nAPIs for managing auth process" - name: 'Seal management' description: "\nAPIs for managing documents with only seal (certify)" components: securitySchemes: default: type: http scheme: bearer description: '' security: - default: []