Last updated

Understanding Teams in the API

Introduction

A Team represents a group within your organization that participates in the Request for Information (RFI) process. Teams are fundamental to organizing workflows, assigning responsibilities, and facilitating collaboration among different departments or units. By structuring your organization into teams within the API, you can:

  • Assign RFIs to specific groups for handling.
  • Manage permissions and access control at the team level.
  • Streamline communication and workflow among stakeholders.
  • Enhance accountability by tracking which team is responsible for each RFI.

What is a Team?

A team is a resource that encapsulates a group of users or a department within your organization. Each team has:

  • A unique identifier (name): Used to reference the team in API operations.
  • A display name (display_name): A human-readable name for UI and identification purposes.
  • Optional annotations: Key-value pairs for storing additional metadata.
  • Timestamps: Metadata indicating creation, update, and deletion times.
  • An ETag (etag): Used for optimistic concurrency control.

Teams are crucial for assigning roles and responsibilities in the RFI process, ensuring that the right group handles each task.


Roles of Teams in the RFI Process

Teams play specific roles in managing the lifecycle of an RFI:

1. Creator Team

  • Definition: The team that initiates or creates the RFI.
  • Responsibilities:
    • Defines the purpose and requirements of the RFI.
    • Provides initial input data when creating the RFI.
  • Usage: Specified using the creator_team field when creating an RFI or draft.

2. Broker Team

  • Definition: The team that facilitates and coordinates the RFI process.
  • Responsibilities:
    • Manages the workflow between the creator and assignee teams.
    • Reviews responses provided by the assignee team.
    • Approves or rejects answers during the review process.
  • Usage: Specified using the broker_team field when creating an RFI or draft.

3. Assignee Team

  • Definition: The team initially assigned to respond to the RFI.
  • Responsibilities:
    • Provides answers to the questions posed in the RFI.
    • Submits responses for review by the broker team.
  • Usage: Specified using the assignee_team field when creating an RFI or draft.

Managing Teams

Creating a Team

Establish a new team within your organization.

Request

POST /request/v1alpha/teams
Host: api.{customer}.app.identitii.com
Authorization: Bearer {access_token}
Content-Type: application/json

{
  "display_name": "Compliance Team",
  "annotations": {
    "department": "Compliance",
    "location": "Head Office"
  }
}

Response

{
  "name": "teams/compliance-team-id",
  "uid": "unique-team-uid",
  "display_name": "Compliance Team",
  "annotations": {
    "department": "Compliance",
    "location": "Head Office"
  },
  "create_time": "2023-10-01T12:00:00Z",
  /* Other team details */
}

Action

  • Note the name of the team (e.g., teams/compliance-team-id) for future reference.

Listing Teams

Retrieve all teams within your organization.

Request

GET /request/v1alpha/teams
Host: api.{customer}.app.identitii.com
Authorization: Bearer {access_token}

Response

{
  "teams": [
    {
      "name": "teams/compliance-team-id",
      "display_name": "Compliance Team",
      /* Other team details */
    },
    {
      "name": "teams/operations-team-id",
      "display_name": "Operations Team",
      /* Other team details */
    },
    /* Other teams */
  ]
}

Getting a Team

Fetch details of a specific team.

Request

GET /request/v1alpha/teams/{team}
Host: api.{customer}.app.identitii.com
Authorization: Bearer {access_token}
  • Replace {team} with the team ID (e.g., compliance-team-id).

Response

{
  "name": "teams/compliance-team-id",
  "display_name": "Compliance Team",
  "annotations": {
    "department": "Compliance",
    "location": "Head Office"
  },
  /* Other team details */
}

Updating a Team

Modify the information of an existing team.

Request

PATCH /request/v1alpha/teams/{team}
Host: api.{customer}.app.identitii.com
Authorization: Bearer {access_token}
Content-Type: application/json

{
  "display_name": "Global Compliance Team",
  "annotations": {
    "department": "Compliance",
    "location": "Global"
  }
}
  • Include the fields you wish to update.
  • Use the update_mask query parameter to specify which fields to update (optional).

Response

{
  "name": "teams/compliance-team-id",
  "display_name": "Global Compliance Team",
  "annotations": {
    "department": "Compliance",
    "location": "Global"
  },
  /* Other team details */
}

Deleting a Team

Remove a team that is no longer active.

Request

DELETE /request/v1alpha/teams/{team}
Host: api.{customer}.app.identitii.com
Authorization: Bearer {access_token}

Response

  • A successful deletion returns a 200 OK status with an empty body.

Undeleting a Team

Restore a previously deleted team.

Request

POST /request/v1alpha/teams/{team}:undelete
Host: api.{customer}.app.identitii.com
Authorization: Bearer {access_token}
Content-Type: application/json

