Fresnel Software Auth API
The Auth API from Fresnel Software — 11 operation(s) for auth.
The Auth API from Fresnel Software — 11 operation(s) for auth.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/vitruvi:vitruvi-auth-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Vitruvi API Documentation Auth API
version: 1.0.0
description: Vitruvi API reference documentation.
servers:
- url: https://{workspace}.api.vitruvi.cc
variables:
workspace:
default: demo
description: The name of the workspace to connect to
tags:
- name: Auth
paths:
/auth/permissions/:
get:
operationId: list_permissions
description: Returns a list of all permissions.
summary: List Permissions
parameters:
- in: query
name: codename
schema:
type: string
- name: filter_expression
required: false
in: query
description: A generic expression to filter the list with.
schema:
type: string
- in: query
name: group
schema:
type: array
items:
type: integer
explode: true
style: form
- in: query
name: limit
schema:
type: integer
default: 1000
description: The number of records returned in the single call. See [API Paging](https://developers.vitruvi.cc/docs/paging).
- in: query
name: offset
schema:
type: integer
default: 0
description: The number of records to skip. The offset value is usually equal to the page_number * limit. See [API Paging](https://developers.vitruvi.cc/docs/paging).
- in: query
name: ordering
schema:
type: string
description: The name of the fields to order the results by. Multiple columns can be specified as a comma separated list (i.e. id,name). Columns can also be ordered in descending order by prefixing with a hyphen (i.e. -id).
- in: query
name: search
schema:
type: string
description: 'A term that will be (case-insensitive) searched for in each of the fields: (''name'', ''codename'')'
tags:
- Auth
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedPermissionList'
description: ''
x-internal: false
x-vitruvi-sdk: true
post:
operationId: create_permission
description: Create a new permission record.
summary: Create Permission
tags:
- Auth
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Permission'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Permission'
multipart/form-data:
schema:
$ref: '#/components/schemas/Permission'
required: true
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Permission'
description: ''
x-internal: false
x-vitruvi-sdk: true
/auth/permissions/{id}/:
get:
operationId: get_permission
description: Get the permission record details by its id.
summary: Get Permission
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this permission.
required: true
tags:
- Auth
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Permission'
description: ''
x-internal: false
x-vitruvi-sdk: true
put:
operationId: update_permission
description: Update the entire permission record details by its id.
summary: Update Permission
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this permission.
required: true
tags:
- Auth
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Permission'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Permission'
multipart/form-data:
schema:
$ref: '#/components/schemas/Permission'
required: true
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Permission'
description: ''
x-internal: false
x-vitruvi-sdk: true
patch:
operationId: patch_permission
description: Partial update the permission record details by its id.
summary: Patch Permission
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this permission.
required: true
tags:
- Auth
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedPermission'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedPermission'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedPermission'
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Permission'
description: ''
x-internal: false
x-vitruvi-sdk: true
delete:
operationId: delete_permission
description: Delete the permission record details by its id.
summary: Delete Permission
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this permission.
required: true
tags:
- Auth
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
responses:
'204':
description: No response body
x-internal: false
x-vitruvi-sdk: true
/auth/security_groups/:
get:
operationId: list_security_groups
description: Returns a list of all security groups.
summary: List Security Groups
parameters:
- name: filter_expression
required: false
in: query
description: A generic expression to filter the list with.
schema:
type: string
- in: query
name: limit
schema:
type: integer
default: 1000
description: The number of records returned in the single call. See [API Paging](https://developers.vitruvi.cc/docs/paging).
- in: query
name: offset
schema:
type: integer
default: 0
description: The number of records to skip. The offset value is usually equal to the page_number * limit. See [API Paging](https://developers.vitruvi.cc/docs/paging).
- in: query
name: ordering
schema:
type: string
description: The name of the fields to order the results by. Multiple columns can be specified as a comma separated list (i.e. id,name). Columns can also be ordered in descending order by prefixing with a hyphen (i.e. -id).
- in: query
name: permissions
schema:
type: array
items:
type: integer
explode: true
style: form
- in: query
name: search
schema:
type: string
description: 'A term that will be (case-insensitive) searched for in each of the fields: (''name'',)'
tags:
- Auth
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedRoleList'
description: ''
x-internal: false
x-vitruvi-sdk: true
post:
operationId: create_security_group
description: Create a new security group record.
summary: Create Security Group
tags:
- Auth
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Role'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Role'
multipart/form-data:
schema:
$ref: '#/components/schemas/Role'
required: true
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Role'
description: ''
x-internal: false
x-vitruvi-sdk: true
/auth/security_groups/{id}/:
get:
operationId: get_security_group
description: Get the security group record details by its id.
summary: Get Security Group
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this group.
required: true
tags:
- Auth
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Role'
description: ''
x-internal: false
x-vitruvi-sdk: true
put:
operationId: update_security_group
description: Update the entire security group record details by its id.
summary: Update Security Group
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this group.
required: true
tags:
- Auth
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Role'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Role'
multipart/form-data:
schema:
$ref: '#/components/schemas/Role'
required: true
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Role'
description: ''
x-internal: false
x-vitruvi-sdk: true
patch:
operationId: patch_security_group
description: Partial update the security group record details by its id.
summary: Patch Security Group
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this group.
required: true
tags:
- Auth
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedRole'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedRole'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedRole'
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Role'
description: ''
x-internal: false
x-vitruvi-sdk: true
delete:
operationId: delete_security_group
description: Delete the security group record details by its id.
summary: Delete Security Group
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this group.
required: true
tags:
- Auth
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
responses:
'204':
description: No response body
x-internal: false
x-vitruvi-sdk: true
/auth/token/obtain:
post:
operationId: obtain_token
description: 'API View that receives a POST with a user''s email and password.
Returns a JSON Web Token that can be used for authenticated requests.'
summary: Obtain JWT
tags:
- Auth
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/WebToken'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/WebToken'
multipart/form-data:
schema:
$ref: '#/components/schemas/WebToken'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UserInfo'
description: ''
x-internal: false
x-vitruvi-sdk: true
/auth/token/refresh:
post:
operationId: refresh_token
description: API View that returns a refreshed token (with new expiration) based on existing token.
summary: Refresh JWT
tags:
- Auth
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RefreshToken'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/RefreshToken'
multipart/form-data:
schema:
$ref: '#/components/schemas/RefreshToken'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/RefreshToken'
description: ''
x-internal: false
x-vitruvi-sdk: true
/auth/token/verify:
post:
operationId: verify_token
description: API View that checks the veracity of a token, returning the token if it is valid.
summary: Verify JWT
tags:
- Auth
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VerifyJSONWebToken'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/VerifyJSONWebToken'
multipart/form-data:
schema:
$ref: '#/components/schemas/VerifyJSONWebToken'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VerifyJSONWebToken'
description: ''
x-internal: false
x-vitruvi-sdk: true
/auth/user_info:
get:
operationId: current_user_info
description: Returns the current logged in user information including their profile and permissions.
summary: Get Current User Info
tags:
- Auth
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UserInfo'
description: ''
x-internal: false
x-vitruvi-sdk: true
/auth/users/:
get:
operationId: list_auth_users
description: Returns a list of all accounts.
summary: List Accounts
parameters:
- name: filter_expression
required: false
in: query
description: A generic expression to filter the list with.
schema:
type: string
- in: query
name: is_active
schema:
type: boolean
- in: query
name: is_staff
schema:
type: boolean
- name: limit
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
- name: offset
required: false
in: query
description: The initial index from which to return the results.
schema:
type: integer
- name: ordering
required: false
in: query
description: Which field to use when ordering the results.
schema:
type: string
- name: search
required: false
in: query
description: A search term.
schema:
type: string
tags:
- Auth
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
deprecated: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedAccountList'
description: ''
x-internal: false
x-vitruvi-sdk: false
post:
operationId: create_auth_users
description: Creates a new account record.
summary: Create Account
tags:
- Auth
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Account'
multipart/form-data:
schema:
$ref: '#/components/schemas/Account'
required: true
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
deprecated: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
description: ''
x-internal: false
x-vitruvi-sdk: false
/auth/users/{id}/:
get:
operationId: get_auth_users
description: Retrieve account record using the parameter criteria.
summary: Retrieve Account
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this account.
required: true
tags:
- Auth
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
deprecated: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
description: ''
x-internal: false
x-vitruvi-sdk: false
put:
operationId: update_auth_users
description: Update account record using the parameter criteria.
summary: Update Account
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this account.
required: true
tags:
- Auth
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Account'
multipart/form-data:
schema:
$ref: '#/components/schemas/Account'
required: true
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
deprecated: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
description: ''
x-internal: false
x-vitruvi-sdk: false
patch:
operationId: patch_auth_users
description: Partial update account record using the parameter criteria.
summary: Partial Update Account
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this account.
required: true
tags:
- Auth
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedAccount'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedAccount'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedAccount'
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
deprecated: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
description: ''
x-internal: false
x-vitruvi-sdk: false
delete:
operationId: delete_auth_users
description: Delete account record using the parameter criteria.
summary: Delete Account
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this account.
required: true
tags:
- Auth
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
deprecated: true
responses:
'204':
description: No response body
x-internal: false
x-vitruvi-sdk: false
/auth/v1/workato_embedded_url:
get:
operationId: get_integration_engine_url
tags:
- Auth
security:
- basicAuth: []
- jwtAuth: []
- tokenAuth: []
responses:
'200':
description: No response body
x-internal: false
x-vitruvi-sdk: false
summary: Get integration engine url
x-summary-source: derived
components:
schemas:
BlankEnum:
enum:
- ''
Role:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 150
permissions:
type: array
items:
type: integer
required:
- id
- name
PatchedPermission:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 255
codename:
type: string
maxLength: 100
PatchedAccount:
type: object
properties:
id:
type: integer
readOnly: true
date_joined:
type: string
format: date-time
email:
type: string
format: email
title: Email address
maxLength: 254
first_name:
type:
- string
- 'null'
maxLength: 255
last_name:
type:
- string
- 'null'
maxLength: 255
profile:
$ref: '#/components/schemas/Profile'
PaginatedRoleList:
type: object
properties:
count:
type: integer
example: 123
next:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?offset=400&limit=100
previous:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?offset=200&limit=100
results:
type: array
items:
$ref: '#/components/schemas/Role'
CompanyTypeEnum:
enum:
- 'NO'
- EPC
- SC
type: string
description: '* `NO` - NO
* `EPC` - EPC
* `SC` - SC'
VerifyJSONWebToken:
type: object
description: Check the veracity of an access token.
properties:
token:
type: string
required:
- token
WebToken:
type: object
description: 'Serializer class used to validate a username and password.
''username'' is identified by the custom UserModel.USERNAME_FIELD.
Returns a JSON Web Token that can be used to authenticate later calls.'
properties:
email:
type: string
password:
type: string
writeOnly: true
required:
- email
- password
RefreshToken:
type: object
description: Refresh an access token.
properties:
token:
type: string
required:
- token
FullCrewPersonRole:
type: object
properties:
crew:
type: integer
readOnly: true
crew_name:
type: string
readOnly: true
role:
type: integer
readOnly: true
role_name:
type: string
readOnly: true
required:
- crew
- crew_name
- role
- role_name
Account:
type: object
properties:
id:
type: integer
readOnly: true
date_joined:
type: string
format: date-time
email:
type: string
format: email
title: Email address
maxLength: 254
first_name:
type:
- string
- 'null'
maxLength: 255
last_name:
type:
- string
- 'null'
maxLength: 255
profile:
$ref: '#/components/schemas/Profile'
required:
- email
- id
- profile
UserInfo:
type: object
properties:
token:
type: string
refresh_token:
type: string
user:
type: object
additionalProperties: {}
modules:
type: array
items:
type: string
permissions:
type: string
required:
- modules
- permissions
- refresh_token
- token
- user
PaginatedAccountList:
type: object
properties:
count:
type: integer
example: 123
next:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?offset=400&limit=100
previous:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?offset=200&limit=100
results:
type: array
items:
$ref: '#/components/schemas/Account'
PatchedRole:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 150
permissions:
type: array
items:
type: integer
PaginatedPermissionList:
type: object
properties:
count:
type: integer
example: 123
next:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?offset=400&limit=100
previous:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?offset=200&limit=100
results:
type: array
items:
$ref: '#/components/schemas/Permission'
UserTierEnum:
enum:
- Office User
- Field User
- Read Only
- Support
- Service
- No Login
type: string
description: '* `Office User` - Office User
* `Field User` - Field User
* `Read Only` - Read Only
* `Support` - Support
* `Service` - Service
* `No Login` - No Login'
Permission:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 255
codename:
type: string
maxLength: 100
required:
- codename
- id
- name
Profile:
type: object
properties:
id:
type: integer
readOnly: true
email:
type: string
password:
type: string
writeOnly: true
first_name:
type: string
last_name:
type: string
full_name:
type: string
readOnly: true
avatar:
type:
- string
- 'null'
format: uri
account:
type: integer
readOnly: true
city:
type:
- string
- 'null'
maxLength: 30
region:
type:
- string
- 'null'
maxLength: 30
country:
type:
- string
- 'null'
maxLength: 30
address1:
type:
- string
- 'null'
maxLength: 255
address2:
type:
- string
- 'null'
maxLength: 255
post_code:
type:
- string
- 'null'
maxLength: 10
phone1:
type:
- string
- 'null'
maxLength: 20
phone2:
type:
- string
- 'null'
maxLength: 20
division:
type:
- string
- 'null'
maxLength: 30
notes:
type:
- string
- 'null'
maxLength: 65535
roles:
type: array
items:
type: integer
role_names:
type: string
readOnly: true
company:
type: integer
company_name:
type: string
readOnly: true
company_type:
allOf:
- $ref: '#/components/schemas/CompanyTypeEnum'
readOnly: true
qualifications:
type: array
items:
type: integer
assigned_crews:
type: array
items:
$ref: '#/components/schemas/FullCrewPersonRole'
readOnly: true
supervisor_full_name:
type: string
readOnly: true
supervisor:
type:
- integer
- 'null'
employee_id:
type:
- string
- 'null'
maxLength: 16
crew_leads:
type: array
items:
type: integer
readOnly: true
related_crews_names:
type: string
readOnly: true
user_tier:
oneOf:
- $ref: '#/components/schemas/UserTierEnum'
- $ref: '#/components/schemas/BlankEnum'
full_name_with_email:
type: string
readOnly: true
supervisor_full_name_with_email:
type: string
readOnly: true
is_active:
type: boolean
title: Active
description: Designates whether this user should be treated as active. Unselect this instead of deleting accounts.
readOnly: true
show_coded_labor_material_only:
type: boolean
readOnly: true
required:
- account
- assigned_crews
- company_name
- company_type
- crew_leads
- email
- first_name
- full_name
- full_name_with_email
- id
- is_active
- last_name
- related_crews_names
- role_names
- show_coded_labor_material_only
- supervisor_full_name
- supervisor_full_name_with_email
securitySchemes:
basicAuth:
type: http
scheme: basic
jwtAuth:
type: apiKey
in: header
name: Authorization
description: Token-based authentication with required prefix "JWT"
tokenAuth:
type: http
scheme: bearer
x-provenance:
method: searched
source: https://developers.vitruvi.cc/reference
harvested: '2026-10-19'
tool: harvest-readme-openapi.py
note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
assembled_from:
- https://developers.vitruvi.cc/reference/accounts_payable_items_export.md
- https://developers.vitruvi.cc/reference/accounts_receivable_items_export.md
- https://developers.vitruvi.cc/reference/api_v1_aggregation_design_elements_files_retrieve.md
- https://developers.vitruvi.cc/reference/api_v1_aggregation_mobile_filter_options_retrieve.md
# --- truncated at 32 KB (114 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/vitruvi/refs/heads/main/openapi/vitruvi-auth-api-openapi.yml