{
  "service": "permit_io",
  "displayName": "Permit.io",
  "categories": [
    "Developer Tools",
    "Security"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "permit_key_...",
      "description": "Permit.io API key sent as a Bearer token. Copy an environment key from the Projects screen or active environment menu at https://app.permit.io."
    }
  ],
  "homepageUrl": "https://www.permit.io",
  "actions": [
    {
      "id": "permit_io.assign_role",
      "service": "permit_io",
      "name": "assign_role",
      "description": "Assign a Permit.io role to a user.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io project id or key. Required when the connected API key is not environment-scoped."
          },
          "environmentId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io environment id or key. Required when the connected API key is not environment-scoped."
          },
          "user": {
            "type": "string",
            "minLength": 1,
            "description": "The user id or key receiving the role."
          },
          "role": {
            "type": "string",
            "minLength": 1,
            "description": "The role id or key to assign or remove."
          },
          "tenant": {
            "type": "string",
            "minLength": 1,
            "description": "The tenant id or key that scopes the role."
          },
          "resource_instance": {
            "type": "string",
            "minLength": 1,
            "description": "The resource instance id, or resource_type:resource_instance key, that scopes the role."
          }
        },
        "additionalProperties": false,
        "required": [
          "user",
          "role"
        ],
        "description": "Input parameters for assigning a Permit.io role."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The role assignment id."
          },
          "user": {
            "type": "string",
            "minLength": 1,
            "description": "The assigned user key."
          },
          "role": {
            "type": "string",
            "minLength": 1,
            "description": "The assigned role key."
          },
          "tenant": {
            "type": "string",
            "minLength": 1,
            "description": "The tenant key that scopes the assignment."
          },
          "resource_instance": {
            "type": "string",
            "minLength": 1,
            "description": "The resource instance key that scopes the assignment."
          },
          "user_id": {
            "type": "string",
            "minLength": 1,
            "description": "The assigned user id."
          },
          "role_id": {
            "type": "string",
            "minLength": 1,
            "description": "The assigned role id."
          },
          "tenant_id": {
            "type": "string",
            "minLength": 1,
            "description": "The tenant id that scopes the assignment."
          },
          "organization_id": {
            "type": "string",
            "minLength": 1,
            "description": "The organization id containing the assignment."
          },
          "project_id": {
            "type": "string",
            "minLength": 1,
            "description": "The project id containing the assignment."
          },
          "environment_id": {
            "type": "string",
            "minLength": 1,
            "description": "The environment id containing the assignment."
          },
          "created_at": {
            "type": "string",
            "description": "The assignment creation timestamp.",
            "format": "date-time"
          }
        },
        "additionalProperties": true,
        "description": "A Permit.io role assignment."
      }
    },
    {
      "id": "permit_io.create_tenant",
      "service": "permit_io",
      "name": "create_tenant",
      "description": "Create a tenant in a Permit.io environment.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io project id or key. Required when the connected API key is not environment-scoped."
          },
          "environmentId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io environment id or key. Required when the connected API key is not environment-scoped."
          },
          "key": {
            "type": "string",
            "minLength": 1,
            "description": "The URL-friendly key Permit.io uses to identify the tenant."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The descriptive tenant name."
          },
          "description": {
            "type": "string",
            "description": "The longer tenant description."
          },
          "attributes": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Arbitrary tenant attributes used by attribute-based policies."
          }
        },
        "additionalProperties": false,
        "required": [
          "key",
          "name"
        ],
        "description": "Input parameters for creating a Permit.io tenant."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "minLength": 1,
            "description": "The unique tenant key."
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io tenant id."
          },
          "organization_id": {
            "type": "string",
            "minLength": 1,
            "description": "The organization id containing the tenant."
          },
          "project_id": {
            "type": "string",
            "minLength": 1,
            "description": "The project id containing the tenant."
          },
          "environment_id": {
            "type": "string",
            "minLength": 1,
            "description": "The environment id containing the tenant."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The tenant name."
          },
          "description": {
            "type": "string",
            "description": "The tenant description."
          },
          "attributes": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The tenant's arbitrary authorization attributes."
          },
          "created_at": {
            "type": "string",
            "description": "The tenant creation timestamp.",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "description": "The tenant update timestamp.",
            "format": "date-time"
          },
          "last_action_at": {
            "type": "string",
            "description": "The timestamp of the tenant's latest permission check.",
            "format": "date-time"
          }
        },
        "additionalProperties": true,
        "description": "A Permit.io tenant."
      }
    },
    {
      "id": "permit_io.create_user",
      "service": "permit_io",
      "name": "create_user",
      "description": "Create a user in a Permit.io environment.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io project id or key. Required when the connected API key is not environment-scoped."
          },
          "environmentId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io environment id or key. Required when the connected API key is not environment-scoped."
          },
          "key": {
            "type": "string",
            "minLength": 1,
            "description": "The unique key Permit.io uses to identify the user."
          },
          "email": {
            "type": "string",
            "description": "The user's email address.",
            "format": "email"
          },
          "first_name": {
            "type": "string",
            "minLength": 1,
            "description": "The user's first name."
          },
          "last_name": {
            "type": "string",
            "minLength": 1,
            "description": "The user's last name."
          },
          "attributes": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Arbitrary user attributes used by attribute-based policies."
          }
        },
        "additionalProperties": false,
        "required": [
          "key"
        ],
        "description": "Input parameters for creating a Permit.io user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "minLength": 1,
            "description": "The unique user key."
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io user id."
          },
          "organization_id": {
            "type": "string",
            "minLength": 1,
            "description": "The organization id containing the user."
          },
          "project_id": {
            "type": "string",
            "minLength": 1,
            "description": "The project id containing the user."
          },
          "environment_id": {
            "type": "string",
            "minLength": 1,
            "description": "The environment id containing the user."
          },
          "email": {
            "type": "string",
            "description": "The user's email address.",
            "format": "email"
          },
          "first_name": {
            "type": "string",
            "minLength": 1,
            "description": "The user's first name."
          },
          "last_name": {
            "type": "string",
            "minLength": 1,
            "description": "The user's last name."
          },
          "attributes": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The user's arbitrary authorization attributes."
          },
          "created_at": {
            "type": "string",
            "description": "The user creation timestamp.",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "description": "The user update timestamp.",
            "format": "date-time"
          }
        },
        "additionalProperties": true,
        "description": "A Permit.io user."
      }
    },
    {
      "id": "permit_io.delete_tenant",
      "service": "permit_io",
      "name": "delete_tenant",
      "description": "Delete a Permit.io tenant by id or key.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io project id or key. Required when the connected API key is not environment-scoped."
          },
          "environmentId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io environment id or key. Required when the connected API key is not environment-scoped."
          },
          "tenantId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io tenant id or key."
          }
        },
        "additionalProperties": false,
        "required": [
          "tenantId"
        ],
        "description": "Input parameters for deleting a Permit.io tenant."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean",
            "description": "Whether Permit.io accepted the operation."
          }
        },
        "additionalProperties": false,
        "required": [
          "ok"
        ],
        "description": "The result of a successful empty Permit.io operation."
      }
    },
    {
      "id": "permit_io.delete_user",
      "service": "permit_io",
      "name": "delete_user",
      "description": "Delete a Permit.io user by id or key.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io project id or key. Required when the connected API key is not environment-scoped."
          },
          "environmentId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io environment id or key. Required when the connected API key is not environment-scoped."
          },
          "userId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io user id or key."
          }
        },
        "additionalProperties": false,
        "required": [
          "userId"
        ],
        "description": "Input parameters for deleting a Permit.io user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean",
            "description": "Whether Permit.io accepted the operation."
          }
        },
        "additionalProperties": false,
        "required": [
          "ok"
        ],
        "description": "The result of a successful empty Permit.io operation."
      }
    },
    {
      "id": "permit_io.get_tenant",
      "service": "permit_io",
      "name": "get_tenant",
      "description": "Retrieve a Permit.io tenant by id or key.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io project id or key. Required when the connected API key is not environment-scoped."
          },
          "environmentId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io environment id or key. Required when the connected API key is not environment-scoped."
          },
          "tenantId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io tenant id or key."
          }
        },
        "additionalProperties": false,
        "required": [
          "tenantId"
        ],
        "description": "Input parameters for retrieving a Permit.io tenant."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "minLength": 1,
            "description": "The unique tenant key."
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io tenant id."
          },
          "organization_id": {
            "type": "string",
            "minLength": 1,
            "description": "The organization id containing the tenant."
          },
          "project_id": {
            "type": "string",
            "minLength": 1,
            "description": "The project id containing the tenant."
          },
          "environment_id": {
            "type": "string",
            "minLength": 1,
            "description": "The environment id containing the tenant."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The tenant name."
          },
          "description": {
            "type": "string",
            "description": "The tenant description."
          },
          "attributes": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The tenant's arbitrary authorization attributes."
          },
          "created_at": {
            "type": "string",
            "description": "The tenant creation timestamp.",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "description": "The tenant update timestamp.",
            "format": "date-time"
          },
          "last_action_at": {
            "type": "string",
            "description": "The timestamp of the tenant's latest permission check.",
            "format": "date-time"
          }
        },
        "additionalProperties": true,
        "description": "A Permit.io tenant."
      }
    },
    {
      "id": "permit_io.get_user",
      "service": "permit_io",
      "name": "get_user",
      "description": "Retrieve a Permit.io user by id or key.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io project id or key. Required when the connected API key is not environment-scoped."
          },
          "environmentId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io environment id or key. Required when the connected API key is not environment-scoped."
          },
          "userId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io user id or key."
          }
        },
        "additionalProperties": false,
        "required": [
          "userId"
        ],
        "description": "Input parameters for retrieving a Permit.io user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "minLength": 1,
            "description": "The unique user key."
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io user id."
          },
          "organization_id": {
            "type": "string",
            "minLength": 1,
            "description": "The organization id containing the user."
          },
          "project_id": {
            "type": "string",
            "minLength": 1,
            "description": "The project id containing the user."
          },
          "environment_id": {
            "type": "string",
            "minLength": 1,
            "description": "The environment id containing the user."
          },
          "email": {
            "type": "string",
            "description": "The user's email address.",
            "format": "email"
          },
          "first_name": {
            "type": "string",
            "minLength": 1,
            "description": "The user's first name."
          },
          "last_name": {
            "type": "string",
            "minLength": 1,
            "description": "The user's last name."
          },
          "attributes": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The user's arbitrary authorization attributes."
          },
          "created_at": {
            "type": "string",
            "description": "The user creation timestamp.",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "description": "The user update timestamp.",
            "format": "date-time"
          }
        },
        "additionalProperties": true,
        "description": "A Permit.io user."
      }
    },
    {
      "id": "permit_io.list_role_assignments",
      "service": "permit_io",
      "name": "list_role_assignments",
      "description": "List role assignments in a Permit.io environment.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io project id or key. Required when the connected API key is not environment-scoped."
          },
          "environmentId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io environment id or key. Required when the connected API key is not environment-scoped."
          },
          "user": {
            "type": "string",
            "minLength": 1,
            "description": "Only return assignments for this user id or key."
          },
          "role": {
            "type": "string",
            "minLength": 1,
            "description": "Only return assignments granting this role id or key."
          },
          "tenant": {
            "type": "string",
            "minLength": 1,
            "description": "Only return assignments in this tenant id or key."
          },
          "resource": {
            "type": "string",
            "minLength": 1,
            "description": "Only return assignments for this resource type."
          },
          "resourceInstance": {
            "type": "string",
            "minLength": 1,
            "description": "Only return assignments for this resource instance."
          },
          "detailed": {
            "type": "boolean",
            "description": "Whether to include full user, tenant, and role details."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The page number to retrieve, starting at 1."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The maximum number of records per page."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Permit.io role assignments."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The role assignment id."
                },
                "user": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The assigned user key."
                },
                "role": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The assigned role key."
                },
                "tenant": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The tenant key that scopes the assignment."
                },
                "resource_instance": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The resource instance key that scopes the assignment."
                },
                "user_id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The assigned user id."
                },
                "role_id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The assigned role id."
                },
                "tenant_id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The tenant id that scopes the assignment."
                },
                "organization_id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The organization id containing the assignment."
                },
                "project_id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The project id containing the assignment."
                },
                "environment_id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The environment id containing the assignment."
                },
                "created_at": {
                  "type": "string",
                  "description": "The assignment creation timestamp.",
                  "format": "date-time"
                }
              },
              "additionalProperties": true,
              "description": "A Permit.io role assignment."
            },
            "description": "Permit.io role assignments."
          },
          "total_count": {
            "type": "integer",
            "description": "The total number of matching records."
          },
          "page_count": {
            "type": "integer",
            "description": "The number of pages containing matching records."
          }
        },
        "additionalProperties": false,
        "required": [
          "data",
          "total_count"
        ],
        "description": "The paginated Permit.io role assignment result."
      }
    },
    {
      "id": "permit_io.list_tenants",
      "service": "permit_io",
      "name": "list_tenants",
      "description": "List tenants in a Permit.io environment.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io project id or key. Required when the connected API key is not environment-scoped."
          },
          "environmentId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io environment id or key. Required when the connected API key is not environment-scoped."
          },
          "search": {
            "type": "string",
            "minLength": 1,
            "description": "Text to search for in tenant names or keys."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The page number to retrieve, starting at 1."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The maximum number of records per page."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Permit.io tenants."
      },
      "outputSchema": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "key": {
              "type": "string",
              "minLength": 1,
              "description": "The unique tenant key."
            },
            "id": {
              "type": "string",
              "minLength": 1,
              "description": "The Permit.io tenant id."
            },
            "organization_id": {
              "type": "string",
              "minLength": 1,
              "description": "The organization id containing the tenant."
            },
            "project_id": {
              "type": "string",
              "minLength": 1,
              "description": "The project id containing the tenant."
            },
            "environment_id": {
              "type": "string",
              "minLength": 1,
              "description": "The environment id containing the tenant."
            },
            "name": {
              "type": "string",
              "minLength": 1,
              "description": "The tenant name."
            },
            "description": {
              "type": "string",
              "description": "The tenant description."
            },
            "attributes": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "The tenant's arbitrary authorization attributes."
            },
            "created_at": {
              "type": "string",
              "description": "The tenant creation timestamp.",
              "format": "date-time"
            },
            "updated_at": {
              "type": "string",
              "description": "The tenant update timestamp.",
              "format": "date-time"
            },
            "last_action_at": {
              "type": "string",
              "description": "The timestamp of the tenant's latest permission check.",
              "format": "date-time"
            }
          },
          "additionalProperties": true,
          "description": "A Permit.io tenant."
        },
        "description": "Permit.io tenants."
      }
    },
    {
      "id": "permit_io.list_users",
      "service": "permit_io",
      "name": "list_users",
      "description": "List users in a Permit.io environment.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io project id or key. Required when the connected API key is not environment-scoped."
          },
          "environmentId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io environment id or key. Required when the connected API key is not environment-scoped."
          },
          "search": {
            "type": "string",
            "minLength": 1,
            "description": "Text to search for in user email addresses."
          },
          "role": {
            "type": "string",
            "minLength": 1,
            "description": "Only return users assigned this role id or key."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The page number to retrieve, starting at 1."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The maximum number of records per page."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Permit.io users."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The unique user key."
                },
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The Permit.io user id."
                },
                "organization_id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The organization id containing the user."
                },
                "project_id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The project id containing the user."
                },
                "environment_id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The environment id containing the user."
                },
                "email": {
                  "type": "string",
                  "description": "The user's email address.",
                  "format": "email"
                },
                "first_name": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The user's first name."
                },
                "last_name": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The user's last name."
                },
                "attributes": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The user's arbitrary authorization attributes."
                },
                "created_at": {
                  "type": "string",
                  "description": "The user creation timestamp.",
                  "format": "date-time"
                },
                "updated_at": {
                  "type": "string",
                  "description": "The user update timestamp.",
                  "format": "date-time"
                }
              },
              "additionalProperties": true,
              "description": "A Permit.io user."
            },
            "description": "Permit.io users."
          },
          "total_count": {
            "type": "integer",
            "description": "The total number of matching records."
          },
          "page_count": {
            "type": "integer",
            "description": "The number of pages containing matching records."
          }
        },
        "additionalProperties": false,
        "required": [
          "data",
          "total_count"
        ],
        "description": "The paginated Permit.io user result."
      }
    },
    {
      "id": "permit_io.unassign_role",
      "service": "permit_io",
      "name": "unassign_role",
      "description": "Remove a Permit.io role assignment from a user.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io project id or key. Required when the connected API key is not environment-scoped."
          },
          "environmentId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io environment id or key. Required when the connected API key is not environment-scoped."
          },
          "user": {
            "type": "string",
            "minLength": 1,
            "description": "The user id or key receiving the role."
          },
          "role": {
            "type": "string",
            "minLength": 1,
            "description": "The role id or key to assign or remove."
          },
          "tenant": {
            "type": "string",
            "minLength": 1,
            "description": "The tenant id or key that scopes the role."
          },
          "resource_instance": {
            "type": "string",
            "minLength": 1,
            "description": "The resource instance id, or resource_type:resource_instance key, that scopes the role."
          }
        },
        "additionalProperties": false,
        "required": [
          "user",
          "role"
        ],
        "description": "Input parameters for removing a Permit.io role assignment."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean",
            "description": "Whether Permit.io accepted the operation."
          }
        },
        "additionalProperties": false,
        "required": [
          "ok"
        ],
        "description": "The result of a successful empty Permit.io operation."
      }
    },
    {
      "id": "permit_io.update_tenant",
      "service": "permit_io",
      "name": "update_tenant",
      "description": "Partially update a Permit.io tenant.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io project id or key. Required when the connected API key is not environment-scoped."
          },
          "environmentId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io environment id or key. Required when the connected API key is not environment-scoped."
          },
          "tenantId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io tenant id or key."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The descriptive tenant name."
          },
          "description": {
            "type": "string",
            "description": "The longer tenant description."
          },
          "attributes": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Arbitrary tenant attributes used by attribute-based policies."
          }
        },
        "additionalProperties": false,
        "required": [
          "tenantId"
        ],
        "description": "Input parameters for updating a Permit.io tenant."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "minLength": 1,
            "description": "The unique tenant key."
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io tenant id."
          },
          "organization_id": {
            "type": "string",
            "minLength": 1,
            "description": "The organization id containing the tenant."
          },
          "project_id": {
            "type": "string",
            "minLength": 1,
            "description": "The project id containing the tenant."
          },
          "environment_id": {
            "type": "string",
            "minLength": 1,
            "description": "The environment id containing the tenant."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The tenant name."
          },
          "description": {
            "type": "string",
            "description": "The tenant description."
          },
          "attributes": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The tenant's arbitrary authorization attributes."
          },
          "created_at": {
            "type": "string",
            "description": "The tenant creation timestamp.",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "description": "The tenant update timestamp.",
            "format": "date-time"
          },
          "last_action_at": {
            "type": "string",
            "description": "The timestamp of the tenant's latest permission check.",
            "format": "date-time"
          }
        },
        "additionalProperties": true,
        "description": "A Permit.io tenant."
      }
    },
    {
      "id": "permit_io.update_user",
      "service": "permit_io",
      "name": "update_user",
      "description": "Partially update a Permit.io user.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io project id or key. Required when the connected API key is not environment-scoped."
          },
          "environmentId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io environment id or key. Required when the connected API key is not environment-scoped."
          },
          "userId": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io user id or key."
          },
          "email": {
            "type": "string",
            "description": "The user's email address.",
            "format": "email"
          },
          "first_name": {
            "type": "string",
            "minLength": 1,
            "description": "The user's first name."
          },
          "last_name": {
            "type": "string",
            "minLength": 1,
            "description": "The user's last name."
          },
          "attributes": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Arbitrary user attributes used by attribute-based policies."
          }
        },
        "additionalProperties": false,
        "required": [
          "userId"
        ],
        "description": "Input parameters for updating a Permit.io user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "minLength": 1,
            "description": "The unique user key."
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Permit.io user id."
          },
          "organization_id": {
            "type": "string",
            "minLength": 1,
            "description": "The organization id containing the user."
          },
          "project_id": {
            "type": "string",
            "minLength": 1,
            "description": "The project id containing the user."
          },
          "environment_id": {
            "type": "string",
            "minLength": 1,
            "description": "The environment id containing the user."
          },
          "email": {
            "type": "string",
            "description": "The user's email address.",
            "format": "email"
          },
          "first_name": {
            "type": "string",
            "minLength": 1,
            "description": "The user's first name."
          },
          "last_name": {
            "type": "string",
            "minLength": 1,
            "description": "The user's last name."
          },
          "attributes": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The user's arbitrary authorization attributes."
          },
          "created_at": {
            "type": "string",
            "description": "The user creation timestamp.",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "description": "The user update timestamp.",
            "format": "date-time"
          }
        },
        "additionalProperties": true,
        "description": "A Permit.io user."
      }
    }
  ]
}