{
  "name": "teams/{team}"
}

Response

{
  "name": "teams/{team}",
  /* Restored team details */
}

Using Teams in the RFI Process

Assigning Teams When Creating an RFI

When creating an RFI or a draft, you must specify the relevant teams:

Request

POST /request/v1alpha/scenarios/{scenario}/rfis
Host: api.{customer}.app.identitii.com
Authorization: Bearer {access_token}
Content-Type: application/json

{
  "input": { /* RFI input data */ },
  "creator_team": "teams/{creator_team_id}",
  "broker_team": "teams/{broker_team_id}",
  "assignee_team": "teams/{assignee_team_id}"
}
  • Replace {creator_team_id}, {broker_team_id}, and {assignee_team_id} with the appropriate team IDs.

RFI Lifecycle and Team Responsibilities

  • Creation: The creator team initiates the RFI.
  • Assignment: The RFI is assigned to the assignee team for response.
  • Review: The broker team reviews the responses.
  • Completion: Upon approval, the RFI is completed, and responsibility may return to the creator team.

Changing Teams

  • Current Assignee Team: The team currently responsible for the RFI.
  • Reassignment: The current_assignee_team changes automatically based on RFI state transitions (e.g., from assignee team to broker team upon submission for review).

Best Practices

Define Clear Team Roles

  • Distinct Responsibilities: Ensure each team has a well-defined role in the RFI process.
  • Avoid Overlaps: Minimize confusion by preventing overlapping responsibilities between teams.

Use Meaningful Display Names

  • Clarity: Assign descriptive display_name values for easy identification.
  • Consistency: Maintain consistent naming conventions across teams.

Manage Teams Lifecycle

  • Regular Audits: Periodically review teams to ensure they are still needed.
  • Handle Deletions Carefully: Be cautious when deleting teams to avoid disrupting ongoing RFIs.

Utilize Annotations

  • Metadata Storage: Use annotations to store additional information about the team (e.g., department codes, manager names).
  • Custom Attributes: Add organization-specific attributes without affecting the team's functionality.

Additional Considerations

Permissions and Access Control

  • API Credentials: Ensure that your API credentials have the necessary permissions to manage teams.
  • Team-Level Security: Implement access controls to restrict who can create, update, or delete teams.

Error Handling

  • Check for Errors: Always inspect API responses for errors and handle them appropriately.
  • Conflict Resolution: Use etag for optimistic concurrency control to prevent conflicting updates.

Hierarchical Teams (if applicable)

  • Parent Teams: If your organization uses hierarchical teams, utilize the parent_team field to represent team hierarchies.
  • Inheritance: Understand how responsibilities and permissions might inherit from parent to child teams.

Example: Creating and Using Teams

Step 1: Create Teams

Create the Creator Team

POST /request/v1alpha/teams
Authorization: Bearer {access_token}
Content-Type: application/json

{
  "display_name": "Onboarding Team"
}

Create the Broker Team

POST /request/v1alpha/teams
Authorization: Bearer {access_token}
Content-Type: application/json

{
  "display_name": "Compliance Team"
}

Create the Assignee Team

POST /request/v1alpha/teams
Authorization: Bearer {access_token}
Content-Type: application/json

{
  "display_name": "Customer Service Team"
}

Step 2: Assign Teams When Creating an RFI

Create an RFI

POST /request/v1alpha/scenarios/customer-onboarding/rfis
Authorization: Bearer {access_token}
Content-Type: application/json

{
  "input": { /* Customer onboarding data */ },
  "creator_team": "teams/onboarding-team-id",
  "broker_team": "teams/compliance-team-id",
  "assignee_team": "teams/customer-service-team-id"
}

Benefits of Using Teams

  • Organized Workflow: Streamlines the RFI process by clearly defining responsibilities.
  • Enhanced Collaboration: Facilitates communication between different groups.
  • Accountability: Tracks which team is responsible at each stage of the RFI lifecycle.
  • Scalability: Easily manage teams as your organization grows or changes.

Conclusion

Teams are a foundational concept, enabling structured and efficient management of the RFI process. By understanding and effectively utilizing teams, you can enhance collaboration, ensure accountability, and streamline workflows within your organization.


Next Steps

  • Implement Team Management: Integrate team creation and assignment into your onboarding processes.
  • Review Team Roles: Ensure that each team's role in the RFI process aligns with your organizational structure.
  • Explore Advanced Features: Investigate hierarchical teams and custom annotations to further tailor team functionality to your needs.

Note: Replace placeholders like {customer}, {access_token}, {team}, {creator_team_id}, {broker_team_id}, and {assignee_team_id} with your actual values when making API calls.