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: []