diff --git a/en/open_api.json b/en/open_api.json
index f08d2d8..5d0e7da 100644
--- a/en/open_api.json
+++ b/en/open_api.json
@@ -3,7 +3,7 @@
"info": {
"title": "Agendrix API",
"description": "\nThis page contains a detailed description of Agendrix's public API. Below, you will find a Get Started section resuming the main steps leading you to your first API call, as well as an OAuth 2.0 section, describing the authentication process necessary in order to retrieve a mandatory access token. You can also access information about the API headers, responses and errors. Each endpoint is then described, grouped by their database model. Authorizations, parameters, responses, everything you need is there. Enjoy!\n\n# Getting Started\nThis guide describes how to make your first call to Agendrix's Public API.\n\n## Create an Application\nCreating an application will generate your development keys, for a sandbox environment where you can do any test you want, and a production environment. You can use the application for yourself or your clients.\n - From the [Applications](./applications) section, click on the New Application button, and choose a name for your new application.\n - You have now been redirected to your app general information. You can add a description, an icon and edit your application name as well. You can also see the approval status of your application. Your application needs to be approved before it can be used in production.\n - You can retrieve your development and production credentials in their respective sections. You can regenerate your secrets, manage your redirect URIs and your scopes.\n\nYour Client ID and Client Secret are mandatory in order to retrieve your OAuth 2.0 tokens. Redirect URIs are as well - at least one.\n\n## Sandbox\nThe sandbox environment is used for testing. Your application does not require to be approved to use this environment. When using the sandbox, do not forget to change your calls accordingly - sandbox.agendrix.net/oauth instead of app.agendrix.com/oauth and api.sandbox.agendrix.net instead of api.agendrix.com.\n\nTo sign in to the sandbox environment, follow these steps:\n - From the [Applications](./applications) section, click on your application.\n - Go to the Sandbox tab.\n - Click the Sign in to the sandbox link.\n\n## Retrieve an OAuth 2.0 access token\nYou need an access token to access Agendrix API. The simpler way to do so is through the OAuth 2.0 [Playground](./playground). There is also a detailed explanation of the process in the OAuth 2.0 section below.\n\n## Make an API call\nNow that you have an access token, you can use this token to make any call you like by adding the Authorization header to the request, as long as your credentials include the required scopes for a specific endpoint.\n\n# Resources\nThis section regroups the different downloadable Agendrix's API resources.\n\n## OAS 3\nAn Open API Specification document is a detailed, precise description of an API, from its security schemes to its endpoints. It has a lot of uses - our own [document](https://github.com/agendrix/openapi/blob/main/en/open_api.yml) generates a large part of this documentation, as well as the Postman collection. The Open API ecosystem is rich and mature and is used widely by the community. For more on OAS, click here.\n\n## Examples\nWe also implemented basic examples of integration with our API in javascript and ruby.\nThose examples include the complete OAuth flow as well as tokens handling and of course, making requests to the API.\n\n# OAuth 2.0\nAgendrix uses OAuth 2.0 protocol for authorization. Once you create an application, it can be used to request access and refresh tokens. The access token is\nvalid for a period of 2 hours and needs to be refreshed afterward using the refresh token. The access token can then be used to make API calls. For an interactive\ndemonstration of the process, use the OAuth 2.0 Playground.\n\n## Prepare the Authorization Request\nThe first step is to prepare the authorization request using the Client ID and one of the redirect URIs defined for the application - or the client. Scopes default to read when not specified.\n```\nhttps://app.agendrix.com/oauth/authorize?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&response_type=code&scope=read+write\n```\n\n## Redirect the User\nOnce the user is redirected to the authorization request, he needs to gives his approval sharing his data with the application, and choose the organization for which he wants to do so. The authorization request is then processed by the OAuth 2.0 server.\n\n## Handle the OAuth 2.0 Server Response\nIf the authorization request is valid, the OAuth 2.0 server sends an authorization code to the redirect URI specified in the authorization request. This code can be used to prepare the request to retrieve the access and refresh tokens.\n\n## Exchange the Authorization Code for Tokens\nThe final step is simply to exchange the authorization code received against the tokens. The Client ID, the Client Secret, the redirect URI and the grant type - which is always *authorization_code* - need to be included in the request. The OAuth 2.0 server then sends the access and refresh token to the redirect URI defined.\n```\ncurl --request POST 'https://app.agendrix.com/oauth/token' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"client_id\": \"{CLIENT_ID}\",\n \"client_secret\": \"{CLIENT_SECRET}\",\n \"redirect_uri\": \"{REDIRECT_URI}\",\n \"grant_type\": \"authorization_code\",\n \"code\": \"{AUTORIZATION_CODE}\"\n}'\n```\n\n## Exchange the Refresh Token for new tokens\nThe retrieved access token will eventually expire - it has a TTL of 2 hours. Instead of going through all the authorizing process again, the refresh token can be used to request new access and refresh tokens. The grant type becomes *refresh_token* and the refresh token must be included in the request, along with the Client ID, Client Secret and redirect URI. A subset of the original access token scopes can also be included in the request.\n```\ncurl --request POST 'https://app.agendrix.com/oauth/token' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"client_id\": \"{CLIENT_ID}\",\n \"client_secret\": \"{CLIENT_SECRET}\",\n \"redirect_uri\": \"{REDIRECT_URI}\",\n \"grant_type\": \"refresh_token\",\n \"refresh_token\": \"{REFRESH_TOKEN}\",\n}'\n```\n\nThe refresh tokens become invalid once used, but do not expire. You can repeat the refresh process as long as you need to.\n\n# Token's Owner Role\nThe data returned by the API will be scoped to the token's owner role. This means that if an access token was generated using an access grant of a manager, the data returned by the API will be scoped to the positions and sites managed by the user. Actions will also be limited by the owner's role. If you wish to retrieve all data related to an organization, the token used must be generated by an administrator of the organization.\n\n# Headers\nSpecific headers must be set in order to interact with the API. Some headers in the API's response also contain relevant information.\n\n## Requests\nAll requests made to the Agendrix's Public API must have two specific headers set. The first one is the Content-Type header. It must always be set to *application/json*, since it is the supported format by the API. The second one is the Authorization header, in which you must add your access token as *Bearer*. You can see an example of a classic curl request in the [Make an API Call](./documentation#section/Make-an-API-Call) section.\n\n## Responses\nAll responses from the API are in JSON; therefore, they all have the Content-Type header set to *application/json*. In the specific case the number of requests to the API is over the rate [limit](./documentation#section/Rate-Limiting), the headers RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset are added to the response headers. They respectively represent the rate limit of requests allowed, the remaining number of requests allowed - which is always 0 in that case - and the amount of seconds before the rate limit resets.\n\n# Rate Limiting\nThe API's rate limiting is currently set to 360 requests per minute. As long as the rate limiting is respected and the request is valid as well as its access token, it is processed by API.\n\n# Bulk Actions\n## Bulk size limit\nThe bulk size limit is currently set to a 1000 per request. Just as the rate limiting, as long as the size limit is respected, and the request and its access token are valid, it is processed by the API.\n\n# Make an API Call\nOnce you have the access token, making a call to Agendrix's Public API is rather straightforward. It is a classic HTTP request. All you have to do is add the required headers as well as the body or the query params - depending on the type of request -, as you can see in the example below.\n```\ncurl --request POST 'https://api.agendrix.com/v1/positions' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer {ACCESS_TOKEN}' \\\n--data-raw '{\n \"name\": \"A position name\"\n}'\n```\n\n# Responses\nAll responses are in JSON. Responses structure vary slightly depending on the context.\n\n## Paginated Responses\nPaginated responses always contain the data and pagination fields. The data field represents the requested data returned by the API - for paginated responses, it is an array of objects. The pagination field represents the response pagination metadata. The pagination field contains the sort value, the search values, the page size, the limit on the page size, the current, next, previous, last, first and total pages, the total count of records and finally if the requested page is out of range.\n\n## Other Responses\nAll other responses always contain the data and errors fields. The data field represents once again the data returned by the API - but directly as an object this time - and will be null if there are errors. The errors field is an array of objects describing the error with a source, short message and/or long message fields. The errors field is null if the request is processed without errors.\n\n# Errors\n## Unauthorized Error - Code 401\nDifferent kind of unauthorized errors can happen while using the API:\n- Invalid token\n- Expired token\n- Revoked token\n- Unknown token\n- Unapproved application\n- Unauthorized operation (Your Agendrix user does not have the rights to perform the action)\n\n## Forbidden Error - Code 403\nWhen the token does not possess the required scope to perform the action.\n\n## Rate Limiting Error - Code 429\nWhen the rate limit of 180 requests per minute is not respected, a rate limit error is returned. The *RateLimit-Reset* header specifies how much time is left before another request can be made.\n\n## Internal Server Error - Code 500\nWhen an unexpected error occurs on the server, the API will return an internal server error.\n\n## Not Found Error - Code 404\nIt can happen for every endpoint that needs to retrieve an existing record - GET and PUT requests -, except for a bulk update.\n\n## Query Param Error - Code 400\nDifferent kind of query param errors can be triggered by the API:\n- If a required param is missing\n- If a param has the wrong format (i.e. dates)\n- If a param has the wrong value (i.e. sort or search values)\n\nIt can happen only for paginated endpoints - GET requests.\n\n## Input Params Error - Code 400\nIf a payload does not respect the schema specified in the documentation, the API will return an input params error. It can only occur for POST and PUT requests.\n\n## Path Param Error - Code 400\nIt can only happen for endpoints that require uncommon parameters in their path - i.e. the availability list of a member shown by date: `/members/{id}/availability_lists/{date}`.\n\n# Help\n## Contact us\nIf you cannot find the information you are looking for in this guide, you can contact us at the following email address: api@agendrix.com.",
- "version": "1.3.0"
+ "version": "1.4.0"
},
"servers": [
{
@@ -39,6 +39,14 @@
"name": "Comments",
"description": "Comments operations"
},
+ {
+ "name": "DriveSignatureRequests",
+ "description": "Drive signature requests operations"
+ },
+ {
+ "name": "DriveSignatures",
+ "description": "Drive signatures operations"
+ },
{
"name": "LeaveRequests",
"description": "Leave requests operations"
@@ -1841,7 +1849,7 @@
{
"name": "search[status]",
"in": "query",
- "description": "The open shift requests status. Valid values are approved, canceled, expired and pending.",
+ "description": "The open shift request's status. Valid values are approved, canceled, expired, and pending.",
"schema": {
"type": "string"
}
@@ -4183,6 +4191,208 @@
}
}
},
+ "/drive/signature_requests": {
+ "get": {
+ "summary": "Get paginated signature requests.",
+ "description": "Get paginated signature requests.",
+ "tags": [
+ "DriveSignatureRequests"
+ ],
+ "operationId": "index_drive_signature_request",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/QueryPage"
+ },
+ {
+ "$ref": "#/components/parameters/QueryLimit"
+ },
+ {
+ "$ref": "#/components/parameters/QueryPageSize"
+ },
+ {
+ "name": "search[with_deleted]",
+ "in": "query",
+ "description": "Includes canceled signature requests in the paginated result.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "search[only_deleted]",
+ "in": "query",
+ "description": "Excludes active signature requests from the paginated result.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "search[creator_id]",
+ "in": "query",
+ "description": "Filter by id of the creator of the signature request.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "search[state]",
+ "in": "query",
+ "description": "Filter by state of the request. Options are: 'pending', 'completed' or 'canceled'.",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/components/responses/DriveSignatureRequestSuccessMany"
+ },
+ "400": {
+ "$ref": "#/components/responses/QueryParamFailure"
+ }
+ }
+ },
+ "post": {
+ "summary": "Create a signature request.",
+ "description": "Create a signature request with parameters.",
+ "tags": [
+ "DriveSignatureRequests"
+ ],
+ "operationId": "create_drive_signature_request",
+ "requestBody": {
+ "$ref": "#/components/requestBodies/DriveSignatureRequestCreate"
+ },
+ "responses": {
+ "200": {
+ "$ref": "#/components/responses/DriveSignatureRequestSuccessOne"
+ },
+ "400": {
+ "$ref": "#/components/responses/InputParamsFailure"
+ }
+ }
+ }
+ },
+ "/drive/signature_requests/{id}": {
+ "get": {
+ "summary": "Get a signature request.",
+ "description": "Return the signature request's id holder.",
+ "tags": [
+ "DriveSignatureRequests"
+ ],
+ "operationId": "show_drive_signature_request",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/PathId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/components/responses/DriveSignatureRequestSuccessOne"
+ },
+ "404": {
+ "$ref": "#/components/responses/NotFoundFailure"
+ }
+ }
+ }
+ },
+ "/drive/signature_requests/{id}/cancel": {
+ "put": {
+ "summary": "Cancel a signature request.",
+ "description": "Cancel the signature request's id holder.",
+ "tags": [
+ "DriveSignatureRequests"
+ ],
+ "operationId": "cancel_drive_signature_request",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/PathId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/components/responses/DriveSignatureRequestSuccessOne"
+ },
+ "404": {
+ "$ref": "#/components/responses/NotFoundFailure"
+ }
+ }
+ }
+ },
+ "/drive/signatures/{id}": {
+ "get": {
+ "summary": "Get one signature.",
+ "description": "Return the signature's id holder.",
+ "tags": [
+ "DriveSignatures"
+ ],
+ "operationId": "show_drive_signature",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/PathId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/components/responses/DriveSignatureSuccessOne"
+ },
+ "404": {
+ "$ref": "#/components/responses/NotFoundFailure"
+ }
+ }
+ }
+ },
+ "/drive/signatures": {
+ "get": {
+ "summary": "Get paginated signatures.",
+ "description": "Return paginated signatures.",
+ "tags": [
+ "DriveSignatures"
+ ],
+ "operationId": "index_drive_signature",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/QueryPage"
+ },
+ {
+ "$ref": "#/components/parameters/QueryLimit"
+ },
+ {
+ "$ref": "#/components/parameters/QueryPageSize"
+ },
+ {
+ "name": "search[with_deleted]",
+ "in": "query",
+ "description": "Includes canceled signatures in the paginated result.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "search[only_deleted]",
+ "in": "query",
+ "description": "Excludes active signatures from the paginated result.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "search[state]",
+ "in": "query",
+ "description": "Filter by state of the signature. Options are: 'pending' or 'completed'.",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/components/responses/DriveSignatureSuccessMany"
+ },
+ "400": {
+ "$ref": "#/components/responses/QueryParamFailure"
+ }
+ }
+ }
+ },
"/hr/fields": {
"get": {
"summary": "Get paginated human resource fields.",
@@ -5720,7 +5930,7 @@
"properties": {
"member_id": {
"type": "string",
- "description": "The unique identifier for the employee who volunteered.",
+ "description": "The unique identifier of the employee who volunteered.",
"format": "uuid"
},
"shift_id": {
@@ -5730,17 +5940,17 @@
},
"approved_at": {
"type": "string",
- "description": "The time at which the employee's volunteering has been approved.",
+ "description": "The time at which the shift was assigned to the volunteer.",
"format": "date-time"
},
"declined_at": {
"type": "string",
- "description": "The time at which the employee's volunteering has been declined.",
+ "description": "The time at which the employee's offer to volunteer was declined.",
"format": "date-time"
},
"created_at": {
"type": "string",
- "description": "The time at which the employee volunteered.",
+ "description": "The time at which the employee offered to volunteer.",
"format": "date-time"
}
}
@@ -7355,6 +7565,11 @@
"description": "The number of comments on the file.",
"format": "int32"
},
+ "new_version_id": {
+ "type": "string",
+ "description": "The new version's id.",
+ "format": "uuid"
+ },
"document": {
"$ref": "#/components/schemas/Document"
},
@@ -7367,6 +7582,131 @@
}
}
},
+ "DriveSignature": {
+ "type": "object",
+ "description": "A detailed description of a signature.",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique identifier of the signature.",
+ "format": "uuid"
+ },
+ "signature_request_id": {
+ "type": "string",
+ "description": "The identifier of the signature request associated with the signature.",
+ "format": "uuid"
+ },
+ "member_id": {
+ "type": "string",
+ "description": "The identifier of the member associated with the signature.",
+ "format": "uuid"
+ },
+ "legal_name": {
+ "type": "string",
+ "description": "The legal name of the signing member."
+ },
+ "ip_address": {
+ "type": "string",
+ "description": "The IP address of the device used to sign the document."
+ },
+ "user_agent": {
+ "type": "string",
+ "description": "The browser information used to sign the document."
+ },
+ "pss_signature": {
+ "type": "string",
+ "description": "Represents a cryptographic signature generated using the Probabilistic Signature Scheme (PSS)."
+ },
+ "signed_at": {
+ "type": "string",
+ "description": "The date and time when the signature was applied.",
+ "format": "date-time"
+ },
+ "consent_given_at": {
+ "type": "string",
+ "description": "The date and time when consent to the signature was given.",
+ "format": "date-time"
+ },
+ "deleted_at": {
+ "type": "string",
+ "description": "Date and time of the signature cancellation.",
+ "format": "date-time"
+ },
+ "created_at": {
+ "type": "string",
+ "description": "Date and time of the signature creation.",
+ "format": "date-time"
+ },
+ "updated_at": {
+ "type": "string",
+ "description": "Date and time of the signature's last modification.",
+ "format": "date-time"
+ }
+ }
+ },
+ "DriveSignatureRequest": {
+ "type": "object",
+ "description": "A detailed description of a signature request.",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique identifier of the signature request.",
+ "format": "uuid"
+ },
+ "creator_id": {
+ "type": "string",
+ "description": "The identifier of the signature request's creator.",
+ "format": "uuid"
+ },
+ "drive_file_id": {
+ "type": "string",
+ "description": "The identifier of the file being signed.",
+ "format": "uuid"
+ },
+ "original_file_id": {
+ "type": "string",
+ "description": "The identifier of the file used to create the request.",
+ "format": "uuid"
+ },
+ "original_document_hash": {
+ "type": "string",
+ "description": "Hash of the original document."
+ },
+ "completed_at": {
+ "type": "string",
+ "description": "Date and time of the signature request's completion.",
+ "format": "date-time"
+ },
+ "deleted_at": {
+ "type": "string",
+ "description": "Date and time of the signature request's cancellation.",
+ "format": "date-time"
+ },
+ "created_at": {
+ "type": "string",
+ "description": "Date and time of the signature request's creation.",
+ "format": "date-time"
+ },
+ "updated_at": {
+ "type": "string",
+ "description": "Date and time of the signature request's last modification.",
+ "format": "date-time"
+ },
+ "drive_file": {
+ "$ref": "#/components/schemas/DriveItem"
+ },
+ "completion_certificate": {
+ "$ref": "#/components/schemas/Document"
+ },
+ "signatures": {
+ "type": "array",
+ "description": "The signatures associated with the signature request.",
+ "items": {
+ "$ref": "#/components/schemas/DriveSignature"
+ }
+ }
+ }
+ },
"HRField": {
"type": "object",
"description": "A detailed description of a human resource field.",
@@ -9782,6 +10122,29 @@
}
}
},
+ "DriveSignatureRequestCreate": {
+ "required": [
+ "drive_file_id",
+ "member_ids"
+ ],
+ "type": "object",
+ "description": "A detailed description of the input parameters for creating a signature request.",
+ "properties": {
+ "drive_file_id": {
+ "type": "string",
+ "description": "The identifier of the file to use.",
+ "format": "uuid"
+ },
+ "member_ids": {
+ "type": "array",
+ "description": "The identifiers of the members who will need to sign. Between one and four members allowed.",
+ "items": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ }
+ },
"ResourceBulkCreate": {
"required": [
"resources"
@@ -10930,6 +11293,78 @@
}
}
},
+ "DriveSignatureRequestSuccessMany": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/DriveSignatureRequest"
+ }
+ },
+ "pagination": {
+ "$ref": "#/components/schemas/CommonPagination"
+ }
+ }
+ }
+ }
+ }
+ },
+ "DriveSignatureRequestSuccessOne": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "$ref": "#/components/schemas/DriveSignatureRequest"
+ }
+ }
+ }
+ }
+ }
+ },
+ "DriveSignatureSuccessOne": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "$ref": "#/components/schemas/DriveSignature"
+ }
+ }
+ }
+ }
+ }
+ },
+ "DriveSignatureSuccessMany": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/DriveSignature"
+ }
+ },
+ "pagination": {
+ "$ref": "#/components/schemas/CommonPagination"
+ }
+ }
+ }
+ }
+ }
+ },
"HRFieldSuccessMany": {
"description": "Success",
"content": {
@@ -11393,6 +11828,15 @@
}
}
}
+ },
+ "DriveSignatureRequestCreate": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/DriveSignatureRequestCreate"
+ }
+ }
+ }
}
},
"securitySchemes": {
diff --git a/en/open_api.yml b/en/open_api.yml
index b4380ce..ddef461 100644
--- a/en/open_api.yml
+++ b/en/open_api.yml
@@ -166,7 +166,7 @@ info:
# Help
## Contact us
If you cannot find the information you are looking for in this guide, you can contact us at the following email address: api@agendrix.com.
- version: 1.3.0
+ version: 1.4.0
servers:
- url: https://api.agendrix.com/v1
security:
@@ -184,6 +184,10 @@ tags:
description: Clock logs operations
- name: Comments
description: Comments operations
+- name: DriveSignatureRequests
+ description: Drive signature requests operations
+- name: DriveSignatures
+ description: Drive signatures operations
- name: LeaveRequests
description: Leave requests operations
- name: HRFields
@@ -1285,8 +1289,8 @@ paths:
type: string
- name: search[status]
in: query
- description: The open shift requests status. Valid values are approved, canceled,
- expired and pending.
+ description: The open shift request's status. Valid values are approved, canceled,
+ expired, and pending.
schema:
type: string
responses:
@@ -2742,6 +2746,130 @@ paths:
"$ref": "#/components/responses/DriveItemSuccessOne"
404:
"$ref": "#/components/responses/NotFoundFailure"
+ "/drive/signature_requests":
+ get:
+ summary: Get paginated signature requests.
+ description: Get paginated signature requests.
+ tags:
+ - DriveSignatureRequests
+ operationId: index_drive_signature_request
+ parameters:
+ - "$ref": "#/components/parameters/QueryPage"
+ - "$ref": "#/components/parameters/QueryLimit"
+ - "$ref": "#/components/parameters/QueryPageSize"
+ - name: search[with_deleted]
+ in: query
+ description: Includes canceled signature requests in the paginated result.
+ schema:
+ type: string
+ - name: search[only_deleted]
+ in: query
+ description: Excludes active signature requests from the paginated result.
+ schema:
+ type: string
+ - name: search[creator_id]
+ in: query
+ description: Filter by id of the creator of the signature request.
+ schema:
+ type: string
+ - name: search[state]
+ in: query
+ description: 'Filter by state of the request. Options are: ''pending'', ''completed''
+ or ''canceled''.'
+ schema:
+ type: string
+ responses:
+ 200:
+ "$ref": "#/components/responses/DriveSignatureRequestSuccessMany"
+ 400:
+ "$ref": "#/components/responses/QueryParamFailure"
+ post:
+ summary: Create a signature request.
+ description: Create a signature request with parameters.
+ tags:
+ - DriveSignatureRequests
+ operationId: create_drive_signature_request
+ requestBody:
+ "$ref": "#/components/requestBodies/DriveSignatureRequestCreate"
+ responses:
+ 200:
+ "$ref": "#/components/responses/DriveSignatureRequestSuccessOne"
+ 400:
+ "$ref": "#/components/responses/InputParamsFailure"
+ "/drive/signature_requests/{id}":
+ get:
+ summary: Get a signature request.
+ description: Return the signature request's id holder.
+ tags:
+ - DriveSignatureRequests
+ operationId: show_drive_signature_request
+ parameters:
+ - "$ref": "#/components/parameters/PathId"
+ responses:
+ 200:
+ "$ref": "#/components/responses/DriveSignatureRequestSuccessOne"
+ 404:
+ "$ref": "#/components/responses/NotFoundFailure"
+ "/drive/signature_requests/{id}/cancel":
+ put:
+ summary: Cancel a signature request.
+ description: Cancel the signature request's id holder.
+ tags:
+ - DriveSignatureRequests
+ operationId: cancel_drive_signature_request
+ parameters:
+ - "$ref": "#/components/parameters/PathId"
+ responses:
+ 200:
+ "$ref": "#/components/responses/DriveSignatureRequestSuccessOne"
+ 404:
+ "$ref": "#/components/responses/NotFoundFailure"
+ "/drive/signatures/{id}":
+ get:
+ summary: Get one signature.
+ description: Return the signature's id holder.
+ tags:
+ - DriveSignatures
+ operationId: show_drive_signature
+ parameters:
+ - "$ref": "#/components/parameters/PathId"
+ responses:
+ 200:
+ "$ref": "#/components/responses/DriveSignatureSuccessOne"
+ 404:
+ "$ref": "#/components/responses/NotFoundFailure"
+ "/drive/signatures":
+ get:
+ summary: Get paginated signatures.
+ description: Return paginated signatures.
+ tags:
+ - DriveSignatures
+ operationId: index_drive_signature
+ parameters:
+ - "$ref": "#/components/parameters/QueryPage"
+ - "$ref": "#/components/parameters/QueryLimit"
+ - "$ref": "#/components/parameters/QueryPageSize"
+ - name: search[with_deleted]
+ in: query
+ description: Includes canceled signatures in the paginated result.
+ schema:
+ type: string
+ - name: search[only_deleted]
+ in: query
+ description: Excludes active signatures from the paginated result.
+ schema:
+ type: string
+ - name: search[state]
+ in: query
+ description: 'Filter by state of the signature. Options are: ''pending'' or
+ ''completed''.'
+ schema:
+ type: string
+ responses:
+ 200:
+ "$ref": "#/components/responses/DriveSignatureSuccessMany"
+ 400:
+ "$ref": "#/components/responses/QueryParamFailure"
"/hr/fields":
get:
summary: Get paginated human resource fields.
@@ -3943,7 +4071,7 @@ components:
properties:
member_id:
type: string
- description: The unique identifier for the employee who volunteered.
+ description: The unique identifier of the employee who volunteered.
format: uuid
shift_id:
type: string
@@ -3951,15 +4079,15 @@ components:
format: uuid
approved_at:
type: string
- description: The time at which the employee's volunteering has been approved.
+ description: The time at which the shift was assigned to the volunteer.
format: date-time
declined_at:
type: string
- description: The time at which the employee's volunteering has been declined.
+ description: The time at which the employee's offer to volunteer was declined.
format: date-time
created_at:
type: string
- description: The time at which the employee volunteered.
+ description: The time at which the employee offered to volunteer.
format: date-time
OpenShiftRequest:
type: object
@@ -5207,6 +5335,10 @@ components:
type: integer
description: The number of comments on the file.
format: int32
+ new_version_id:
+ type: string
+ description: The new version's id.
+ format: uuid
document:
"$ref": "#/components/schemas/Document"
body_documents:
@@ -5214,6 +5346,104 @@ components:
description: The embedded documents in the text file.
items:
"$ref": "#/components/schemas/Document"
+ DriveSignature:
+ type: object
+ description: A detailed description of a signature.
+ properties:
+ id:
+ type: string
+ description: Unique identifier of the signature.
+ format: uuid
+ signature_request_id:
+ type: string
+ description: The identifier of the signature request associated with the
+ signature.
+ format: uuid
+ member_id:
+ type: string
+ description: The identifier of the member associated with the signature.
+ format: uuid
+ legal_name:
+ type: string
+ description: The legal name of the signing member.
+ ip_address:
+ type: string
+ description: The IP address of the device used to sign the document.
+ user_agent:
+ type: string
+ description: The browser information used to sign the document.
+ pss_signature:
+ type: string
+ description: Represents a cryptographic signature generated using the Probabilistic
+ Signature Scheme (PSS).
+ signed_at:
+ type: string
+ description: The date and time when the signature was applied.
+ format: date-time
+ consent_given_at:
+ type: string
+ description: The date and time when consent to the signature was given.
+ format: date-time
+ deleted_at:
+ type: string
+ description: Date and time of the signature cancellation.
+ format: date-time
+ created_at:
+ type: string
+ description: Date and time of the signature creation.
+ format: date-time
+ updated_at:
+ type: string
+ description: Date and time of the signature's last modification.
+ format: date-time
+ DriveSignatureRequest:
+ type: object
+ description: A detailed description of a signature request.
+ properties:
+ id:
+ type: string
+ description: Unique identifier of the signature request.
+ format: uuid
+ creator_id:
+ type: string
+ description: The identifier of the signature request's creator.
+ format: uuid
+ drive_file_id:
+ type: string
+ description: The identifier of the file being signed.
+ format: uuid
+ original_file_id:
+ type: string
+ description: The identifier of the file used to create the request.
+ format: uuid
+ original_document_hash:
+ type: string
+ description: Hash of the original document.
+ completed_at:
+ type: string
+ description: Date and time of the signature request's completion.
+ format: date-time
+ deleted_at:
+ type: string
+ description: Date and time of the signature request's cancellation.
+ format: date-time
+ created_at:
+ type: string
+ description: Date and time of the signature request's creation.
+ format: date-time
+ updated_at:
+ type: string
+ description: Date and time of the signature request's last modification.
+ format: date-time
+ drive_file:
+ "$ref": "#/components/schemas/DriveItem"
+ completion_certificate:
+ "$ref": "#/components/schemas/Document"
+ signatures:
+ type: array
+ description: The signatures associated with the signature request.
+ items:
+ "$ref": "#/components/schemas/DriveSignature"
HRField:
type: object
description: A detailed description of a human resource field.
@@ -7086,6 +7316,25 @@ components:
type: string
description: The role required to see the folder and all of its contents.
Can either be member, supervisor, manager, or admin.
+ DriveSignatureRequestCreate:
+ required:
+ - drive_file_id
+ - member_ids
+ type: object
+ description: A detailed description of the input parameters for creating a signature
+ request.
+ properties:
+ drive_file_id:
+ type: string
+ description: The identifier of the file to use.
+ format: uuid
+ member_ids:
+ type: array
+ description: The identifiers of the members who will need to sign. Between
+ one and four members allowed.
+ items:
+ type: string
+ format: uuid
ResourceBulkCreate:
required:
- resources
@@ -7792,6 +8041,50 @@ components:
properties:
data:
"$ref": "#/components/schemas/DriveItem"
+ DriveSignatureRequestSuccessMany:
+ description: Success
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ data:
+ type: array
+ items:
+ "$ref": "#/components/schemas/DriveSignatureRequest"
+ pagination:
+ "$ref": "#/components/schemas/CommonPagination"
+ DriveSignatureRequestSuccessOne:
+ description: Success
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ data:
+ "$ref": "#/components/schemas/DriveSignatureRequest"
+ DriveSignatureSuccessOne:
+ description: Success
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ data:
+ "$ref": "#/components/schemas/DriveSignature"
+ DriveSignatureSuccessMany:
+ description: Success
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ data:
+ type: array
+ items:
+ "$ref": "#/components/schemas/DriveSignature"
+ pagination:
+ "$ref": "#/components/schemas/CommonPagination"
HRFieldSuccessMany:
description: Success
content:
@@ -8066,6 +8359,11 @@ components:
application/json:
schema:
"$ref": "#/components/schemas/DriveFolderUpdate"
+ DriveSignatureRequestCreate:
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/DriveSignatureRequestCreate"
securitySchemes:
oauth:
type: oauth2
diff --git a/fr/open_api.json b/fr/open_api.json
index 8392021..c9b7595 100644
--- a/fr/open_api.json
+++ b/fr/open_api.json
@@ -3,7 +3,7 @@
"info": {
"title": "Agendrix API",
"description": "\nCette page contient une description détaillée de l'API publique d'Agendrix. Ci-dessous, vous trouverez une section « Pour commencer » résumant les principales étapes pour effectuer votre premier appel à l'API, ainsi qu'une section OAUth 2.0 décrivant le processus d'authentification nécessaire afin de récupérer un jeton d'accès obligatoire. Vous pouvez également accéder à l'information concernant les en-têtes, les réponses et les erreurs de l'API. Chaque point de terminaison est ensuite décrit, regroupé par leur modèle de base de données. Autorisations, paramètres, réponses, tout ce dont vous avez besoin est là. Profitez-en!\n\n# Pour commencer\nCe guide décrit comment effectuer votre premier appel à l'API publique d'Agendrix.\n\n## Créer une application\nCréer une application générera vos clés de développement pour un environnement de test où vous pouvez effectuer tous les tests que vous souhaitez, ainsi qu'un environnement de production. Il est possible d'utiliser l'application pour vous-même ou pour vos clients.\n - Depuis la section [Applications](./applications), cliquez sur le bouton « Nouvelle application » et choisissez un nom pour votre nouvelle application.\n - Vous avez maintenant été redirigé vers les informations générales de votre application. Vous pouvez y ajouter une description, une icône et modifier le nom de votre application. Vous pouvez également voir l'état d'approbation de votre application. Celle-ci doit être approuvée avant de pouvoir être utilisée en production.\n - Vous pouvez récupérer vos identifiants de développement et de production dans leurs sections respectives. Vous pouvez régénérer vos secrets, gérer vos adresses URIs de redirection et vos portées.\n\nVotre Client ID et votre Client Secret sont obligatoires afin de récupérer vos jetons OAuth 2.0. Les adresses URIs de redirection le sont également - au moins un.\n\n## Développement\nL'environnement de test est utilisé pour effectuer des essais. Votre application n'a pas besoin d'être approuvée pour utiliser cet environnement. Lorsque vous utilisez la sandbox, n'oubliez pas de changer vos appels en conséquence - sandbox.agendrix.net/oauth au lieu de app.agendrix.com/oauth et api.sandbox.agendrix.net au lieu de api.agendrix.com.\n\nPour vous connecter à l'environnement de test, suivez ces étapes:\n - Depuis la section [Applications](./applications), cliquez sur votre application;\n - Accédez à l'onglet « Développement »;\n - Cliquez sur le lien « Se connecter à l'environnement de test ».\n\n## Obtenir un jeton d'accès OAuth 2.0\nVous avez besoin d'un jeton d'accès pour accéder à l'API Agendrix. Le moyen le plus simple de le faire est via [l'aire de jeux](./playground) OAuth 2.0. Il y a également une explication détaillée du processus dans la section OAuth 2.0 ci-dessous.\n\n## Faire un appel à l'API\nMaintenant que vous avez un jeton d'accès, vous pouvez l'utiliser pour faire toute sorte d'appels en ajoutant l'en-tête « Autorisation à la requête », à condition que vos identifiants incluent les portées requises pour un point de terminaison précis.\n\n# Ressources\nCette section regroupe les différentes ressources téléchargeables de l'API d'Agendrix.\n\n## OAS 3\nUn document Open API Specification est une description détaillée et précise d'une API, depuis ses schémas de sécurité jusqu'à ses points de terminaison. Il a de nombreuses utilisations - notre propre [document](https://github.com/agendrix/openapi/blob/main/fr/open_api.yml) génère une grande partie de cette documentation, ainsi que la collection Postman. L'écosystème Open API est riche, mature et est largement utilisé par la communauté. Pour en savoir plus sur l'OAS, cliquez ici.\n\n## Exemples\nNous avons également mis en place des exemples d'intégration de base avec notre API en Javascript et Ruby.\nCes exemples comprennent le processus complet OAuth ainsi que la gestion des jetons et bien sûr, la réalisation des requêtes à l'API.\n\n# OAuth 2.0\nAgendrix utilise le protocole OAuth 2.0 pour l'autorisation. Dès qu'une application est créée, elle peut être utilisée pour demander des jetons d'accès et de rafraîchissement. Le jeton d'accès est valide pour une période de 2 heures et doit être rafraîchi par la suite avec le jeton de rafraîchissement. Le jeton d'accès peut ensuite être utilisé pour effectuer des appels à l'API. Pour une démonstration intéractive du processus, veuillez utiliser l'aire de jeux OAuth 2.0.\n\n## Préparer la requête d'autorisation\nLa première étape consiste à préparer la requête d'autorisation en utilisant le Client ID et l'un des URIs de redirection définis pour l'application - ou le client. Les portées sont « read » par défaut lorsqu'elles ne sont pas spécifiées.\n```\nhttps://app.agendrix.com/oauth/authorize?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&response_type=code&scope=read+write\n```\n\n## Rediriger l'utilisateur\nUne fois que l'utilisateur est redirigé à la requête d'autorisation, il doit donner son approbation pour partager ses données avec l'application et choisir l'organisation pour laquelle il souhaite le faire. La requête d'autorisation est ensuite traitée par le serveur OAuth 2.0.\n\n## Gérer la réponse du serveur OAuth 2.0\nSi la requête d'autorisation est valide, le serveur OAuth 2.0 envoie un code d'autorisation à l'URI de redirection spécifié dans la requête. Ce code peut être utilisé pour préparer la requête visant à récupérer les jetons d'accès et de rafraîchissement.\n\n## Échanger le code d'autorisation pour des jetons\nLa dernière étape consiste simplement à échanger le code d'autorisation reçu contre les jetons. Le Client ID, le Client Secret, l'URI de redirection et le type de contribution - qui est toujours *authorization_code* - doivent être inclus dans la requête. Le serveur OAuth 2.0 envoie ensuite le jeton d'accès et de rafraîchissement à l'URI de redirection défini.\n```\ncurl --request POST 'https://app.agendrix.com/oauth/token' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"client_id\": \"{CLIENT_ID}\",\n \"client_secret\": \"{CLIENT_SECRET}\",\n \"redirect_uri\": \"{REDIRECT_URI}\",\n \"grant_type\": \"authorization_code\",\n \"code\": \"{AUTORIZATION_CODE}\"\n}'\n```\n\n## Échanger le jeton de rafraîchissement pour de nouveaux jetons\nLe jeton d'accès récupéré expirera éventuellement - sa durée de vie est de 2 heures. Plutôt que de faire le processus d'autorisation à nouveau, le jeton de rafraîchissement peut être utilisé pour demander de nouveaux jetons d'accès et de rafraîchissement. Le type de contribution devient *refresh_token* et celui-ci doit être inclus dans la requête avec le Client ID, le Client Secret ainsi que l'URI de redirection. Un sous-ensemble de la portée du jeton d'accès d'origine peut également être inclus dans la requête.\n```\ncurl --request POST 'https://app.agendrix.com/oauth/token' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"client_id\": \"{CLIENT_ID}\",\n \"client_secret\": \"{CLIENT_SECRET}\",\n \"redirect_uri\": \"{REDIRECT_URI}\",\n \"grant_type\": \"refresh_token\",\n \"refresh_token\": \"{REFRESH_TOKEN}\",\n}'\n```\n\nLes jetons de rafraîchissement deviennent invalides une fois utilisés, mais n'expirent pas. Vous pouvez répéter le processus de rafraîchissement aussi longtemps que nécessaire.\n\n# Rôle du propriétaire du jeton\nLes données renvoyées par l'API seront limitées au rôle du propriétaire du jeton. Cela signifie que si un jeton d'accès a été généré à l'aide d'une autorisation d'accès d'un gestionnaire, les données renvoyées par l'API seront limitées aux positions et aux sites gérés par l'utilisateur. Les actions seront également limitées par le rôle du propriétaire. Si vous souhaitez récupérer toutes les données relatives à une organisation, le jeton utilisé doit être généré par un administrateur de l'organisation.\n\n# En-têtes\nDes en-têtes spécifiques doivent être définis pour interagir avec l'API. Certains en-têtes contiennent également des informations pertinentes.\n\n## Requêtes\nToutes requêtes effectuées vers l'API publique d'Agendrix requièrent deux en-têtes spécifiques. Le premier est l'en-tête Content-Type. Il doit toujours être réglé à *application/json*, car c'est le format pris en charge par l'API. Le deuxième est l'en-tête Authorization, dans lequel vous devez ajouter votre jeton d'accès en tant que *Bearer*. Vous pouvez voir un exemple de requête curl classique dans la section [Effectuer un appel API](./documentation#section/Effectuer-un-appel-API).\n\n## Responses\nToutes les réponses de l'API sont en JSON; alors, elles ont toutes l'en-tête Content-Type réglé sur *application/json*. Dans le cas spécifique où le nombre de requêtes à l'API dépasse le taux [limite](./documentation#section/Taux-limite), les en-têtes RateLimit-Limit, RateLimit-Remaining et RateLimit-Reset sont ajoutés aux en-têtes de la réponse. Ils représentent respectivement le taux limite de requêtes autorisées, le nombre restant de requêtes autorisées - qui est toujours égal à 0 dans ce cas - et le nombre de secondes avant la réinitialisation du taux limite.\n\n# Taux limite\nLe taux limite actuel de l'API est réglée à 360 requêtes par minute. Tant que cette limite est respectée et que la requête est valide ainsi que son jeton d'accès, elle est traitée par l'API.\n\n# Actions de masse\n## Limite du nombre d'éléments\nLe nombre d'éléments limite est actuellement 1000 par requête. Tout comme le taux limite, tant que le nombre d'éléments limite est respecté et que la requête ainsi que son jeton d'accès sont valides, elle est traitée par l'API.\n\n# Effectuer un appel API\nUne fois que vous avez le jeton d'accès, passer un appel à l'API publique d'Agendrix est plutôt simple. Il s'agit d'une requête HTTP classique. Tout ce que vous avez à faire est d'ajouter les en-têtes requis ainsi que les paramètres de corps et de requête - en fonction du type de requête -, comme vous pouvez le voir dans l'exemple ci-dessous.\n```\ncurl --request POST 'https://api.agendrix.com/v1/positions' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer {ACCESS_TOKEN}' \\\n--data-raw '{\n \"name\": \"A position name\"\n}'\n```\n\n# Réponses\nToutes les réponses sont en JSON. La structure des réponses varie légèrement en fonction du contexte.\n\n## Réponses paginées\nLes réponses paginées contiennent toujours les champs « données » et « pagination ». Le champ « données » représente les données requises renvoyées par l'API - pour les réponses paginées, il s'agit d'une liste d'objets. Le champ « pagination » représente les métadonnées de pagination de la réponse. Le champ « pagination » contient la valeur de tri, les valeurs de recherche, la taille de la page, la limite de taille de page, les pages actuelle, suivante, précédente, dernière, première et totale, le nombre total d'objets et finalement, si la page demandée est hors de portée.\n\n## Autres réponses\nToutes les autres réponses contiennent toujours les champs « données » et « erreurs ». Le champ « données » représente, encore une fois, les données renvoyées par l'API - mais directement en tant qu'objet cette fois-ci - et sera nul s'il contient des erreurs. Le champ « erreurs » est une liste d'objets décrivant l'erreur avec les champs source, message court et/ou message long. Le champ « erreurs » est nul si la requête est traitée sans erreurs.\n\n# Erreurs\n## Erreurs non autorisées - Code 401\nDifférents types d'erreurs non autorisées peuvent survenir lors de l'utilisation de l'API :\n - Jeton invalide\n - Jeton expiré\n - Jeton révoqué\n - Jeton inconnu\n - Application non approuvée\n - Opération non autorisée (Votre utilisateur Agendrix ne détient pas les droits pour effectuer l'action)\n\n## Erreur interdite - Code 403\nLorsque le jeton ne possède pas la portée requise pour effectuer l'action.\n\n## Erreur de taux limite - Code 429\nLorsque la limite de fréquence de 180 requêtes par minute n'est pas respectée, une erreur de limite de fréquence est retournée. L'en-tête *RateLimit-Reset* spécifie combien de temps il reste avant qu'une autre demande puisse être effectuée.\n\n## Erreur interne du serveur - Code 500\nWLorsqu'une erreur inattendue survient sur le serveur, l'API renvoie une erreur interne du serveur.\n\n## Erreur non trouvée - Code 404\nCela peut se produire pour chaque point de terminaison qui doit récupérer un enregistrement existant - requêtes GET et PUT -, à l'exception d'une mise à jour en masse\n\n## Erreur de paramètre de requête - Code 400\nDifférents types d'erreurs de paramètres de requête peuvent être déclenchés par l'API :\n - Si un paramètre requis est manquant\n - Si un paramètre a un format incorrect (i.e. dates)\n - Si un paramètre a une valeur incorrecte (i.e. trier ou rechercher des valeurs)\n\n Cela ne peut se produire que pour les points de terminaison paginés - requêtes GET.\n\n## Erreur de paramètres d'entrée - Code 400\nSi un *payload* ne respecte pas le schéma spécifié dans la documentation, l'API retournera une erreur de paramètres d'entrée. Cela ne peut se produire que pour des requêtes POST et PUT.\n\n## Erreur de paramètre de route - Code 400\nCeci peut uniquement se produire pour les points de terminaison qui nécessitent des paramètres inhabituels dans leur route - i.e. la liste de disponibilité d'un membre affichée par date : `/members/{id}/availability_lists/{date}`.\n\n# Aide\n## Nous contacter\nN'hésitez pas à nous contacter si vous ne trouvez pas les informations que vous cherchez dans ce guide : api@agendrix.com.",
- "version": "1.3.0"
+ "version": "1.4.0"
},
"servers": [
{
@@ -39,6 +39,14 @@
"name": "Comments",
"description": "Opérations sur les commentaires"
},
+ {
+ "name": "DriveSignatureRequests",
+ "description": "Opérations sur les demandes de signature"
+ },
+ {
+ "name": "DriveSignatures",
+ "description": "Opérations sur les signatures"
+ },
{
"name": "LeaveRequests",
"description": "Opérations sur les demandes de congés"
@@ -1761,7 +1769,7 @@
"/open_shift_requests/{id}/approve": {
"put": {
"summary": "Approuver une demande de quart à combler",
- "description": "Assigne le quart à combler à un ou plusieurs employés volontaires, selon la quantité disponible.",
+ "description": "Assigne le quart à combler à un ou plusieurs employés volontaires.",
"tags": [
"OpenShiftRequests"
],
@@ -1784,7 +1792,7 @@
"/open_shift_requests/{id}/cancel": {
"put": {
"summary": "Annuler une demande de quart à combler",
- "description": "Supprime le quart à combler et annule la demande.",
+ "description": "Annule une demande de quart à combler et supprime le quart correspondant.",
"tags": [
"OpenShiftRequests"
],
@@ -1833,7 +1841,7 @@
{
"name": "search[with_volunteers]",
"in": "query",
- "description": "Lorsque 'true' est envoyé, seules les demandes avec volontaires seront retournées.",
+ "description": "Lorsque 'true' est envoyé, seules les demandes avec des volontaires seront retournées.",
"schema": {
"type": "string"
}
@@ -1841,7 +1849,7 @@
{
"name": "search[status]",
"in": "query",
- "description": "Le statut de la requête. Les valeurs valides sont 'approved', 'canceled', 'expired' and 'pending'.",
+ "description": "Le statut de la requête. Les valeurs valides sont 'approved', 'canceled', 'expired' et 'pending'.",
"schema": {
"type": "string"
}
@@ -4183,6 +4191,208 @@
}
}
},
+ "/drive/signature_requests": {
+ "get": {
+ "summary": "Obtenir les demandes de signature paginées.",
+ "description": "Obtenir les demandes de signature paginées.",
+ "tags": [
+ "DriveSignatureRequests"
+ ],
+ "operationId": "index_drive_signature_request",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/QueryPage"
+ },
+ {
+ "$ref": "#/components/parameters/QueryLimit"
+ },
+ {
+ "$ref": "#/components/parameters/QueryPageSize"
+ },
+ {
+ "name": "search[with_deleted]",
+ "in": "query",
+ "description": "Inclure les demandes de signature annulées dans le résultat paginé.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "search[only_deleted]",
+ "in": "query",
+ "description": "Exclue les demandes de signature actives du résultat paginé.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "search[creator_id]",
+ "in": "query",
+ "description": "Filtrer par l'identifiant du créateur de la demande de signature.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "search[state]",
+ "in": "query",
+ "description": "Filtrer par l'état de la demande. Options : 'pending', 'completed' ou 'canceled'.",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/components/responses/DriveSignatureRequestSuccessMany"
+ },
+ "400": {
+ "$ref": "#/components/responses/QueryParamFailure"
+ }
+ }
+ },
+ "post": {
+ "summary": "Créer une demande de signature.",
+ "description": "Créer une demande de signature avec des paramètres.",
+ "tags": [
+ "DriveSignatureRequests"
+ ],
+ "operationId": "create_drive_signature_request",
+ "requestBody": {
+ "$ref": "#/components/requestBodies/DriveSignatureRequestCreate"
+ },
+ "responses": {
+ "200": {
+ "$ref": "#/components/responses/DriveSignatureRequestSuccessOne"
+ },
+ "400": {
+ "$ref": "#/components/responses/InputParamsFailure"
+ }
+ }
+ }
+ },
+ "/drive/signature_requests/{id}": {
+ "get": {
+ "summary": "Obtenir une demande de signature.",
+ "description": "Obtenir une demande de signature par son identifiant.",
+ "tags": [
+ "DriveSignatureRequests"
+ ],
+ "operationId": "show_drive_signature_request",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/PathId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/components/responses/DriveSignatureRequestSuccessOne"
+ },
+ "404": {
+ "$ref": "#/components/responses/NotFoundFailure"
+ }
+ }
+ }
+ },
+ "/drive/signature_requests/{id}/cancel": {
+ "put": {
+ "summary": "Annuler une demande de signature.",
+ "description": "Annuler une demande de signature avec son identifiant.",
+ "tags": [
+ "DriveSignatureRequests"
+ ],
+ "operationId": "cancel_drive_signature_request",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/PathId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/components/responses/DriveSignatureRequestSuccessOne"
+ },
+ "404": {
+ "$ref": "#/components/responses/NotFoundFailure"
+ }
+ }
+ }
+ },
+ "/drive/signatures/{id}": {
+ "get": {
+ "summary": "Obtenir une signature.",
+ "description": "Renvoie l'identifiant du titulaire de la signature.",
+ "tags": [
+ "DriveSignatures"
+ ],
+ "operationId": "show_drive_signature",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/PathId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/components/responses/DriveSignatureSuccessOne"
+ },
+ "404": {
+ "$ref": "#/components/responses/NotFoundFailure"
+ }
+ }
+ }
+ },
+ "/drive/signatures": {
+ "get": {
+ "summary": "Obtenir les signatures paginées.",
+ "description": "Renvoie les signatures paginées.",
+ "tags": [
+ "DriveSignatures"
+ ],
+ "operationId": "index_drive_signature",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/QueryPage"
+ },
+ {
+ "$ref": "#/components/parameters/QueryLimit"
+ },
+ {
+ "$ref": "#/components/parameters/QueryPageSize"
+ },
+ {
+ "name": "search[with_deleted]",
+ "in": "query",
+ "description": "Inclure les signatures annulées dans le résultat paginé.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "search[only_deleted]",
+ "in": "query",
+ "description": "Exclue les signatures actives du résultat paginé.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "search[state]",
+ "in": "query",
+ "description": "Filtrer par l'état de la signature. Options : 'pending' ou 'completed'.",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/components/responses/DriveSignatureSuccessMany"
+ },
+ "400": {
+ "$ref": "#/components/responses/QueryParamFailure"
+ }
+ }
+ }
+ },
"/hr/fields": {
"get": {
"summary": "Obtenir les champs de ressources humaines paginés.",
@@ -5716,7 +5926,7 @@
},
"OpenShiftRequestMember": {
"type": "object",
- "description": "Une description détaillée d'un volontaire sur un quart à combler.",
+ "description": "Une description détaillée d'un volontaire pour un quart à combler.",
"properties": {
"member_id": {
"type": "string",
@@ -5725,7 +5935,7 @@
},
"shift_id": {
"type": "string",
- "description": "L'identifiant du quart résultant d'une assignation.",
+ "description": "L'identifiant du quart assigné à l'employé.",
"format": "uuid"
},
"approved_at": {
@@ -5766,11 +5976,11 @@
},
"approved_by": {
"type": "string",
- "description": "L'identifiant de l'approbateur lié à la demande."
+ "description": "L'identifiant de la personne ayant approuvé la demande."
},
"canceled_by": {
"type": "string",
- "description": "L'identifiant de l'annulateur(e) lié à la demande."
+ "description": "L'identifiant de la personne ayant annulé la demande."
},
"approved_at": {
"type": "string",
@@ -5784,17 +5994,17 @@
},
"expired_at": {
"type": "string",
- "description": "Le moment auquel la demande a expirée.",
+ "description": "Le moment auquel la demande de quart à combler a expiré.",
"format": "date-time"
},
"created_at": {
"type": "string",
- "description": "La date et l'heure de création.",
+ "description": "La date et l'heure de création de la demande de quart à combler.",
"format": "date-time"
},
"updated_at": {
"type": "string",
- "description": "La date et l'heure de la dernière modification.",
+ "description": "La date et l'heure de dernière modification de la demande de quart à combler.",
"format": "date-time"
},
"open_shift_request_members": {
@@ -7355,6 +7565,11 @@
"description": "Le nombre de commentaires associés au fichier.",
"format": "int32"
},
+ "new_version_id": {
+ "type": "string",
+ "description": "L'identifiant de la nouvelle version.",
+ "format": "uuid"
+ },
"document": {
"$ref": "#/components/schemas/Document"
},
@@ -7367,6 +7582,131 @@
}
}
},
+ "DriveSignature": {
+ "type": "object",
+ "description": "Une description détaillée d'une signature.",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Identifiant unique de la signature.",
+ "format": "uuid"
+ },
+ "signature_request_id": {
+ "type": "string",
+ "description": "Identifiant de la demande de signature associée à la signature.",
+ "format": "uuid"
+ },
+ "member_id": {
+ "type": "string",
+ "description": "Identifiant du membre associé à la signature.",
+ "format": "uuid"
+ },
+ "legal_name": {
+ "type": "string",
+ "description": "Le nom légal du membre signataire."
+ },
+ "ip_address": {
+ "type": "string",
+ "description": "L'adresse IP de l'appareil utilisé pour signer le document."
+ },
+ "user_agent": {
+ "type": "string",
+ "description": "Les informations du navigateur utilisées pour signer le document."
+ },
+ "pss_signature": {
+ "type": "string",
+ "description": "Représente une signature cryptographique générée à l'aide du schéma de signature probabiliste (PSS)."
+ },
+ "signed_at": {
+ "type": "string",
+ "description": "La date et l'heure de l'application de la signature.",
+ "format": "date-time"
+ },
+ "consent_given_at": {
+ "type": "string",
+ "description": "La date et l'heure de consentement à la signature.",
+ "format": "date-time"
+ },
+ "deleted_at": {
+ "type": "string",
+ "description": "Date et heure de l'annulation de la signature.",
+ "format": "date-time"
+ },
+ "created_at": {
+ "type": "string",
+ "description": "Date et heure de création de la signature.",
+ "format": "date-time"
+ },
+ "updated_at": {
+ "type": "string",
+ "description": "Date et heure de dernière modification de la signature.",
+ "format": "date-time"
+ }
+ }
+ },
+ "DriveSignatureRequest": {
+ "type": "object",
+ "description": "Une description détaillée d'une demande de signature.",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Identifiant unique de la demande de signature.",
+ "format": "uuid"
+ },
+ "creator_id": {
+ "type": "string",
+ "description": "Iidentifiant du créateur de la demande de signature.",
+ "format": "uuid"
+ },
+ "drive_file_id": {
+ "type": "string",
+ "description": "Identifiant du fichier en cours de signature.",
+ "format": "uuid"
+ },
+ "original_file_id": {
+ "type": "string",
+ "description": "Identifiant du fichier utilisé pour créer la demande de signature.",
+ "format": "uuid"
+ },
+ "original_document_hash": {
+ "type": "string",
+ "description": "Hash du document original."
+ },
+ "completed_at": {
+ "type": "string",
+ "description": "Date et heure de la completion de la demande de signature.",
+ "format": "date-time"
+ },
+ "deleted_at": {
+ "type": "string",
+ "description": "Date et heure de l'annulation de la demande de signature.",
+ "format": "date-time"
+ },
+ "created_at": {
+ "type": "string",
+ "description": "Date et heure de création de la demande de signature.",
+ "format": "date-time"
+ },
+ "updated_at": {
+ "type": "string",
+ "description": "Date et heure de dernière modification de la demande de signature.",
+ "format": "date-time"
+ },
+ "drive_file": {
+ "$ref": "#/components/schemas/DriveItem"
+ },
+ "completion_certificate": {
+ "$ref": "#/components/schemas/Document"
+ },
+ "signatures": {
+ "type": "array",
+ "description": "Les signatures associées à la demande de signature.",
+ "items": {
+ "$ref": "#/components/schemas/DriveSignature"
+ }
+ }
+ }
+ },
"HRField": {
"type": "object",
"description": "Une description détaillée d'un champ de ressources humaines.",
@@ -9782,6 +10122,29 @@
}
}
},
+ "DriveSignatureRequestCreate": {
+ "required": [
+ "drive_file_id",
+ "member_ids"
+ ],
+ "type": "object",
+ "description": "Une description détaillée des paramètres d'entrée d'une création de demande de signature.",
+ "properties": {
+ "drive_file_id": {
+ "type": "string",
+ "description": "L'identifiant du fichier à utiliser.",
+ "format": "uuid"
+ },
+ "member_ids": {
+ "type": "array",
+ "description": "Les identifiants des membres qui devront signer. Entre un et quatre membre permis.",
+ "items": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ }
+ },
"ResourceBulkCreate": {
"required": [
"resources"
@@ -10930,6 +11293,78 @@
}
}
},
+ "DriveSignatureRequestSuccessMany": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/DriveSignatureRequest"
+ }
+ },
+ "pagination": {
+ "$ref": "#/components/schemas/CommonPagination"
+ }
+ }
+ }
+ }
+ }
+ },
+ "DriveSignatureRequestSuccessOne": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "$ref": "#/components/schemas/DriveSignatureRequest"
+ }
+ }
+ }
+ }
+ }
+ },
+ "DriveSignatureSuccessOne": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "$ref": "#/components/schemas/DriveSignature"
+ }
+ }
+ }
+ }
+ }
+ },
+ "DriveSignatureSuccessMany": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/DriveSignature"
+ }
+ },
+ "pagination": {
+ "$ref": "#/components/schemas/CommonPagination"
+ }
+ }
+ }
+ }
+ }
+ },
"HRFieldSuccessMany": {
"description": "Success",
"content": {
@@ -11393,6 +11828,15 @@
}
}
}
+ },
+ "DriveSignatureRequestCreate": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/DriveSignatureRequestCreate"
+ }
+ }
+ }
}
},
"securitySchemes": {
diff --git a/fr/open_api.yml b/fr/open_api.yml
index 262049d..f896f50 100644
--- a/fr/open_api.yml
+++ b/fr/open_api.yml
@@ -164,7 +164,7 @@ info:
# Aide
## Nous contacter
N'hésitez pas à nous contacter si vous ne trouvez pas les informations que vous cherchez dans ce guide : api@agendrix.com.
- version: 1.3.0
+ version: 1.4.0
servers:
- url: https://api.agendrix.com/v1
security:
@@ -182,6 +182,10 @@ tags:
description: Opérations sur les registres de pointage
- name: Comments
description: Opérations sur les commentaires
+- name: DriveSignatureRequests
+ description: Opérations sur les demandes de signature
+- name: DriveSignatures
+ description: Opérations sur les signatures
- name: LeaveRequests
description: Opérations sur les demandes de congés
- name: HRFields
@@ -1247,8 +1251,7 @@ paths:
"/open_shift_requests/{id}/approve":
put:
summary: Approuver une demande de quart à combler
- description: Assigne le quart à combler à un ou plusieurs employés volontaires,
- selon la quantité disponible.
+ description: Assigne le quart à combler à un ou plusieurs employés volontaires.
tags:
- OpenShiftRequests
operationId: approve_open_shift_request
@@ -1262,7 +1265,7 @@ paths:
"/open_shift_requests/{id}/cancel":
put:
summary: Annuler une demande de quart à combler
- description: Supprime le quart à combler et annule la demande.
+ description: Annule une demande de quart à combler et supprime le quart correspondant.
tags:
- OpenShiftRequests
operationId: cancel_open_shift_request
@@ -1292,14 +1295,14 @@ paths:
type: string
- name: search[with_volunteers]
in: query
- description: Lorsque 'true' est envoyé, seules les demandes avec volontaires
+ description: Lorsque 'true' est envoyé, seules les demandes avec des volontaires
seront retournées.
schema:
type: string
- name: search[status]
in: query
description: Le statut de la requête. Les valeurs valides sont 'approved',
- 'canceled', 'expired' and 'pending'.
+ 'canceled', 'expired' et 'pending'.
schema:
type: string
responses:
@@ -2763,6 +2766,130 @@ paths:
"$ref": "#/components/responses/DriveItemSuccessOne"
404:
"$ref": "#/components/responses/NotFoundFailure"
+ "/drive/signature_requests":
+ get:
+ summary: Obtenir les demandes de signature paginées.
+ description: Obtenir les demandes de signature paginées.
+ tags:
+ - DriveSignatureRequests
+ operationId: index_drive_signature_request
+ parameters:
+ - "$ref": "#/components/parameters/QueryPage"
+ - "$ref": "#/components/parameters/QueryLimit"
+ - "$ref": "#/components/parameters/QueryPageSize"
+ - name: search[with_deleted]
+ in: query
+ description: Inclure les demandes de signature annulées dans le résultat paginé.
+ schema:
+ type: string
+ - name: search[only_deleted]
+ in: query
+ description: Exclue les demandes de signature actives du résultat paginé.
+ schema:
+ type: string
+ - name: search[creator_id]
+ in: query
+ description: Filtrer par l'identifiant du créateur de la demande de signature.
+ schema:
+ type: string
+ - name: search[state]
+ in: query
+ description: 'Filtrer par l''état de la demande. Options : ''pending'', ''completed''
+ ou ''canceled''.'
+ schema:
+ type: string
+ responses:
+ 200:
+ "$ref": "#/components/responses/DriveSignatureRequestSuccessMany"
+ 400:
+ "$ref": "#/components/responses/QueryParamFailure"
+ post:
+ summary: Créer une demande de signature.
+ description: Créer une demande de signature avec des paramètres.
+ tags:
+ - DriveSignatureRequests
+ operationId: create_drive_signature_request
+ requestBody:
+ "$ref": "#/components/requestBodies/DriveSignatureRequestCreate"
+ responses:
+ 200:
+ "$ref": "#/components/responses/DriveSignatureRequestSuccessOne"
+ 400:
+ "$ref": "#/components/responses/InputParamsFailure"
+ "/drive/signature_requests/{id}":
+ get:
+ summary: Obtenir une demande de signature.
+ description: Obtenir une demande de signature par son identifiant.
+ tags:
+ - DriveSignatureRequests
+ operationId: show_drive_signature_request
+ parameters:
+ - "$ref": "#/components/parameters/PathId"
+ responses:
+ 200:
+ "$ref": "#/components/responses/DriveSignatureRequestSuccessOne"
+ 404:
+ "$ref": "#/components/responses/NotFoundFailure"
+ "/drive/signature_requests/{id}/cancel":
+ put:
+ summary: Annuler une demande de signature.
+ description: Annuler une demande de signature avec son identifiant.
+ tags:
+ - DriveSignatureRequests
+ operationId: cancel_drive_signature_request
+ parameters:
+ - "$ref": "#/components/parameters/PathId"
+ responses:
+ 200:
+ "$ref": "#/components/responses/DriveSignatureRequestSuccessOne"
+ 404:
+ "$ref": "#/components/responses/NotFoundFailure"
+ "/drive/signatures/{id}":
+ get:
+ summary: Obtenir une signature.
+ description: Renvoie l'identifiant du titulaire de la signature.
+ tags:
+ - DriveSignatures
+ operationId: show_drive_signature
+ parameters:
+ - "$ref": "#/components/parameters/PathId"
+ responses:
+ 200:
+ "$ref": "#/components/responses/DriveSignatureSuccessOne"
+ 404:
+ "$ref": "#/components/responses/NotFoundFailure"
+ "/drive/signatures":
+ get:
+ summary: Obtenir les signatures paginées.
+ description: Renvoie les signatures paginées.
+ tags:
+ - DriveSignatures
+ operationId: index_drive_signature
+ parameters:
+ - "$ref": "#/components/parameters/QueryPage"
+ - "$ref": "#/components/parameters/QueryLimit"
+ - "$ref": "#/components/parameters/QueryPageSize"
+ - name: search[with_deleted]
+ in: query
+ description: Inclure les signatures annulées dans le résultat paginé.
+ schema:
+ type: string
+ - name: search[only_deleted]
+ in: query
+ description: Exclue les signatures actives du résultat paginé.
+ schema:
+ type: string
+ - name: search[state]
+ in: query
+ description: 'Filtrer par l''état de la signature. Options : ''pending'' ou
+ ''completed''.'
+ schema:
+ type: string
+ responses:
+ 200:
+ "$ref": "#/components/responses/DriveSignatureSuccessMany"
+ 400:
+ "$ref": "#/components/responses/QueryParamFailure"
"/hr/fields":
get:
summary: Obtenir les champs de ressources humaines paginés.
@@ -3981,7 +4108,7 @@ components:
"$ref": "#/components/schemas/Profile"
OpenShiftRequestMember:
type: object
- description: Une description détaillée d'un volontaire sur un quart à combler.
+ description: Une description détaillée d'un volontaire pour un quart à combler.
properties:
member_id:
type: string
@@ -3989,7 +4116,7 @@ components:
format: uuid
shift_id:
type: string
- description: L'identifiant du quart résultant d'une assignation.
+ description: L'identifiant du quart assigné à l'employé.
format: uuid
approved_at:
type: string
@@ -4021,10 +4148,10 @@ components:
format: int32
approved_by:
type: string
- description: L'identifiant de l'approbateur lié à la demande.
+ description: L'identifiant de la personne ayant approuvé la demande.
canceled_by:
type: string
- description: L'identifiant de l'annulateur(e) lié à la demande.
+ description: L'identifiant de la personne ayant annulé la demande.
approved_at:
type: string
description: Le moment auquel la demande de quart à combler a été approuvée.
@@ -4035,15 +4162,16 @@ components:
format: date-time
expired_at:
type: string
- description: Le moment auquel la demande a expirée.
+ description: Le moment auquel la demande de quart à combler a expiré.
format: date-time
created_at:
type: string
- description: La date et l'heure de création.
+ description: La date et l'heure de création de la demande de quart à combler.
format: date-time
updated_at:
type: string
- description: La date et l'heure de la dernière modification.
+ description: La date et l'heure de dernière modification de la demande de
+ quart à combler.
format: date-time
open_shift_request_members:
type: array
@@ -5273,6 +5401,10 @@ components:
type: integer
description: Le nombre de commentaires associés au fichier.
format: int32
+ new_version_id:
+ type: string
+ description: L'identifiant de la nouvelle version.
+ format: uuid
document:
"$ref": "#/components/schemas/Document"
body_documents:
@@ -5280,6 +5412,103 @@ components:
description: Les documents associés au contenu d'un fichier texte externe.
items:
"$ref": "#/components/schemas/Document"
+ DriveSignature:
+ type: object
+ description: Une description détaillée d'une signature.
+ properties:
+ id:
+ type: string
+ description: Identifiant unique de la signature.
+ format: uuid
+ signature_request_id:
+ type: string
+ description: Identifiant de la demande de signature associée à la signature.
+ format: uuid
+ member_id:
+ type: string
+ description: Identifiant du membre associé à la signature.
+ format: uuid
+ legal_name:
+ type: string
+ description: Le nom légal du membre signataire.
+ ip_address:
+ type: string
+ description: L'adresse IP de l'appareil utilisé pour signer le document.
+ user_agent:
+ type: string
+ description: Les informations du navigateur utilisées pour signer le document.
+ pss_signature:
+ type: string
+ description: Représente une signature cryptographique générée à l'aide du
+ schéma de signature probabiliste (PSS).
+ signed_at:
+ type: string
+ description: La date et l'heure de l'application de la signature.
+ format: date-time
+ consent_given_at:
+ type: string
+ description: La date et l'heure de consentement à la signature.
+ format: date-time
+ deleted_at:
+ type: string
+ description: Date et heure de l'annulation de la signature.
+ format: date-time
+ created_at:
+ type: string
+ description: Date et heure de création de la signature.
+ format: date-time
+ updated_at:
+ type: string
+ description: Date et heure de dernière modification de la signature.
+ format: date-time
+ DriveSignatureRequest:
+ type: object
+ description: Une description détaillée d'une demande de signature.
+ properties:
+ id:
+ type: string
+ description: Identifiant unique de la demande de signature.
+ format: uuid
+ creator_id:
+ type: string
+ description: Iidentifiant du créateur de la demande de signature.
+ format: uuid
+ drive_file_id:
+ type: string
+ description: Identifiant du fichier en cours de signature.
+ format: uuid
+ original_file_id:
+ type: string
+ description: Identifiant du fichier utilisé pour créer la demande de signature.
+ format: uuid
+ original_document_hash:
+ type: string
+ description: Hash du document original.
+ completed_at:
+ type: string
+ description: Date et heure de la completion de la demande de signature.
+ format: date-time
+ deleted_at:
+ type: string
+ description: Date et heure de l'annulation de la demande de signature.
+ format: date-time
+ created_at:
+ type: string
+ description: Date et heure de création de la demande de signature.
+ format: date-time
+ updated_at:
+ type: string
+ description: Date et heure de dernière modification de la demande de signature.
+ format: date-time
+ drive_file:
+ "$ref": "#/components/schemas/DriveItem"
+ completion_certificate:
+ "$ref": "#/components/schemas/Document"
+ signatures:
+ type: array
+ description: Les signatures associées à la demande de signature.
+ items:
+ "$ref": "#/components/schemas/DriveSignature"
HRField:
type: object
description: Une description détaillée d'un champ de ressources humaines.
@@ -7214,6 +7443,25 @@ components:
type: string
description: Le rôle requis pour avoir accès au dossier et son contenu.
Peut être 'member', 'supervisor', 'manager' ou 'admin'.
+ DriveSignatureRequestCreate:
+ required:
+ - drive_file_id
+ - member_ids
+ type: object
+ description: Une description détaillée des paramètres d'entrée d'une création
+ de demande de signature.
+ properties:
+ drive_file_id:
+ type: string
+ description: L'identifiant du fichier à utiliser.
+ format: uuid
+ member_ids:
+ type: array
+ description: Les identifiants des membres qui devront signer. Entre un et
+ quatre membre permis.
+ items:
+ type: string
+ format: uuid
ResourceBulkCreate:
required:
- resources
@@ -7921,6 +8169,50 @@ components:
properties:
data:
"$ref": "#/components/schemas/DriveItem"
+ DriveSignatureRequestSuccessMany:
+ description: Success
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ data:
+ type: array
+ items:
+ "$ref": "#/components/schemas/DriveSignatureRequest"
+ pagination:
+ "$ref": "#/components/schemas/CommonPagination"
+ DriveSignatureRequestSuccessOne:
+ description: Success
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ data:
+ "$ref": "#/components/schemas/DriveSignatureRequest"
+ DriveSignatureSuccessOne:
+ description: Success
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ data:
+ "$ref": "#/components/schemas/DriveSignature"
+ DriveSignatureSuccessMany:
+ description: Success
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ data:
+ type: array
+ items:
+ "$ref": "#/components/schemas/DriveSignature"
+ pagination:
+ "$ref": "#/components/schemas/CommonPagination"
HRFieldSuccessMany:
description: Success
content:
@@ -8196,6 +8488,11 @@ components:
application/json:
schema:
"$ref": "#/components/schemas/DriveFolderUpdate"
+ DriveSignatureRequestCreate:
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/DriveSignatureRequestCreate"
securitySchemes:
oauth:
type: oauth2