Last active
April 22, 2022 09:18
-
-
Save mdbenito/4619ae3a6ae4d245d7a16c5c31405956 to your computer and use it in GitHub Desktop.
An (incomplete) OpenApi spec for float.com's v3 API
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| openapi: 3.0.0 | |
| info: | |
| version: '3.0' | |
| title: Float API | |
| description: This API allows 3rd party integration of your Float data. | |
| security: | |
| - bearerAuth: [] | |
| paths: | |
| /people: | |
| get: | |
| tags: | |
| - Company | |
| description: Search for all people in your organization. | |
| parameters: | |
| - $ref: '#/components/parameters/pageParameter' | |
| - $ref: '#/components/parameters/perPageParameter' | |
| responses: | |
| '200': | |
| description: 'OK' | |
| headers: | |
| X-Pagination-Total-Count: | |
| $ref: '#/components/headers/X-Pagination-Total-Count' | |
| X-Pagination-Page-Count: | |
| $ref: '#/components/headers/X-Pagination-Page-Count' | |
| X-Pagination-Current-Page: | |
| $ref: '#/components/headers/X-Pagination-Current-Page' | |
| X-Pagination-Per-Page: | |
| $ref: '#/components/headers/X-Pagination-Per-Page' | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/Person' | |
| post: | |
| tags: | |
| - Company | |
| description: Add a new person | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Person' | |
| responses: | |
| '201': | |
| description: If the person was succesfully created, the response returns the full information about that person. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Person' | |
| '422': | |
| description: Data validation failure | |
| '/people/{people_id}': | |
| get: | |
| tags: | |
| - Company | |
| description: Retrieve a single person | |
| parameters: | |
| - name: people_id | |
| in: path | |
| required: true | |
| description: The person's id | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| responses: | |
| '200': | |
| description: Details of a single person | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Person' | |
| '404': | |
| description: The person does not exist | |
| patch: | |
| tags: | |
| - Company | |
| description: Update a person's details | |
| parameters: | |
| - name: people_id | |
| in: path | |
| required: true | |
| description: The person's id | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Person' | |
| responses: | |
| '200': | |
| description: On a successful update of a person, the response returns the full information about that person. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Person' | |
| '422': | |
| description: Data validation failure | |
| delete: | |
| tags: | |
| - Company | |
| description: Delete a person | |
| parameters: | |
| - name: people_id | |
| in: path | |
| required: true | |
| description: The person's id | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| responses: | |
| '204': | |
| description: Successful deletion. | |
| '404': | |
| description: The person does not exist | |
| /departments: | |
| get: | |
| tags: | |
| - Company | |
| description: List all departments in your organization. | |
| parameters: | |
| - $ref: '#/components/parameters/pageParameter' | |
| - $ref: '#/components/parameters/perPageParameter' | |
| responses: | |
| '200': | |
| description: 'OK' | |
| headers: | |
| X-Pagination-Total-Count: | |
| $ref: '#/components/headers/X-Pagination-Total-Count' | |
| X-Pagination-Page-Count: | |
| $ref: '#/components/headers/X-Pagination-Page-Count' | |
| X-Pagination-Current-Page: | |
| $ref: '#/components/headers/X-Pagination-Current-Page' | |
| X-Pagination-Per-Page: | |
| $ref: '#/components/headers/X-Pagination-Per-Page' | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/Department' | |
| post: | |
| tags: | |
| - Company | |
| description: Add a new department | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Department' | |
| responses: | |
| '201': | |
| description: If the departmentwas succesfully created, the response returns the full information about that department. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Department' | |
| '422': | |
| description: Data validation failure | |
| '/departments/{department_id}': | |
| get: | |
| tags: | |
| - Company | |
| description: Retrieve a single department | |
| parameters: | |
| - name: department_id | |
| in: path | |
| required: true | |
| description: The department's id | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| responses: | |
| '200': | |
| description: Details of a single department | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Department' | |
| '404': | |
| description: The department does not exist | |
| patch: | |
| tags: | |
| - Company | |
| description: Update a department's details | |
| parameters: | |
| - name: department_id | |
| in: path | |
| required: true | |
| description: The department's id | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Department' | |
| responses: | |
| '200': | |
| description: On a successful update of a department, the response returns the full information about that department. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Department' | |
| '422': | |
| description: Data validation failure | |
| delete: | |
| tags: | |
| - Company | |
| description: Delete a department | |
| parameters: | |
| - name: department_id | |
| in: path | |
| required: true | |
| description: The department's id | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| responses: | |
| '204': | |
| description: Successful deletion. | |
| '404': | |
| description: The department does not exist | |
| /clients: | |
| get: | |
| tags: | |
| - Company | |
| description: Search for all clients in your organization. | |
| parameters: | |
| - $ref: '#/components/parameters/pageParameter' | |
| - $ref: '#/components/parameters/perPageParameter' | |
| responses: | |
| '200': | |
| description: 'OK' | |
| headers: | |
| X-Pagination-Total-Count: | |
| $ref: '#/components/headers/X-Pagination-Total-Count' | |
| X-Pagination-Page-Count: | |
| $ref: '#/components/headers/X-Pagination-Page-Count' | |
| X-Pagination-Current-Page: | |
| $ref: '#/components/headers/X-Pagination-Current-Page' | |
| X-Pagination-Per-Page: | |
| $ref: '#/components/headers/X-Pagination-Per-Page' | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/Client' | |
| post: | |
| tags: | |
| - Company | |
| description: Add a new client | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Client' | |
| responses: | |
| '201': | |
| description: If the client was succesfully created, the response returns the full information about that client. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Client' | |
| '422': | |
| description: Data validation failure | |
| '/clients/{clients_id}': | |
| get: | |
| tags: | |
| - Company | |
| description: Retrieve a single client | |
| parameters: | |
| - name: clients_id | |
| in: path | |
| required: true | |
| description: The client's id | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| responses: | |
| '200': | |
| description: Details of a single client | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Client' | |
| '404': | |
| description: The client does not exist | |
| patch: | |
| tags: | |
| - Company | |
| description: Update a client's details | |
| parameters: | |
| - name: clients_id | |
| in: path | |
| required: true | |
| description: The client's id | |
| schema: | |
| type: integer | |
| minimum: 0 | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Client' | |
| responses: | |
| '200': | |
| description: On a successful update of a client, the response returns the full information about that client. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Client' | |
| '422': | |
| description: Data validation failure | |
| delete: | |
| tags: | |
| - Company | |
| description: Delete a client | |
| parameters: | |
| - name: clients_id | |
| in: path | |
| required: true | |
| description: The client's id | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| responses: | |
| '204': | |
| description: Successful deletion. | |
| '404': | |
| description: The client does not exist | |
| /projects: | |
| get: | |
| tags: | |
| - Projects | |
| description: List all projects in your organization. | |
| parameters: | |
| - $ref: '#/components/parameters/pageParameter' | |
| - $ref: '#/components/parameters/perPageParameter' | |
| responses: | |
| '200': | |
| description: The list of projects | |
| headers: | |
| X-Pagination-Total-Count: | |
| $ref: '#/components/headers/X-Pagination-Total-Count' | |
| X-Pagination-Page-Count: | |
| $ref: '#/components/headers/X-Pagination-Page-Count' | |
| X-Pagination-Current-Page: | |
| $ref: '#/components/headers/X-Pagination-Current-Page' | |
| X-Pagination-Per-Page: | |
| $ref: '#/components/headers/X-Pagination-Per-Page' | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/Project' | |
| post: | |
| tags: | |
| - Projects | |
| description: Add a new project | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Project' | |
| responses: | |
| '201': | |
| description: If the project was succesfully created, the response returns the full information about that project. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Project' | |
| '422': | |
| description: Data validation failure | |
| '/projects/{project_id}': | |
| get: | |
| tags: | |
| - Projects | |
| description: Retrieve a single project | |
| parameters: | |
| - name: project_id | |
| in: path | |
| required: true | |
| description: The project's id | |
| schema: | |
| type: integer | |
| responses: | |
| '200': | |
| description: Details of a single project | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Project' | |
| '404': | |
| description: The project does not exist | |
| patch: | |
| tags: | |
| - Projects | |
| description: Update a project's details | |
| parameters: | |
| - name: project_id | |
| in: path | |
| required: true | |
| description: The project's id | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Project' | |
| responses: | |
| '200': | |
| description: On a successful update of a project, the response returns the full information about that project. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Project' | |
| '422': | |
| description: Data validation failure | |
| delete: | |
| tags: | |
| - Projects | |
| description: Delete a project | |
| parameters: | |
| - name: project_id | |
| in: path | |
| required: true | |
| description: The project's id | |
| schema: | |
| type: integer | |
| responses: | |
| '204': | |
| description: Successful deletion. | |
| '404': | |
| description: The project does not exist | |
| /phases: | |
| get: | |
| tags: | |
| - Projects | |
| description: List all phases in your organization. | |
| parameters: | |
| - $ref: '#/components/parameters/pageParameter' | |
| - $ref: '#/components/parameters/perPageParameter' | |
| responses: | |
| '200': | |
| description: The list of phases | |
| headers: | |
| X-Pagination-Total-Count: | |
| $ref: '#/components/headers/X-Pagination-Total-Count' | |
| X-Pagination-Page-Count: | |
| $ref: '#/components/headers/X-Pagination-Page-Count' | |
| X-Pagination-Current-Page: | |
| $ref: '#/components/headers/X-Pagination-Current-Page' | |
| X-Pagination-Per-Page: | |
| $ref: '#/components/headers/X-Pagination-Per-Page' | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/Phase' | |
| post: | |
| tags: | |
| - Projects | |
| description: Add a new phase | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Phase' | |
| responses: | |
| '201': | |
| description: If the phase was succesfully created, the response returns the full information about that phase. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Phase' | |
| '422': | |
| description: Data validation failure | |
| '/phases/{phase_id}': | |
| get: | |
| tags: | |
| - Projects | |
| description: Retrieve a single phase | |
| parameters: | |
| - name: phase_id | |
| in: path | |
| required: true | |
| description: The phase's id | |
| schema: | |
| type: integer | |
| responses: | |
| '200': | |
| description: Details of a single phase | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Phase' | |
| '404': | |
| description: The phase does not exist | |
| patch: | |
| tags: | |
| - Projects | |
| description: Update a phase's details | |
| parameters: | |
| - name: phase_id | |
| in: path | |
| required: true | |
| description: The phase's id | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Phase' | |
| responses: | |
| '200': | |
| description: On a successful update of a phase, the response returns the full information about that phase. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Phase' | |
| '422': | |
| description: Data validation failure | |
| delete: | |
| tags: | |
| - Projects | |
| description: Delete a phase | |
| parameters: | |
| - name: phase_id | |
| in: path | |
| required: true | |
| description: The phase's id | |
| schema: | |
| type: integer | |
| responses: | |
| '204': | |
| description: Successful deletion. | |
| '404': | |
| description: The phase does not exist | |
| /tasks: | |
| get: | |
| tags: | |
| - Projects | |
| description: List tasks. This includes any tasks or repeating task sets that start or end within the date range specified. | |
| parameters: | |
| - $ref: '#/components/parameters/pageParameter' | |
| - $ref: '#/components/parameters/perPageParameter' | |
| responses: | |
| '200': | |
| description: The list of tasks | |
| headers: | |
| X-Pagination-Total-Count: | |
| $ref: '#/components/headers/X-Pagination-Total-Count' | |
| X-Pagination-Page-Count: | |
| $ref: '#/components/headers/X-Pagination-Page-Count' | |
| X-Pagination-Current-Page: | |
| $ref: '#/components/headers/X-Pagination-Current-Page' | |
| X-Pagination-Per-Page: | |
| $ref: '#/components/headers/X-Pagination-Per-Page' | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/Task' | |
| post: | |
| tags: | |
| - Projects | |
| description: Add a new task | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Task' | |
| responses: | |
| '201': | |
| description: If the task was succesfully created, the response returns the full information about that task. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Task' | |
| '422': | |
| description: Data validation failure | |
| '/tasks/{task_id}': | |
| get: | |
| tags: | |
| - Projects | |
| description: Retrieve a single task | |
| parameters: | |
| - name: task_id | |
| in: path | |
| required: true | |
| description: The task's id | |
| schema: | |
| type: integer | |
| responses: | |
| '200': | |
| description: Details of a single task | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Task' | |
| '404': | |
| description: The task does not exist | |
| patch: | |
| tags: | |
| - Projects | |
| description: Update a task's details | |
| parameters: | |
| - name: task_id | |
| in: path | |
| required: true | |
| description: The task's id | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Task' | |
| responses: | |
| '200': | |
| description: On a successful update of a task, the response returns the full information about that task. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Task' | |
| '422': | |
| description: Data validation failure | |
| delete: | |
| tags: | |
| - Projects | |
| description: Delete a task | |
| parameters: | |
| - name: task_id | |
| in: path | |
| required: true | |
| description: The task's id | |
| schema: | |
| type: integer | |
| responses: | |
| '204': | |
| description: Successful deletion. | |
| '404': | |
| description: The task does not exist | |
| /milestones: | |
| get: | |
| tags: | |
| - Projects | |
| description: List project milestones | |
| parameters: | |
| - $ref: '#/components/parameters/pageParameter' | |
| - $ref: '#/components/parameters/perPageParameter' | |
| responses: | |
| '200': | |
| description: 'List of milestones for all projects' | |
| headers: | |
| X-Pagination-Total-Count: | |
| $ref: '#/components/headers/X-Pagination-Total-Count' | |
| X-Pagination-Page-Count: | |
| $ref: '#/components/headers/X-Pagination-Page-Count' | |
| X-Pagination-Current-Page: | |
| $ref: '#/components/headers/X-Pagination-Current-Page' | |
| X-Pagination-Per-Page: | |
| $ref: '#/components/headers/X-Pagination-Per-Page' | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/Milestone' | |
| post: | |
| tags: | |
| - Projects | |
| description: Add a new project milestone | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Milestone' | |
| responses: | |
| '201': | |
| description: If the milestone was succesfully created, the response returns the full information about that milestone. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Milestone' | |
| '422': | |
| description: Data validation failure if fields are missing or the milestone already exists. | |
| '/milestones/{milestones_id}': | |
| get: | |
| tags: | |
| - Projects | |
| description: Retrieve a single milestone | |
| parameters: | |
| - name: milestones_id | |
| in: path | |
| required: true | |
| description: The milestone's id | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| responses: | |
| '200': | |
| description: Details of a single milestone | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Milestone' | |
| '404': | |
| description: The milestone does not exist | |
| patch: | |
| tags: | |
| - Projects | |
| description: Update a milestone's details | |
| parameters: | |
| - name: milestones_id | |
| in: path | |
| required: true | |
| description: The milestone's id | |
| schema: | |
| type: integer | |
| minimum: 0 | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Milestone' | |
| responses: | |
| '200': | |
| description: On a successful update of a milestone, the response returns the full information about that milestone. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Milestone' | |
| '422': | |
| description: Data validation failure | |
| delete: | |
| tags: | |
| - Projects | |
| description: Delete a milestone | |
| parameters: | |
| - name: milestones_id | |
| in: path | |
| required: true | |
| description: The milestone's id | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| responses: | |
| '204': | |
| description: Successful deletion. | |
| '404': | |
| description: The milestone does not exist | |
| /timeoffs: | |
| get: | |
| tags: | |
| - Time | |
| description: List of time off scheduled | |
| parameters: | |
| - $ref: '#/components/parameters/pageParameter' | |
| - $ref: '#/components/parameters/perPageParameter' | |
| responses: | |
| '200': | |
| description: 'OK' | |
| headers: | |
| X-Pagination-Total-Count: | |
| $ref: '#/components/headers/X-Pagination-Total-Count' | |
| X-Pagination-Page-Count: | |
| $ref: '#/components/headers/X-Pagination-Page-Count' | |
| X-Pagination-Current-Page: | |
| $ref: '#/components/headers/X-Pagination-Current-Page' | |
| X-Pagination-Per-Page: | |
| $ref: '#/components/headers/X-Pagination-Per-Page' | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/Timeoff' | |
| post: | |
| tags: | |
| - Time | |
| description: Add a new time off | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Timeoff' | |
| responses: | |
| '201': | |
| description: If the time off was succesfully created, the response returns the full information about that time off. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Timeoff' | |
| '422': | |
| description: Data validation failure if fields are missing or the time off already exists. | |
| '/timeoffs/{timeoff_id}': | |
| get: | |
| tags: | |
| - Time | |
| description: Retrieve a single time off | |
| parameters: | |
| - name: timeoff_id | |
| in: path | |
| required: true | |
| description: The time off's id | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| responses: | |
| '200': | |
| description: OK | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Timeoff' | |
| '404': | |
| description: Time off not found | |
| patch: | |
| tags: | |
| - Time | |
| description: Update a time off's details | |
| parameters: | |
| - name: timeoff_id | |
| in: path | |
| required: true | |
| description: The time off's id | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Timeoff' | |
| responses: | |
| '200': | |
| description: On a successful update of a time off, the response returns the full information about that time off. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Timeoff' | |
| '422': | |
| description: Data validation failure if fields are missing or the time off already exists. | |
| delete: | |
| tags: | |
| - Time | |
| description: Delete a time off | |
| parameters: | |
| - name: timeoff_id | |
| in: path | |
| required: true | |
| description: The time off's id | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| responses: | |
| '204': | |
| description: Successful deletion. | |
| '404': | |
| description: The time off record does not exist | |
| /timeoff-types: | |
| get: | |
| tags: | |
| - Time | |
| parameters: | |
| - $ref: '#/components/parameters/pageParameter' | |
| - $ref: '#/components/parameters/perPageParameter' | |
| description: List of time off types | |
| responses: | |
| '200': | |
| description: List of time off types that can be assigned to your team | |
| headers: | |
| X-Pagination-Total-Count: | |
| $ref: '#/components/headers/X-Pagination-Total-Count' | |
| X-Pagination-Page-Count: | |
| $ref: '#/components/headers/X-Pagination-Page-Count' | |
| X-Pagination-Current-Page: | |
| $ref: '#/components/headers/X-Pagination-Current-Page' | |
| X-Pagination-Per-Page: | |
| $ref: '#/components/headers/X-Pagination-Per-Page' | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/TimeoffType' | |
| post: | |
| tags: | |
| - Time | |
| description: Add a new time off type | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/TimeoffType' | |
| responses: | |
| '201': | |
| description: If the time off type was succesfully created, the response returns the full information about that time off type. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/TimeoffType' | |
| '422': | |
| description: Data validation failure if fields are missing or the time off type already exists. | |
| '/timeoff-types/{timeoff_type_id}': | |
| get: | |
| tags: | |
| - Time | |
| description: Retrieve a single time off type | |
| parameters: | |
| - name: timeoff_type_id | |
| in: path | |
| required: true | |
| description: The time off type's id | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| responses: | |
| '200': | |
| description: A time off type | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/TimeoffType' | |
| '404': | |
| description: Time off type not found | |
| patch: | |
| tags: | |
| - Time | |
| description: Update a time off type's details | |
| parameters: | |
| - name: timeoff_type_id | |
| in: path | |
| required: true | |
| description: The time off type's id | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/TimeoffType' | |
| responses: | |
| '200': | |
| description: On a successful update of a time off type, the response returns the full information about that time off type. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/TimeoffType' | |
| '422': | |
| description: Data validation failure if fields are missing or the time off type already exists. | |
| /logged-time: | |
| get: | |
| tags: | |
| - Time | |
| parameters: | |
| - name: people_id | |
| in: query | |
| required: false | |
| description: ID of the person for whom to list logged time required if project_id omitted | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| - name: project_id | |
| in: query | |
| required: false | |
| description: ID of the project for which to list logged time required if people_id omitted | |
| schema: | |
| type: integer | |
| minimum: 1 | |
| - name: start_date | |
| in: query | |
| required: true | |
| description: Start of date range in format YYYY-MM-DD | |
| schema: | |
| type: string | |
| format: date | |
| - name: end_date | |
| in: query | |
| required: true | |
| description: End of date range in format YYYY-MM-DD | |
| schema: | |
| type: string | |
| format: date | |
| description: Returns a list of logged time for the specified person or project within the specified date range | |
| responses: | |
| '200': | |
| description: An array of logged time entries for the specified person/project between the specified dates | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/LoggedTime' | |
| '403': | |
| description: Time tracking is not enabled for this team | |
| '422': | |
| description: Data validation error. | |
| post: | |
| tags: | |
| - Time | |
| description: Create a logged time entry for a person | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/LoggedTimeRequest' | |
| responses: | |
| '201': | |
| description: Time successfully logged | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/LoggedTime' | |
| '403': | |
| description: Time tracking is not enabled for this team | |
| '422': | |
| description: Data validation error. | |
| '/logged-time/{logged_time_id}': | |
| get: | |
| tags: | |
| - Time | |
| description: Returns a single logged time entry | |
| parameters: | |
| - name: logged_time_id | |
| in: path | |
| required: true | |
| description: Unique ID of the specific logged time entry to be retrieved | |
| schema: | |
| type: string | |
| responses: | |
| '200': | |
| description: A logged time entry | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/LoggedTime' | |
| '403': | |
| description: Time Tracking is not enabled for this team | |
| '404': | |
| description: The specified logged time entry does not exist | |
| '422': | |
| description: Data validation error | |
| patch: | |
| tags: | |
| - Time | |
| description: Modify an existing logged time entry. | |
| parameters: | |
| - name: logged_time_id | |
| in: path | |
| required: true | |
| description: Unique ID of the specific logged time entry to be modified | |
| schema: | |
| type: string | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/LoggedTimeRequest' | |
| responses: | |
| '200': | |
| description: On a successful update of a logged time, the response returns the full information about that logged time. | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/LoggedTime' | |
| '403': | |
| description: Time Tracking is not enabled for this team | |
| '404': | |
| description: The specified logged time entry does not exist | |
| '422': | |
| description: Data validation error | |
| delete: | |
| tags: | |
| - Time | |
| description: Delete an existing logged time entry. | |
| parameters: | |
| - name: logged_time_id | |
| in: path | |
| required: true | |
| description: The time off's id | |
| schema: | |
| type: string | |
| responses: | |
| '204': | |
| description: The logged time entry was successfully deleted. | |
| '403': | |
| description: Time Tracking is not enabled for this team | |
| '404': | |
| description: The specified logged time entry does not exist | |
| '422': | |
| description: Data validation error | |
| servers: | |
| - url: https://api.float.com/v3 | |
| components: | |
| securitySchemes: | |
| bearerAuth: # arbitrary name for the security scheme | |
| type: http | |
| scheme: bearer | |
| bearerFormat: JWT | |
| schemas: | |
| Department: | |
| title: Department data | |
| type: object | |
| required: | |
| - department_id # Not required for requests. Better for typing in the client | |
| - name | |
| properties: | |
| department_id: | |
| type: integer | |
| description: The ID of this department. Read-only | |
| name: | |
| type: string | |
| maxLength: 200 | |
| description: The name of the department | |
| LoggedTimeRequest: | |
| title: Logged time request parameters | |
| type: object | |
| required: | |
| - people_id | |
| - project_id | |
| - hours | |
| - date | |
| properties: | |
| date: | |
| type: string | |
| format: date | |
| description: Date for which time is being logged | |
| hours: | |
| type: number | |
| description: Amount of time being logged | |
| billable: | |
| type: integer | |
| minimum: 0 | |
| maximum: 1 | |
| description: Integer flag (1 = true, 0 = false) identifying whether the time logged is billable; if omitted, the billable status of the project is used. Note that non-billable projects cannot have billable time | |
| people_id: | |
| type: integer | |
| description: ID of the person for whom time is being logged | |
| project_id: | |
| type: integer | |
| description: ID of the project for which time is being logged | |
| task_id: | |
| type: integer | |
| description: ID of the scheduled task for which time is being logged | |
| task_name: | |
| type: string | |
| description: Name of the task for which time is being logged | |
| notes: | |
| type: string | |
| description: Additional notes about this logged time entry | |
| LoggedTime: | |
| title: Logged time data | |
| type: object | |
| required: | |
| - logged_time_id | |
| - people_id | |
| - project_id | |
| - hours | |
| - date | |
| properties: | |
| logged_time_id: | |
| type: string | |
| description: Unique ID of the logged time entry | |
| date: | |
| type: string | |
| format: date | |
| description: Date of the logged time entry | |
| hours: | |
| type: number | |
| billable: | |
| type: integer | |
| minimum: 0 | |
| maximum: 1 | |
| description: Is the logged time entry billable? (1 = true, 0 = false) | |
| notes: | |
| type: string | |
| description: Additional notes about this logged time entry | |
| people_id: | |
| type: integer | |
| description: The ID of the person for whom this entry was logged | |
| project_id: | |
| type: integer | |
| description: The ID of the project on which this entry was logged | |
| phase_id: | |
| type: integer | |
| description: The ID of the project phase for which this entry was logged | |
| task_id: | |
| type: integer | |
| description: The ID of the scheduled task against which this entry was logged | |
| task_name: | |
| type: string | |
| description: The name of the task against which this entry was logged | |
| locked: | |
| type: integer | |
| minimum: 0 | |
| maximum: 1 | |
| description: Is the logged time entry locked? (1 = true, 0 = false) read-only | |
| locked_date: | |
| type: string | |
| format: date | |
| description: Date this logged time entry was last locked read-only | |
| created: | |
| type: string | |
| format: date-time | |
| description: Date/time this record was created read-only | |
| created_by: | |
| type: integer | |
| description: ID of the account that created this record read-only | |
| modified: | |
| type: string | |
| format: date-time | |
| description: Date/time this record was last modified read-only | |
| modified_by: | |
| type: integer | |
| description: ID of the account that last modified this record. read-only | |
| Person: | |
| title: Person data | |
| type: object | |
| required: | |
| - people_id # Not required for requests. Better for typing in the client | |
| - name | |
| properties: | |
| people_id: | |
| type: number | |
| description: 'The unique identifier for this person. Read-only: ignored when creating a person' | |
| name: | |
| type: string | |
| maxLength: 150 | |
| description: The person's full name | |
| email: | |
| type: string | |
| maxLength: 200 | |
| description: Email address for this person | |
| job_title: | |
| type: string | |
| maxLength: 200 | |
| description: The person's job title | |
| department: | |
| $ref: '#/components/schemas/Department' | |
| notes: | |
| type: string | |
| maxLength: 65535 | |
| description: Any notes related to this person | |
| avatar_file: | |
| type: string | |
| maxLength: 40 | |
| description: Filename of thumbnail image for this person (read-only) | |
| auto_email: | |
| type: integer | |
| minimum: 0 | |
| maximum: 1 | |
| description: Should this person's schedule be emailed at start of week? 1 = Yes, 0 = No | |
| employee_type: | |
| type: integer | |
| minimum: 0 | |
| maximum: 1 | |
| description: Full-time or part-type. 1 = Full-time, 0 = Part-time | |
| work_days_hours: | |
| type: array | |
| items: | |
| type: integer | |
| description: Hours that a part-time person is available for scheduling each day in order from Sunday to Saturday | |
| active: | |
| type: integer | |
| minimum: 0 | |
| maximum: 1 | |
| description: Is this person active or archived? 1 = Active, 0 = Archived | |
| people_type_id: | |
| type: integer | |
| minimum: 1 | |
| maximum: 3 | |
| description: Is this person an 1 = Employee (default), 2 = Contractor, 3 = Placeholder? | |
| tags: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/PeopleTag' | |
| start_date: | |
| type: string | |
| format: date | |
| end_date: | |
| type: string | |
| format: date | |
| default_hourly_rate: | |
| type: integer | |
| description: Default hourly rate for fee-based projects | |
| created: | |
| type: string | |
| format: date-time | |
| description: Date this record was created (read-only) | |
| modified: | |
| type: string | |
| format: date-time | |
| description: Date this record was last modified (read-only) | |
| contractor: | |
| deprecated: true | |
| type: integer | |
| description: (DEPRECATED, use people_type_id instead) 1 if a contractor, 0 otherwise | |
| non_work_days: | |
| deprecated: true | |
| type: array | |
| items: | |
| type: integer | |
| description: (DEPRECATED, use work_days_hours instead) | |
| PeopleTag: | |
| title: People tag data | |
| type: object | |
| required: | |
| - name | |
| properties: | |
| name: | |
| type: string | |
| maxLength: 64 | |
| type: | |
| deprecated: true | |
| type: integer | |
| description: (DEPRECATED) Setting the type on a tag has no effect | |
| Client: | |
| title: Client data | |
| type: object | |
| required: | |
| - name | |
| properties: | |
| name: | |
| type: string | |
| maxLength: 200 | |
| description: The name of the client | |
| client_id: | |
| type: integer | |
| minimum: 1 | |
| description: The ID of this client. Read-only. | |
| Project: | |
| title: Project data | |
| type: object | |
| required: | |
| - project_id # Not required for requests. Better for typing in the client | |
| - name | |
| properties: | |
| project_id: | |
| type: integer | |
| description: 'The ID of this project. Read-only: ignored when creating a project' | |
| name: | |
| type: string | |
| maxLength: 200 | |
| description: The name of the project | |
| client_id: | |
| type: integer | |
| description: The ID of the project's client | |
| color: | |
| type: string | |
| format: color | |
| description: Project's color in hexadecimal | |
| example: 00a1b3 | |
| notes: | |
| type: string | |
| description: Notes for this project | |
| tags: | |
| type: array | |
| description: List of tags | |
| items: | |
| $ref: '#/components/schemas/ProjectTag' | |
| budget_type: | |
| type: integer | |
| minimum: 1 | |
| maximum: 3 | |
| description: Is there a project budget? 1 = Total hours, 2 = Total fee, 3 = Hourly fee | |
| budget_total: | |
| type: number | |
| format: float | |
| description: The budget amount for Total hours or Total fee budgets | |
| default_hourly_rate: | |
| type: number | |
| format: float | |
| description: The default hourly rate for fee-based budgets | |
| non_billable: | |
| type: integer | |
| minimum: 0 | |
| maximum: 1 | |
| description: Is this project billable? 0 = Billable, 1 = Non-billable | |
| tentative: | |
| type: integer | |
| minimum: 0 | |
| maximum: 1 | |
| description: Is this project tentative? 1 = Yes, 0 = No | |
| active: | |
| type: integer | |
| minimum: 0 | |
| maximum: 1 | |
| description: Is this project active or archived? 1 = Active, 0 = Archived | |
| project_manager: | |
| type: integer | |
| description: Account ID of the assigned project manager | |
| all_pms_schedule: | |
| type: integer | |
| minimum: 0 | |
| maximum: 1 | |
| description: Do all project managers have scheduling rights? 1 = Yes, 0 = No | |
| created: | |
| type: string | |
| format: date-time | |
| description: Date this record was created (read-only) | |
| modified: | |
| type: string | |
| format: date-time | |
| description: Date this record was last modified (read-only) | |
| ProjectTag: | |
| title: Project tag data | |
| type: object | |
| required: | |
| - tag_name | |
| - project_id | |
| properties: | |
| tag_name: | |
| type: string | |
| description: The name of the tag | |
| project_id: | |
| type: integer | |
| description: The project that this tag belongs to | |
| Milestone: | |
| title: Milestone data | |
| type: object | |
| required: | |
| - milestone_id # Not required for requests. Better for typing in the client | |
| - name | |
| - project_id | |
| - date | |
| properties: | |
| milestone_id: | |
| type: integer | |
| description: 'The ID of this milestone. Read-only: ignored when creating a milestone' | |
| name: | |
| type: string | |
| maxLength: 200 | |
| description: The name of the milestone | |
| project_id: | |
| type: integer | |
| minimum: 1 | |
| description: The project that this milestone belongs to | |
| date: | |
| type: string | |
| format: date | |
| description: Start date of the milestone | |
| end_date: | |
| type: string | |
| format: date | |
| description: End date of the milestone if more than 1 day | |
| Phase: | |
| title: Project phase data | |
| type: object | |
| required: | |
| - phase_id # Not required for requests. Better for typing in the client | |
| - project_id | |
| - name | |
| - start_date | |
| - end_date | |
| properties: | |
| phase_id: | |
| type: integer | |
| minimum: 1 | |
| description: 'The ID of this phase. Read-only: ignored when creating a phase' | |
| project_id: | |
| type: integer | |
| minimum: 1 | |
| description: The ID of the project to which this phase belongs | |
| name: | |
| type: string | |
| maxLength: 200 | |
| description: The name of the phase | |
| start_date: | |
| type: string | |
| format: date | |
| description: Start date of this phase | |
| end_date: | |
| type: string | |
| format: date | |
| description: End date of this phase | |
| color: | |
| type: string | |
| description: Phase's color in hexadecimal (defaults to project color) | |
| notes: | |
| type: string | |
| description: Additional notes about the phase | |
| budget_total: | |
| type: number | |
| description: The budget amount for Total hours or Total fee budgets if this phase's project budget is per phase | |
| default_hourly_rate: | |
| type: number | |
| description: The default hourly rate for fee-based budgets | |
| non_billable: | |
| type: integer | |
| minimum: 0 | |
| maximum: 1 | |
| description: Is this phase billable? 0 = Billable, 1 = Non-billable | |
| tentative: | |
| type: integer | |
| minimum: 0 | |
| maximum: 1 | |
| description: Is this phase tentative? 1 = Yes, 0 = No | |
| active: | |
| type: integer | |
| minimum: 0 | |
| maximum: 1 | |
| description: Is this phase active or archived? 1 = Active, 0 = Archived | |
| created: | |
| type: string | |
| format: date-time | |
| description: Date this record was created (read-only) | |
| modified: | |
| type: string | |
| format: date-time | |
| description: Date this record was modified (read-only) | |
| Task: | |
| type: object | |
| required: | |
| - project_id | |
| - start_date | |
| - end_date | |
| - hours | |
| properties: | |
| task_id: | |
| type: integer | |
| minimum: 1 | |
| description: The ID of this task. Read-only, ignored when creating a task | |
| project_id: | |
| type: integer | |
| minimum: 1 | |
| description: The ID of the project that this task belongs to | |
| phase_id: | |
| type: integer | |
| minimum: 1 | |
| description: The ID of the project phase that this task belongs to | |
| start_date: | |
| type: string | |
| format: date | |
| description: Start date of this task | |
| end_date: | |
| type: string | |
| format: date | |
| description: End date of this task | |
| start_time: | |
| type: string | |
| format: time | |
| description: Start time of this task in 24 hr format | |
| hours: | |
| type: number | |
| description: Number of hours per day to spend on this task | |
| people_id: | |
| type: integer | |
| description: The ID of the person assigned to this task (omit when using people_ids field) | |
| people_ids: | |
| type: array | |
| items: | |
| type: integer | |
| minimum: 1 | |
| description: List of one or more people IDs assigned to this task (ignored if people_id is set) | |
| status: | |
| type: integer | |
| minimum: 1 | |
| maximum: 3 | |
| description: Status of this task. 1 = Tentative, 2 = Confirmed, 3 = Complete | |
| priority: | |
| type: integer | |
| minimum: 0 | |
| maximum: 1 | |
| description: Is this task a priority? 1 = Priority, 0 = Not a priority | |
| name: | |
| type: string | |
| description: Name of this task | |
| notes: | |
| type: string | |
| description: Additional notes about the task | |
| repeat_state: | |
| type: integer | |
| minimum: 0 | |
| maximum: 3 | |
| description: Frequency that this task repeats. 0 = No repeat, 1 = Weekly, 2 = Monthly, 3 = Every 2 Weeks | |
| repeat_end_date: | |
| type: string | |
| format: date | |
| description: Date that the repeating task will cease | |
| created_by: | |
| type: integer | |
| minimum: 1 | |
| description: Account ID of person who created this task (read-only) | |
| created: | |
| type: string | |
| format: date-time | |
| description: Date this record was created (read-only) | |
| modified_by: | |
| type: integer | |
| minimum: 1 | |
| description: Account ID of person who last modified this task (read-only) | |
| modified: | |
| type: string | |
| format: date-time | |
| description: Date this record was last modified (read-only) | |
| Timeoff: | |
| title: Time off data | |
| type: object | |
| required: | |
| - timeoff_id # Not required for requests. Better for typing in the client | |
| - timeoff_type_id | |
| - start_date | |
| - end_date | |
| - people_ids | |
| properties: | |
| timeoff_id: | |
| type: integer | |
| description: 'The ID of this time off. Read-only: ignored when creating a time off' | |
| timeoff_type_id: | |
| type: integer | |
| description: The ID of this time off type | |
| start_date: | |
| type: string | |
| format: date | |
| description: Start date of this time off | |
| end_date: | |
| type: string | |
| format: date | |
| description: End date of this time off | |
| start_time: | |
| type: string | |
| format: time | |
| description: Start time of this time off in 24 hr format | |
| hours: | |
| type: number | |
| description: Number of hours per day for this time off. Not required when a full day | |
| timeoff_notes: | |
| type: string | |
| description: Additional notes about the time off | |
| modified_by: | |
| type: integer | |
| description: Account ID of person who last modified this time off (read-only) | |
| created_by: | |
| type: integer | |
| description: Account ID of person who created this time off (read-only) | |
| created: | |
| type: string | |
| format: date-time | |
| description: Date this record was created (read-only) | |
| modified: | |
| type: string | |
| format: date-time | |
| description: Date this record was modified (read-only) | |
| repeat_state: | |
| type: integer | |
| minimum: 0 | |
| maximum: 3 | |
| description: Frequency that this time off repeats. 0 = No repeat, 1 = Weekly, 2 = Monthly, 3 = Every 2 Weeks | |
| repeat_end: | |
| type: string | |
| format: date | |
| description: Date that the repeating time off will cease | |
| full_day: | |
| type: integer | |
| minimum: 0 | |
| maximum: 1 | |
| description: Is this time off for a full day? 1 = Yes, 0 = No | |
| people_ids: | |
| type: array | |
| items: | |
| type: integer | |
| description: List of people IDs assigned to this time off | |
| TimeoffType: | |
| title: Time off type data | |
| type: object | |
| required: | |
| - timeoff_type_id # Not required for requests. Better for typing in the client | |
| - timeoff_type_name | |
| properties: | |
| timeoff_type_id: | |
| type: integer | |
| description: 'The ID of this time off type. Read-only: ignored when creating a time off type' | |
| timeoff_type_name: | |
| type: string | |
| description: The name of this time off type | |
| color: | |
| type: string | |
| format: color | |
| description: Time off type's color in hexadecimal | |
| example: 00c1a3 | |
| created_by: | |
| type: integer | |
| description: Account ID of person who created this time off type (read-only) | |
| headers: | |
| X-Pagination-Total-Count: | |
| description: Total number of items | |
| schema: | |
| type: integer | |
| X-Pagination-Page-Count: | |
| description: Total number of pages | |
| schema: | |
| type: integer | |
| X-Pagination-Current-Page: | |
| description: Current page number | |
| schema: | |
| type: integer | |
| X-Pagination-Per-Page: | |
| description: Number of items per page | |
| schema: | |
| type: integer | |
| parameters: | |
| pageParameter: | |
| name: page | |
| in: query | |
| required: false | |
| description: The page number of the page of results to return | |
| schema: | |
| type: integer | |
| minimum: 0 | |
| perPageParameter: | |
| name: per-page | |
| in: query | |
| required: false | |
| description: The number of items per page | |
| schema: | |
| type: integer | |
| minimum: 0 |
Author
Author
As of v6 of this gist, the endpoints missing are Team Holidays, Reports and Statuses.
This version also introduces separate schemas for all requests and responses, making code generated with e.g. openapi-code-generator produce the right types.
Author
v7 adds (undocumented) pagination parameters for GET /logged-time
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
As of v5 of this gist, the endpoints missing from this API specification are Accounts, Team Holidays, Reports and Statuses