{
  "service": "gem",
  "displayName": "Gem",
  "categories": [
    "Productivity",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "GEM_API_KEY",
      "description": "Gem team API key sent with the X-API-Key header. Team admins can create API keys from Gem Team Settings: https://www.gem.com/admin.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://www.gem.com",
  "actions": [
    {
      "id": "gem.get_candidate",
      "service": "gem",
      "name": "get_candidate",
      "description": "Get one Gem candidate by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "candidate_id": {
            "type": "string",
            "minLength": 1,
            "description": "The Gem candidate ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for getting a Gem candidate."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "candidate": {
            "type": "object",
            "additionalProperties": true,
            "description": "A Gem object returned by the API."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when getting a Gem candidate."
      }
    },
    {
      "id": "gem.get_project",
      "service": "gem",
      "name": "get_project",
      "description": "Get one Gem project by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "string",
            "minLength": 1,
            "description": "The Gem project ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for getting a Gem project."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "project": {
            "type": "object",
            "additionalProperties": true,
            "description": "A Gem object returned by the API."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when getting a Gem project."
      }
    },
    {
      "id": "gem.get_sequence",
      "service": "gem",
      "name": "get_sequence",
      "description": "Get one Gem sequence by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "sequence_id": {
            "type": "string",
            "minLength": 1,
            "description": "The Gem sequence ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for getting a Gem sequence."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "sequence": {
            "type": "object",
            "additionalProperties": true,
            "description": "A Gem object returned by the API."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when getting a Gem sequence."
      }
    },
    {
      "id": "gem.list_candidates",
      "service": "gem",
      "name": "list_candidates",
      "description": "List candidates in Gem CRM.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "created_after": {
            "type": "integer",
            "minimum": 1,
            "description": "Only return records created after this Unix timestamp in seconds."
          },
          "created_before": {
            "type": "integer",
            "minimum": 1,
            "description": "Only return records created before this Unix timestamp in seconds."
          },
          "sort": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "The sort direction for Gem results."
          },
          "created_by": {
            "type": "string",
            "minLength": 1,
            "description": "Only return candidates added to Gem by this user ID."
          },
          "email": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "Filter records by email address.",
            "format": "email"
          },
          "linked_in_handle": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "Only return candidates with this LinkedIn handle."
          },
          "updated_after": {
            "type": "integer",
            "minimum": 1,
            "description": "Only return candidates updated after this Unix timestamp in seconds."
          },
          "updated_before": {
            "type": "integer",
            "minimum": 1,
            "description": "Only return candidates updated before this Unix timestamp in seconds."
          },
          "candidate_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A Gem candidate ID."
            },
            "description": "Candidate IDs to include. Gem accepts at most 20 IDs.",
            "minItems": 1,
            "maxItems": 20
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The 1-indexed page number to request."
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The number of records to return per page, from 1 to 100."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Gem candidates."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "candidates": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true,
              "description": "A Gem object returned by the API."
            },
            "description": "Gem candidates returned for the requested page."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer",
                "description": "Total number of records across all pages."
              },
              "total_pages": {
                "type": "integer",
                "description": "Total number of pages."
              },
              "first_page": {
                "type": "integer",
                "description": "First available page."
              },
              "last_page": {
                "type": "integer",
                "description": "Last available page."
              },
              "page": {
                "type": "integer",
                "description": "Current page number."
              },
              "previous_page": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Previous page number, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "next_page": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Next page number, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": true,
            "description": "Pagination metadata parsed from the Gem X-Pagination response header."
          }
        },
        "additionalProperties": false,
        "required": [
          "candidates"
        ],
        "description": "The response returned when listing Gem candidates."
      }
    },
    {
      "id": "gem.list_custom_fields",
      "service": "gem",
      "name": "list_custom_fields",
      "description": "List custom fields configured in Gem.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "created_after": {
            "type": "integer",
            "minimum": 1,
            "description": "Only return records created after this Unix timestamp in seconds."
          },
          "created_before": {
            "type": "integer",
            "minimum": 1,
            "description": "Only return records created before this Unix timestamp in seconds."
          },
          "sort": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "The sort direction for Gem results."
          },
          "project_id": {
            "type": "string",
            "minLength": 1,
            "description": "Only return project-scoped fields for this Gem project ID."
          },
          "scope": {
            "type": "string",
            "enum": [
              "team",
              "project"
            ],
            "description": "The custom field scope to return."
          },
          "is_hidden": {
            "type": "boolean",
            "description": "Whether to return hidden custom fields."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Filter custom fields by name."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The 1-indexed page number to request."
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The number of records to return per page, from 1 to 100."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Gem custom fields."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "custom_fields": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true,
              "description": "A Gem object returned by the API."
            },
            "description": "Gem custom fields returned for the requested page."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer",
                "description": "Total number of records across all pages."
              },
              "total_pages": {
                "type": "integer",
                "description": "Total number of pages."
              },
              "first_page": {
                "type": "integer",
                "description": "First available page."
              },
              "last_page": {
                "type": "integer",
                "description": "Last available page."
              },
              "page": {
                "type": "integer",
                "description": "Current page number."
              },
              "previous_page": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Previous page number, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "next_page": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Next page number, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": true,
            "description": "Pagination metadata parsed from the Gem X-Pagination response header."
          }
        },
        "additionalProperties": false,
        "required": [
          "custom_fields"
        ],
        "description": "The response returned when listing Gem custom fields."
      }
    },
    {
      "id": "gem.list_project_candidates",
      "service": "gem",
      "name": "list_project_candidates",
      "description": "List candidate memberships in a Gem project.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "string",
            "minLength": 1,
            "description": "The Gem project ID."
          },
          "added_after": {
            "type": "integer",
            "minimum": 1,
            "description": "Only return memberships added after this Unix timestamp in seconds."
          },
          "added_before": {
            "type": "integer",
            "minimum": 1,
            "description": "Only return memberships added before this Unix timestamp in seconds."
          },
          "sort": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "The sort direction for Gem results."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The 1-indexed page number to request."
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The number of records to return per page, from 1 to 100."
          }
        },
        "additionalProperties": false,
        "required": [
          "project_id"
        ],
        "description": "Input parameters for listing candidates in a Gem project."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "project_candidates": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true,
              "description": "A Gem object returned by the API."
            },
            "description": "Gem project candidate memberships returned for the requested page."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer",
                "description": "Total number of records across all pages."
              },
              "total_pages": {
                "type": "integer",
                "description": "Total number of pages."
              },
              "first_page": {
                "type": "integer",
                "description": "First available page."
              },
              "last_page": {
                "type": "integer",
                "description": "Last available page."
              },
              "page": {
                "type": "integer",
                "description": "Current page number."
              },
              "previous_page": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Previous page number, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "next_page": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Next page number, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": true,
            "description": "Pagination metadata parsed from the Gem X-Pagination response header."
          }
        },
        "additionalProperties": false,
        "required": [
          "project_candidates"
        ],
        "description": "The response returned when listing candidates in a Gem project."
      }
    },
    {
      "id": "gem.list_projects",
      "service": "gem",
      "name": "list_projects",
      "description": "List projects in Gem CRM.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "created_after": {
            "type": "integer",
            "minimum": 1,
            "description": "Only return records created after this Unix timestamp in seconds."
          },
          "created_before": {
            "type": "integer",
            "minimum": 1,
            "description": "Only return records created before this Unix timestamp in seconds."
          },
          "sort": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "The sort direction for Gem results."
          },
          "user_id": {
            "type": "string",
            "minLength": 1,
            "description": "Only return projects owned by this user ID."
          },
          "readable_by": {
            "type": "string",
            "minLength": 1,
            "description": "Only return projects this user ID can read."
          },
          "writable_by": {
            "type": "string",
            "minLength": 1,
            "description": "Only return projects this user ID can update."
          },
          "is_archived": {
            "type": "boolean",
            "description": "Whether to return archived projects."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The 1-indexed page number to request."
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The number of records to return per page, from 1 to 100."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Gem projects."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "projects": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true,
              "description": "A Gem object returned by the API."
            },
            "description": "Gem projects returned for the requested page."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer",
                "description": "Total number of records across all pages."
              },
              "total_pages": {
                "type": "integer",
                "description": "Total number of pages."
              },
              "first_page": {
                "type": "integer",
                "description": "First available page."
              },
              "last_page": {
                "type": "integer",
                "description": "Last available page."
              },
              "page": {
                "type": "integer",
                "description": "Current page number."
              },
              "previous_page": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Previous page number, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "next_page": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Next page number, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": true,
            "description": "Pagination metadata parsed from the Gem X-Pagination response header."
          }
        },
        "additionalProperties": false,
        "required": [
          "projects"
        ],
        "description": "The response returned when listing Gem projects."
      }
    },
    {
      "id": "gem.list_sequences",
      "service": "gem",
      "name": "list_sequences",
      "description": "List outreach sequences in Gem.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "created_after": {
            "type": "integer",
            "minimum": 1,
            "description": "Only return records created after this Unix timestamp in seconds."
          },
          "created_before": {
            "type": "integer",
            "minimum": 1,
            "description": "Only return records created before this Unix timestamp in seconds."
          },
          "sort": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "The sort direction for Gem results."
          },
          "user_id": {
            "type": "string",
            "minLength": 1,
            "description": "Only return sequences owned by this user ID."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The 1-indexed page number to request."
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The number of records to return per page, from 1 to 100."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Gem sequences."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "sequences": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true,
              "description": "A Gem object returned by the API."
            },
            "description": "Gem sequences returned for the requested page."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer",
                "description": "Total number of records across all pages."
              },
              "total_pages": {
                "type": "integer",
                "description": "Total number of pages."
              },
              "first_page": {
                "type": "integer",
                "description": "First available page."
              },
              "last_page": {
                "type": "integer",
                "description": "Last available page."
              },
              "page": {
                "type": "integer",
                "description": "Current page number."
              },
              "previous_page": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Previous page number, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "next_page": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Next page number, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": true,
            "description": "Pagination metadata parsed from the Gem X-Pagination response header."
          }
        },
        "additionalProperties": false,
        "required": [
          "sequences"
        ],
        "description": "The response returned when listing Gem sequences."
      }
    },
    {
      "id": "gem.list_users",
      "service": "gem",
      "name": "list_users",
      "description": "List Gem users visible to the current API key.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "Filter records by email address.",
            "format": "email"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The 1-indexed page number to request."
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The number of records to return per page, from 1 to 100."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Gem users."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true,
              "description": "A Gem object returned by the API."
            },
            "description": "Gem users returned for the requested page."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer",
                "description": "Total number of records across all pages."
              },
              "total_pages": {
                "type": "integer",
                "description": "Total number of pages."
              },
              "first_page": {
                "type": "integer",
                "description": "First available page."
              },
              "last_page": {
                "type": "integer",
                "description": "Last available page."
              },
              "page": {
                "type": "integer",
                "description": "Current page number."
              },
              "previous_page": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Previous page number, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "next_page": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Next page number, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": true,
            "description": "Pagination metadata parsed from the Gem X-Pagination response header."
          }
        },
        "additionalProperties": false,
        "required": [
          "users"
        ],
        "description": "The response returned when listing Gem users."
      }
    }
  ]
}
