RFI Transitions
This tutorial demonstrates a typical RFI workflow. The steps include:
- Verifying whether a user has permissions to create an RFI (creator or manager workflow role).
- Creating an RFI with draft status.
- Verifying whether a user has permissions to transition an RFI from draft status to submitted status (creator workflow role), and verifying which users can be assigned to the RFI when it is transitioned to submitted status (manager workflow role).
- Transitioning the RFI to submitted status and assigning the RFI to a user.
- Verifying whether a user has permissions to transition an RFI from submitted status to open status (manager workflow role), and verifying which users can be assigned to the RFI when it is transitioned to open status (reviewer workflow role).
- Transitioning the RFI to open status and assigning the RFI to a user.
- Repeating the process for transitioning from open status to answered status and for transitioning from answered status to closed status.
Note that the RFIs API does not use the same names for workflow roles as the Project Admin module. The following table describes the Project Admin module names and the corresponding RFIs API names:
Project Admin Module Workflow Role Name | RFIs API Workflow Role Name |
---|---|
Creator | Subcontractor (projectSC) |
Manager | General Contractor (projectGC) |
Reviewer 1 (EMEA workflow) | Construction Manager (projectCM) |
Reviewer (US workflow) / Reviewer 2 (EMEA workflow) | Architect (projectArch) |
To assign users to workflow roles, open the BIM 360 Project Admin module, select the Services tab, and select the Project Management section.
At each stage in the workflow you can assign an RFI to a user. In order to assign an RFI to a user at specific stages in the workflow, the user needs to have been assigned specific workflow roles. For more details, see the RFIs help documentation.
There are two RFI workflow options you can assign to a project:
- The default RFI workflow which has a single reviewer. The RFIs API uses the term
US
for this workflow. - A workflow with an additional reviewer. The RFIs API uses the term -
EMEA
for this workflow.
This tutorial is using the default RFI workflow with a single reviewer. For information about selecting an RFI workflow for a project, see the RFIs help documentation. Note that currently you cannot use the RFIs API to select an RFI workflow.
Before You Begin
- Register an app
- Acquire a 3-legged OAuth token with
data:create
data:read
anddata:write
scopes. - Verify the container ID for the RFI. In this example, assume the container ID is
e59adc9d-2677-4afc-a800-4bc42101f7d8
.
Step 1: Verify the User’s Permissions
Before the user creates an RFI you need to verify that the user has permissions to create it. Users who have been assigned either creator (projectSC
) or manager (projectGC
) workflow roles can create RFIs. All users in the project are automatically assigned the creator workflow role. To assign creator or manager workflow roles to project members, open the BIM 360 Project Admin module, select the Services tab, and select the Project Management section.
Use the container ID (e59adc9d-2677-4afc-a800-4bc42101f7d8
) to call GET users/me to verify the user’s permissions for creating RFIs.
Note that only users who are members of a project can potentially create and edit RFIs for the project. To check which users are members of a project, call GET projects/users.
Note that if a user is not a project member, the endpoint will return an error.
Request
curl -X GET \
https://developer.api.autodesk.com/bim360/rfis/v2/containers/e59adc9d-2677-4afc-a800-4bc42101f7d8/users/me \
-H 'Authorization: Bearer XZvCJNhdxESsBRIH28MfLf2hKL5O' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json'
Response
{
"user": {
"id": "PER8KQPK2JRT",
"name": "John Smith",
"role": "project_user"
},
"permittedActions": {
"createRfi": {
"permittedStatuses": [
{
"status": "draft",
"requiredAttributes": [
{
"name": "title"
}
]
},
{
"status": "submitted",
"requiredAttributes": [
{
"name": "title"
},
{
"name": "assignedTo",
"values": [
{
"value": "SN8TPJUCUASA",
"type": "user"
},
{
"value": "BXQXL7646C2R",
"type": "user"
}
]
}
]
},
{
"status": "open",
"requiredAttributes": [
{
"name": "title"
},
{
"name": "assignedTo",
"values": [
{
"value": "8QVAQV5PW36V",
"type": "user"
},
{
"value": "LXD6JZWKDFKA",
"type": "user"
},
{
"value": "R7ZNPU3EZRMM",
"type": "user"
},
{
"value": "53SAKU73TL5R",
"type": "user"
}
]
}
]
}
]
}
},
"workflow": {
"roles": [
"projectSC",
"projectGC"
],
"type": "US"
}
}
Find the workflow.roles
list. If it includes either projectSC
, or projectGC
it indicates that the user can create RFIs.
The permittedActions.createRfi.permittedStatuses
section informs you which types of statuses the user can create the RFI with; in this example draft, submitted, and open. It also lists the attributes that are required for each status.
In our example, the user will create the RFI in draft
status, and will include the title
attribute in the request body.
Step 2: Create the RFI
Use the container ID (e59adc9d-2677-4afc-a800-4bc42101f7d8
) to call POST rfis.
Request
curl "https://developer.api.autodesk.com/bim360/rfis/v1/containers/e59adc9d-2677-4afc-a800-4bc42101f7d8/rfis" -d '{
"title": "Pipe Size",
"status": "draft",
"question": "Is the pipe in room 3 the correct size?",
"suggestedAnswer": "No",
"location": {
"description": "Room 3"
},
"dueDate": "2020-07-31T09:35:54.000Z"
}' -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer XZvCJNhdxESsBRIH28MfLf2hKL5O"
Response
{
"createdAt": "2020-05-10T09:35:57.871Z",
"updatedAt": "2020-05-10T09:35:57.871Z",
"id": "5a8e2519-7e91-4c4c-ba5c-685fdbbf021e",
"assignedToType": "user",
"coReviewers": [
],
"distributionList": [
],
"mentionees": [
],
"discipline": [
],
"category": [
],
"containerId": "e59adc9d-2677-4afc-a800-4bc42101f7d8",
"title": "Pipe Size",
"status": "draft",
"question": "",
"dueDate": "2020-05-11T09:35:54.000Z",
"workflowType": "US",
"createdBy": "PER8KQPK2JRT",
"assignedTo": "PER8KQPK2JRT",
"workflowStateId": "57780388-37f8-4505-9758-808adcb9b124",
"pushpinAttributes": null,
"permittedActions": {
"updateRfi": {
"permittedAttributes": [
{
"name": "category"
},
{
"name": "costImpact"
},
{
"name": "discipline"
},
{
"name": "distributionList"
},
{
"name": "dueDate"
},
{
"name": "linkedDocument"
},
{
"name": "linkedDocumentVersion"
},
{
"name": "location"
},
{
"name": "priority"
},
{
"name": "question"
},
{
"name": "reference"
},
{
"name": "scheduleImpact"
},
{
"name": "suggestedAnswer"
},
{
"name": "title"
},
{
"name": "status",
"values": [
{
"value": "submitted"
},
{
"value": "open"
},
{
"value": "void"
}
]
}
],
"permittedStatuses": [
{
"status": "submitted",
"requiredAttributes": [
{
"name": "assignedTo",
"values": [
{
"value": "8QVAQV5PW36V",
"type": "user"
},
{
"value": "BXQXL7646C2R",
"type": "user"
}
]
}
]
},
{
"status": "open",
"requiredAttributes": [
{
"name": "assignedTo",
"values": [
{
"value": "8QVAQV5PW36V",
"type": "user"
},
{
"value": "LXD6JZWKDFKA",
"type": "user"
},
{
"value": "R7ZNPU3EZRMM",
"type": "user"
},
{
"value": "53SAKU73TL5R",
"type": "user"
}
]
}
]
},
{
"status": "void",
"requiredAttributes": [
]
}
]
},
"createComment": true,
"createAttachment": true,
"togglePushpinVisibility": false
}
}
Find the RFI ID (id
) and note the ID (5a8e2519-7e91-4c4c-ba5c-685fdbbf021e
).
The permittedActions.updateRfi.permittedStatuses
section informs you which types of statuses the user can transition the RFI into; in this example submitted, open, or void. It also lists which users you can assign to the RFI when you transition to the new status.
In this example, we will transition the RFI to submitted status. When you transition the RFI to submitted status, you need to assign the RFI to a user. Locate the list of users that can potentially be assigned to the RFI when you transition it to submitted status by finding the submitted
status in permittedActions.updateRfi.permittedStatuses
, and checking the list of users (requiredAttributes.values
).
Note that only assignees with a manager (projectGC
) workflow role will be listed as potential assignees. See the help documentation for more details.
Note the user’s BIM 360 ID. In this example 8QVAQV5PW36V
.
To verify the actual name of the user, call GET projects/:projectId/users/:userId.
Step 3: Transition the RFI to Submitted Status
Use the container ID (e59adc9d-2677-4afc-a800-4bc42101f7d8
), the RFI ID (5a8e2519-7e91-4c4c-ba5c-685fdbbf021e
) and the BIM 360 ID of the assignee (8QVAQV5PW36V
) to call PATCH rfis/:id to transition the RFI from draft status to submitted status.
In this example, the user who created the RFI will also transition the RFI to submitted status.
Request
curl "https://developer.api.autodesk.com/bim360/rfis/v2/containers/e59adc9d-2677-4afc-a800-4bc42101f7d8/rfis/5a8e2519-7e91-4c4c-ba5c-685fdbbf021e" -d '{
"status": "submitted",
"assignedTo": "8QVAQV5PW36V"
}' -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer XZvCJNhdxESsBRIH28MfLf2hKL5O"
Response
200 Success
Content-Type: application/json; charset=utf-8
{
"id": "5a8e2519-7e91-4c4c-ba5c-685fdbbf021e",
"title": "Pipe Size",
"question": "Is the pipe in room 3 the correct size?",
"status": "submitted",
"assignedTo": "8QVAQV5PW36V",
"assignedToType": "user",
"dueDate": "2020-05-11T09:35:54.000Z",
"createdBy": "PER8KQPK2JRT",
"containerId": "e59adc9d-2677-4afc-a800-4bc42101f7d8",
"workflowStateId": "57780388-37f8-4505-9758-808adcb9b124",
"workflowType": "US",
"coReviewers": [
],
"distributionList": [
],
"mentionees": [
],
"discipline": [
],
"category": [
],
"createdAt": "2020-05-10T09:35:57.871Z",
"updatedAt": "2020-05-10T09:35:57.872Z",
"comments": [
],
"attachments": [
],
"managerId": "8QVAQV5PW36V",
"updatedBy": "PER8KQPK2JRT",
"permittedActions": {
"updateRfi": {
"permittedAttributes": [
{
"name": "assignedTo",
"values": [
{
"value": "SN8TPJUCUASA",
"type": "user"
},
{
"value": "BXQXL7646C2R",
"type": "user"
}
]
},
{
"name": "category"
},
{
"name": "coReviewers"
},
{
"name": "costImpact"
},
{
"name": "discipline"
},
{
"name": "distributionList"
},
{
"name": "dueDate"
},
{
"name": "linkedDocument"
},
{
"name": "linkedDocumentVersion"
},
{
"name": "location"
},
{
"name": "priority"
},
{
"name": "question"
},
{
"name": "reference"
},
{
"name": "scheduleImpact"
},
{
"name": "suggestedAnswer"
},
{
"name": "title"
},
{
"name": "status",
"values": [
{
"value": "open"
},
{
"value": "closed"
},
{
"value": "void"
}
]
}
],
"permittedStatuses": [
{
"status": "open",
"requiredAttributes": [
{
"name": "assignedTo",
"values": [
{
"value": "JZ7WLLQUKRAD",
"type": "user"
},
{
"value": "LXD6JZWKDFKA",
"type": "user"
},
{
"value": "R7ZNPU3EZRMM",
"type": "user"
},
{
"value": "53SAKU73TL5R",
"type": "user"
}
]
}
]
},
{
"status": "closed",
"requiredAttributes": [
{
"name": "officialResponse"
}
]
},
{
"status": "void",
"requiredAttributes": [
]
}
]
},
"createComment": true,
"createAttachment": true,
"togglePushpinVisibility": false
}
}
In this example, the permittedActions.updateRfi.permittedStatuses
section informs you that you can potentially transition the RFI into open, closed, or void statuses. We will transition the RFI into open
status, and assign it to JZ7WLLQUKRAD
.
Step 4: Change the User
The user who was assigned to the RFI (8QVAQV5PW36V
) in the previous step when the RFI was transitioned to submitted status needs to transition the RFI to open status. You need to acquire a 3-legged OAuth token for the assignee with data:create
data:read
and data:write
scopes to use in the next few steps.
Step 5: Transition the RFI to Open Status
Use the container ID (e59adc9d-2677-4afc-a800-4bc42101f7d8
), the RFI ID (5a8e2519-7e91-4c4c-ba5c-685fdbbf021e
), and the BIM 360 ID of the assignee (JZ7WLLQUKRAD
) to call PATCH rfis/:id to transition the RFI from submitted status to open status.
Request
curl "https://developer.api.autodesk.com/bim360/rfis/v2/containers/e59adc9d-2677-4afc-a800-4bc42101f7d8/rfis/5a8e2519-7e91-4c4c-ba5c-685fdbbf021e" -d '{
"status": "open",
"assignedTo": "JZ7WLLQUKRAD"
}' -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer l0ZSIsImRhdGE6cmVhZCIsImRhdGE6Y3JlYXRlIiwiZGF0YTpzZWFyY2gi"
Response
200 Success
Content-Type: application/json; charset=utf-8
{
"id": "5a8e2519-7e91-4c4c-ba5c-685fdbbf021e",
"title": "Pipe Size",
"question": "Is the pipe in room 3 the correct size?",
"status": "open",
"assignedTo": "JZ7WLLQUKRAD",
"assignedToType": "user",
"dueDate": "2020-05-11T09:35:54.000Z",
"createdBy": "PER8KQPK2JRT",
"updatedBy": "8QVAQV5PW36V",
"containerId": "80d025dc-6c45-4178-95a8-d4066a28da09",
"workflowStateId": "bf6f2833-6ab1-403d-83f6-2c716fbf8e06",
"workflowType": "US",
"coReviewers": [
],
"distributionList": [
],
"managerId": "8QVAQV5PW36V",
"mentionees": [
],
"discipline": [
],
"category": [
],
"createdAt": "2020-05-10T09:35:57.871Z",
"updatedAt": "2020-05-10T13:13:35.297Z",
"comments": [
],
"attachments": [
],
"customIdentifier": "1",
"openedBy": "8QVAQV5PW36V",
"openedAt": "2020-05-10T14:04:03.328Z",
"reviewerId": "JZ7WLLQUKRAD",
"architectId": "JZ7WLLQUKRAD",
"permittedActions": {
"updateRfi": {
"permittedAttributes": [
{
"name": "assignedTo",
"values": [
{
"value": "8QVAQV5PW36V",
"type": "user"
},
{
"value": "LXD6JZWKDFKA",
"type": "user"
},
{
"value": "R7ZNPU3EZRMM",
"type": "user"
},
{
"value": "53SAKU73TL5R",
"type": "user"
}
]
},
{
"name": "category"
},
{
"name": "coReviewers"
},
{
"name": "costImpact"
},
{
"name": "customIdentifier"
},
{
"name": "discipline"
},
{
"name": "distributionList"
},
{
"name": "dueDate"
},
{
"name": "linkedDocument"
},
{
"name": "linkedDocumentVersion"
},
{
"name": "location"
},
{
"name": "officialResponse"
},
{
"name": "priority"
},
{
"name": "question"
},
{
"name": "reference"
},
{
"name": "scheduleImpact"
},
{
"name": "suggestedAnswer"
},
{
"name": "title"
},
{
"name": "status",
"values": [
{
"value": "answered"
},
{
"value": "rejected"
},
{
"value": "void"
}
]
}
],
"permittedStatuses": [
{
"status": "answered",
"requiredAttributes": [
{
"name": "officialResponse"
}
]
},
{
"status": "rejected",
"requiredAttributes": [
{
"name": "officialResponse"
}
]
},
{
"status": "void",
"requiredAttributes": [
]
}
]
},
"createComment": true,
"createAttachment": true,
"togglePushpinVisibility": false
}
}
Step 6: Transition to Answered Status
Check the response of the previous step to get information about how to transition the RFI to answered
status. The user needs to have been assigned either a reviewer (projectArch
) or manager (projectGC
) workflow role.
Step 7: Transition to Closed Status
Check the response of the previous step to get information about how to transition the RFI to closed
status. The user needs to have been assigned a manager workflow role (projectGC
).