delete_delete_note
ChatGPTMirrors GraphQL deleteNote: only the note's owner or a ringmaster may delete it. Returns 204 on success, 404 when the note isn't visible to the caller's tenant, and 403 when the caller is neither the owner nor a ringmaster.
delete_delete_note
ChatGPTMirrors GraphQL deleteNote: only the note's owner or a ringmaster may delete it. Returns 204 on success, 404 when the note isn't visible to the caller's tenant, and 403 when the caller is neither the owner nor a ringmaster.
delete_delete_note
ChatGPTMirrors GraphQL deleteNote: only the note's owner or a ringmaster may delete it. Returns 204 on success, 404 when the note isn't visible to the caller's tenant, and 403 when the caller is neither the owner nor a ringmaster.
delete_delete_note_association
ChatGPTDelegates to GraphQL removeAssociation with the association's target type + uuid (derived from the row). Returns 204 on success and 404 when the association doesn't exist or doesn't belong to the referenced note.
delete_delete_note_association
ChatGPTDelegates to GraphQL removeAssociation with the association's target type + uuid (derived from the row). Returns 204 on success and 404 when the association doesn't exist or doesn't belong to the referenced note.
delete_delete_note_association
ChatGPTDelegates to GraphQL removeAssociation with the association's target type + uuid (derived from the row). Returns 204 on success and 404 when the association doesn't exist or doesn't belong to the referenced note.
delete_delete_opportunity_association
ChatGPTMirrors GraphQL removeEntityFromOpportunity. Returns 204 on success, 404 if the association doesn't exist or doesn't belong to the referenced opportunity.
delete_delete_opportunity_association
ChatGPTMirrors GraphQL removeEntityFromOpportunity. Returns 204 on success, 404 if the association doesn't exist or doesn't belong to the referenced opportunity.
delete_delete_opportunity_association
ChatGPTMirrors GraphQL removeEntityFromOpportunity. Returns 204 on success, 404 if the association doesn't exist or doesn't belong to the referenced opportunity.
delete_delete_task_association
ChatGPTReturns 404 when the association doesn't exist or doesn't belong to the given task.
delete_delete_task_association
ChatGPTReturns 404 when the association doesn't exist or doesn't belong to the given task.
delete_delete_task_association
ChatGPTReturns 404 when the association doesn't exist or doesn't belong to the given task.
delete_delete_task_endpoint
ChatGPTPERSONAL tasks can only be deleted by their creator; RING tasks can be deleted by any tenant member.
delete_delete_task_endpoint
ChatGPTPERSONAL tasks can only be deleted by their creator; RING tasks can be deleted by any tenant member.
delete_delete_task_endpoint
ChatGPTPERSONAL tasks can only be deleted by their creator; RING tasks can be deleted by any tenant member.
feedback
ChatGPTReport feedback after completing a task or encountering an error. Call this when: (1) a tool returns a 500 error, (2) results seem incorrect or incomplete, (3) you cannot determine which tool to use, or (4) the user wants to share feedback about their experience. Feedback is sent to Rings' analytics system for service improvement.
feedback
ChatGPTReport feedback after completing a task or encountering an error. Call this when: (1) a tool returns a 500 error, (2) results seem incorrect or incomplete, (3) you cannot determine which tool to use, or (4) the user wants to share feedback about their experience. Feedback is sent to Rings' analytics system for service improvement.
feedback
ChatGPTReport feedback after completing a task or encountering an error. Call this when: (1) a tool returns a 500 error, (2) results seem incorrect or incomplete, (3) you cannot determine which tool to use, or (4) the user wants to share feedback about their experience. Feedback is sent to Rings' analytics system for service improvement.
get_get_activity_body
ChatGPTDelegates to the GraphQL emailBody resolver core (undecorated) so access control (grant ownership + explicit EmailAccessPermission) is enforced in exactly one place. Returns: - 404 when the activity / message can't be resolved for the caller - 403 when the caller has no active grant for the activity's owner
get_get_activity_body
ChatGPTDelegates to the GraphQL emailBody resolver core (undecorated) so access control (grant ownership + explicit EmailAccessPermission) is enforced in exactly one place. Returns: - 404 when the activity / message can't be resolved for the caller - 403 when the caller has no active grant for the activity's owner
get_get_activity_body
ChatGPTDelegates to the GraphQL emailBody resolver core (undecorated) so access control (grant ownership + explicit EmailAccessPermission) is enforced in exactly one place. Returns: - 404 when the activity / message can't be resolved for the caller - 403 when the caller has no active grant for the activity's owner
get_get_activity_thread
ChatGPTScoped to the caller's tenant (via tenant_uuid) to prevent cross-tenant thread spills. Only EMAIL activities are returned — calendar events share thread_id=None semantics and would muddy the result set. The response is metadata-only. Clients render a thread by fetching this list and then calling /activities/{id}/body for whichever messages they want to expand.
get_get_activity_thread
ChatGPTScoped to the caller's tenant (via tenant_uuid) to prevent cross-tenant thread spills. Only EMAIL activities are returned — calendar events share thread_id=None semantics and would muddy the result set. The response is metadata-only. Clients render a thread by fetching this list and then calling /activities/{id}/body for whichever messages they want to expand.
get_get_activity_thread
ChatGPTScoped to the caller's tenant (via tenant_uuid) to prevent cross-tenant thread spills. Only EMAIL activities are returned — calendar events share thread_id=None semantics and would muddy the result set. The response is metadata-only. Clients render a thread by fetching this list and then calling /activities/{id}/body for whichever messages they want to expand.
get_get_bulk_pathpower
ChatGPTParameters: - entity: person | company (required) - uuids: comma-separated list of entity UUIDs (max 100) Returns a score entry for every UUID in the input list. UUIDs with no PathPower data are included with score=null and strength_label=null. When score is present, strength_label is one of: weak, moderate, strong, very_strong (lowercase, underscore-separated PathPower bands).
get_get_bulk_pathpower
ChatGPTParameters: - entity: person | company (required) - uuids: comma-separated list of entity UUIDs (max 100) Returns a score entry for every UUID in the input list. UUIDs with no PathPower data are included with score=null and strength_label=null. When score is present, strength_label is one of: weak, moderate, strong, very_strong (lowercase, underscore-separated PathPower bands).
get_get_bulk_pathpower
ChatGPTParameters: - entity: person | company (required) - uuids: comma-separated list of entity UUIDs (max 100) Returns a score entry for every UUID in the input list. UUIDs with no PathPower data are included with score=null and strength_label=null. When score is present, strength_label is one of: weak, moderate, strong, very_strong (lowercase, underscore-separated PathPower bands).
get_get_company
ChatGPTGet a company by UUID.
get_get_company
ChatGPTGet a company by UUID.
get_get_company
ChatGPTGet a company by UUID.
get_get_company_activities
ChatGPTReturns a paginated list of emails and calendar meetings where any participant is associated with the company, ordered by date descending. Filter parameters: - type: email | meeting — omit to return both Pagination: - page: Page number (default: 1) - per_page: Results per page (default: 50)
get_get_company_activities
ChatGPTReturns a paginated list of emails and calendar meetings where any participant is associated with the company, ordered by date descending. Filter parameters: - type: email | meeting — omit to return both Pagination: - page: Page number (default: 1) - per_page: Results per page (default: 50)
get_get_company_activities
ChatGPTReturns a paginated list of emails and calendar meetings where any participant is associated with the company, ordered by date descending. Filter parameters: - type: email | meeting — omit to return both Pagination: - page: Page number (default: 1) - per_page: Results per page (default: 50)
get_get_company_activity_stats
ChatGPTReturns activity counts (emails, meetings, total) across different time periods.
get_get_company_activity_stats
ChatGPTReturns activity counts (emails, meetings, total) across different time periods.
get_get_company_activity_stats
ChatGPTReturns activity counts (emails, meetings, total) across different time periods.
get_get_company_ai_summary
ChatGPTReturns a cached/prior summary when available. Returns 404 when the entity is not found.
get_get_company_ai_summary
ChatGPTReturns a cached/prior summary when available. Returns 404 when the entity is not found.
get_get_company_ai_summary
ChatGPTReturns a cached/prior summary when available. Returns 404 when the entity is not found.
get_get_company_pathpower
ChatGPTReturns a single aggregate score (0.0–1.0) measuring how strongly the tenant's team is connected to this company. This is a numeric strength indicator only — it does NOT return connection paths or introductions. For actual relationship paths ("who knows people at this company"), use GET /v1/companies/{company_uuid}/recommended-paths instead. Returns score=null (not 404) when no PathPower data exists. strength_label uses lowercase PathPower bands: weak, moderate, strong, very_strong (underscore-separated).
get_get_company_pathpower
ChatGPTReturns a single aggregate score (0.0–1.0) measuring how strongly the tenant's team is connected to this company. This is a numeric strength indicator only — it does NOT return connection paths or introductions. For actual relationship paths ("who knows people at this company"), use GET /v1/companies/{company_uuid}/recommended-paths instead. Returns score=null (not 404) when no PathPower data exists. strength_label uses lowercase PathPower bands: weak, moderate, strong, very_strong (underscore-separated).
get_get_company_pathpower
ChatGPTReturns a single aggregate score (0.0–1.0) measuring how strongly the tenant's team is connected to this company. This is a numeric strength indicator only — it does NOT return connection paths or introductions. For actual relationship paths ("who knows people at this company"), use GET /v1/companies/{company_uuid}/recommended-paths instead. Returns score=null (not 404) when no PathPower data exists. strength_label uses lowercase PathPower bands: weak, moderate, strong, very_strong (underscore-separated).
get_get_company_recommended_paths
ChatGPT"who internally knows people at this company" / "best path into" queries. Returns internal team members ranked by connection strength to people at the target company, each with 2-hop relationship paths. Use this to find who on the team can make introductions at a specific company. Each result includes the connector's name, relationship quality (rq), and the path hops linking them to contacts at the company.
get_get_company_recommended_paths
ChatGPT"who internally knows people at this company" / "best path into" queries. Returns internal team members ranked by connection strength to people at the target company, each with 2-hop relationship paths. Use this to find who on the team can make introductions at a specific company. Each result includes the connector's name, relationship quality (rq), and the path hops linking them to contacts at the company.
get_get_company_recommended_paths
ChatGPT"who internally knows people at this company" / "best path into" queries. Returns internal team members ranked by connection strength to people at the target company, each with 2-hop relationship paths. Use this to find who on the team can make introductions at a specific company. Each result includes the connector's name, relationship quality (rq), and the path hops linking them to contacts at the company.
get_get_me
ChatGPTDesigned for MCP and AI agent clients that need to resolve "me", "my", or "I" into concrete UUIDs before calling other endpoints (e.g. fetching activity history or relationship data for the current user). Returns null fields when the API key is tenant-scoped with no user context.
get_get_me
ChatGPTDesigned for MCP and AI agent clients that need to resolve "me", "my", or "I" into concrete UUIDs before calling other endpoints (e.g. fetching activity history or relationship data for the current user). Returns null fields when the API key is tenant-scoped with no user context.
get_get_me
ChatGPTDesigned for MCP and AI agent clients that need to resolve "me", "my", or "I" into concrete UUIDs before calling other endpoints (e.g. fetching activity history or relationship data for the current user). Returns null fields when the API key is tenant-scoped with no user context.
get_get_meeting
ChatGPTGet a single meeting by activity ID if the user is an internal participant.
get_get_meeting
ChatGPTGet a single meeting by activity ID if the user is an internal participant.
get_get_meeting
ChatGPTGet a single meeting by activity ID if the user is an internal participant.
get_get_note
ChatGPTReads the row via Note.by_uuid (tenant/ring scoped) and fetches the HTML body from S3. Missing S3 objects degrade to the stored DB excerpt rather than erroring — matches GraphQL parity.
get_get_note
ChatGPTReads the row via Note.by_uuid (tenant/ring scoped) and fetches the HTML body from S3. Missing S3 objects degrade to the stored DB excerpt rather than erroring — matches GraphQL parity.
get_get_note
ChatGPTReads the row via Note.by_uuid (tenant/ring scoped) and fetches the HTML body from S3. Missing S3 objects degrade to the stored DB excerpt rather than erroring — matches GraphQL parity.
get_get_opportunity
ChatGPTReturns the complete opportunity including stage, type, owner, intro person, associated persons and companies, custom fields, days in current stage, notes/files count, and activity dates. Returns 404 if the opportunity is not visible in the tenant's ring.
get_get_opportunity
ChatGPTReturns the complete opportunity including stage, type, owner, intro person, associated persons and companies, custom fields, days in current stage, notes/files count, and activity dates. Returns 404 if the opportunity is not visible in the tenant's ring.
get_get_opportunity
ChatGPTReturns the complete opportunity including stage, type, owner, intro person, associated persons and companies, custom fields, days in current stage, notes/files count, and activity dates. Returns 404 if the opportunity is not visible in the tenant's ring.
get_get_person
ChatGPTReturns the full person record including: - strongest_relationships: top 2 internal team members with the strongest connection to this person (use for "who internally knows X" without needing recommended-paths) - pathpower: overall relationship strength score (0.0–1.0) - priority_management.rq: the canonical relationship quality score (0–3). Ignore rq_manual and rq_math — use rq as the single source of truth. - Secondary emails, phone numbers, entity list memberships, company affiliation. Returns 404 if the person is not visible in the tenant's Explorer view.
get_get_person
ChatGPTReturns the full person record including: - strongest_relationships: top 2 internal team members with the strongest connection to this person (use for "who internally knows X" without needing recommended-paths) - pathpower: overall relationship strength score (0.0–1.0) - priority_management.rq: the canonical relationship quality score (0–3). Ignore rq_manual and rq_math — use rq as the single source of truth. - Secondary emails, phone numbers, entity list memberships, company affiliation. Returns 404 if the person is not visible in the tenant's Explorer view.
get_get_person
ChatGPTReturns the full person record including: - strongest_relationships: top 2 internal team members with the strongest connection to this person (use for "who internally knows X" without needing recommended-paths) - pathpower: overall relationship strength score (0.0–1.0) - priority_management.rq: the canonical relationship quality score (0–3). Ignore rq_manual and rq_math — use rq as the single source of truth. - Secondary emails, phone numbers, entity list memberships, company affiliation. Returns 404 if the person is not visible in the tenant's Explorer view.
get_get_person_activities
ChatGPTReturns a paginated list of emails and calendar meetings where the person was a participant, ordered by date descending. Each item includes participants, from/to addresses (for emails), start/end times (for meetings), and attachment counts. Filter parameters: - type: email | meeting — omit to return both Pagination: - page: Page number (default: 1) - per_page: Results per page (default: 50)
get_get_person_activities
ChatGPTReturns a paginated list of emails and calendar meetings where the person was a participant, ordered by date descending. Each item includes participants, from/to addresses (for emails), start/end times (for meetings), and attachment counts. Filter parameters: - type: email | meeting — omit to return both Pagination: - page: Page number (default: 1) - per_page: Results per page (default: 50)
get_get_person_activities
ChatGPTReturns a paginated list of emails and calendar meetings where the person was a participant, ordered by date descending. Each item includes participants, from/to addresses (for emails), start/end times (for meetings), and attachment counts. Filter parameters: - type: email | meeting — omit to return both Pagination: - page: Page number (default: 1) - per_page: Results per page (default: 50)
get_get_person_activity_stats
ChatGPTReturns activity counts (emails, meetings, total) across different time periods.
get_get_person_activity_stats
ChatGPTReturns activity counts (emails, meetings, total) across different time periods.
get_get_person_activity_stats
ChatGPTReturns activity counts (emails, meetings, total) across different time periods.
get_get_person_ai_summary
ChatGPTReturns a cached/prior summary when available. Returns 404 when the entity is not found.
get_get_person_ai_summary
ChatGPTReturns a cached/prior summary when available. Returns 404 when the entity is not found.
get_get_person_ai_summary
ChatGPTReturns a cached/prior summary when available. Returns 404 when the entity is not found.
get_get_person_pathpower
ChatGPTReturns a single aggregate score (0.0–1.0) measuring how strongly the tenant's team is connected to this person. This is a numeric strength indicator only — it does NOT return connection paths or introductions. For actual relationship paths ("who knows this person", "introduce me to"), use GET /v1/persons/{person_uuid}/recommended-paths instead. Returns score=null (not 404) when no PathPower data exists. strength_label uses lowercase PathPower bands: weak, moderate, strong, very_strong (underscore-separated, not plain English labels).
get_get_person_pathpower
ChatGPTReturns a single aggregate score (0.0–1.0) measuring how strongly the tenant's team is connected to this person. This is a numeric strength indicator only — it does NOT return connection paths or introductions. For actual relationship paths ("who knows this person", "introduce me to"), use GET /v1/persons/{person_uuid}/recommended-paths instead. Returns score=null (not 404) when no PathPower data exists. strength_label uses lowercase PathPower bands: weak, moderate, strong, very_strong (underscore-separated, not plain English labels).
get_get_person_pathpower
ChatGPTReturns a single aggregate score (0.0–1.0) measuring how strongly the tenant's team is connected to this person. This is a numeric strength indicator only — it does NOT return connection paths or introductions. For actual relationship paths ("who knows this person", "introduce me to"), use GET /v1/persons/{person_uuid}/recommended-paths instead. Returns score=null (not 404) when no PathPower data exists. strength_label uses lowercase PathPower bands: weak, moderate, strong, very_strong (underscore-separated, not plain English labels).
get_get_person_recommended_paths
ChatGPT"who knows this person" / "introduce me to" / "path to" queries. Returns internal team members ranked by connection strength, each with 2-hop relationship paths showing how they connect to the target person. Use this instead of PathPower when you need actual introduction paths, not just a score. Each result includes the connector's name, relationship quality (rq), and the path hops linking them to the target.
get_get_person_recommended_paths
ChatGPT"who knows this person" / "introduce me to" / "path to" queries. Returns internal team members ranked by connection strength, each with 2-hop relationship paths showing how they connect to the target person. Use this instead of PathPower when you need actual introduction paths, not just a score. Each result includes the connector's name, relationship quality (rq), and the path hops linking them to the target.
get_get_person_recommended_paths
ChatGPT"who knows this person" / "introduce me to" / "path to" queries. Returns internal team members ranked by connection strength, each with 2-hop relationship paths showing how they connect to the target person. Use this instead of PathPower when you need actual introduction paths, not just a score. Each result includes the connector's name, relationship quality (rq), and the path hops linking them to the target.
get_get_task_endpoint
ChatGPTReturns the full task including assignments. PERSONAL tasks are only returned for their creator; RING tasks are visible to any tenant member. Returns 404 when the task doesn't exist or isn't visible to the caller.
get_get_task_endpoint
ChatGPTReturns the full task including assignments. PERSONAL tasks are only returned for their creator; RING tasks are visible to any tenant member. Returns 404 when the task doesn't exist or isn't visible to the caller.
get_get_task_endpoint
ChatGPTReturns the full task including assignments. PERSONAL tasks are only returned for their creator; RING tasks are visible to any tenant member. Returns 404 when the task doesn't exist or isn't visible to the caller.
get_list_companies
ChatGPTList companies.
get_list_companies
ChatGPTList companies.
get_list_companies
ChatGPTList companies.
get_list_company_opportunities
ChatGPTSame filtering, sorting, and pagination as GET /v1/opportunities, but scoped to opportunities that have the given company as an association.
get_list_company_opportunities
ChatGPTSame filtering, sorting, and pagination as GET /v1/opportunities, but scoped to opportunities that have the given company as an association.
get_list_company_opportunities
ChatGPTSame filtering, sorting, and pagination as GET /v1/opportunities, but scoped to opportunities that have the given company as an association.
get_list_meetings
ChatGPTOnly meetings where the user appears as an internal calendar participant (same scope as in-app meeting tools) are returned. Supports filtering by date range, participant person/company, and title search. Results are sorted by start time descending (most recent first).
get_list_meetings
ChatGPTOnly meetings where the user appears as an internal calendar participant (same scope as in-app meeting tools) are returned. Supports filtering by date range, participant person/company, and title search. Results are sorted by start time descending (most recent first).
get_list_meetings
ChatGPTOnly meetings where the user appears as an internal calendar participant (same scope as in-app meeting tools) are returned. Supports filtering by date range, participant person/company, and title search. Results are sorted by start time descending (most recent first).
get_list_notes
ChatGPTSupports: - entity_uuid + entity_type: notes associated with that entity (either via the generic associations table or, for PERSON/COMPANY, the legacy rings_*_uuid columns). - search: full-text match over search_vector. - Standard pagination, sort_by, order. Body content is intentionally omitted from the list view; fetch individual notes to get the HTML. The excerpt field is always populated from the cheap DB column.
get_list_notes
ChatGPTSupports: - entity_uuid + entity_type: notes associated with that entity (either via the generic associations table or, for PERSON/COMPANY, the legacy rings_*_uuid columns). - search: full-text match over search_vector. - Standard pagination, sort_by, order. Body content is intentionally omitted from the list view; fetch individual notes to get the HTML. The excerpt field is always populated from the cheap DB column.
get_list_notes
ChatGPTSupports: - entity_uuid + entity_type: notes associated with that entity (either via the generic associations table or, for PERSON/COMPANY, the legacy rings_*_uuid columns). - search: full-text match over search_vector. - Standard pagination, sort_by, order. Body content is intentionally omitted from the list view; fetch individual notes to get the HTML. The excerpt field is always populated from the cheap DB column.
get_list_opportunities
ChatGPTReturns a paginated list of opportunities visible to the tenant ring. Filter parameters (all optional): - name: Case-insensitive substring match on opportunity name - opportunity_type_uuid: Filter by opportunity type UUID (use GET /v1/opportunities to inspect type.uuid on existing records) - opportunity_stage_uuid: Filter by stage UUID Sort parameters: - sort_by: name | created_at | updated_at | value | weighted_value | probability | source_date | intro_date | last_activity_date - order: asc | desc (default: asc) Pagination: - page: Page number (default: 1) - per_page: Results per page (default: 50)
get_list_opportunities
ChatGPTReturns a paginated list of opportunities visible to the tenant ring. Filter parameters (all optional): - name: Case-insensitive substring match on opportunity name - opportunity_type_uuid: Filter by opportunity type UUID (use GET /v1/opportunities to inspect type.uuid on existing records) - opportunity_stage_uuid: Filter by stage UUID Sort parameters: - sort_by: name | created_at | updated_at | value | weighted_value | probability | source_date | intro_date | last_activity_date - order: asc | desc (default: asc) Pagination: - page: Page number (default: 1) - per_page: Results per page (default: 50)
get_list_opportunities
ChatGPTReturns a paginated list of opportunities visible to the tenant ring. Filter parameters (all optional): - name: Case-insensitive substring match on opportunity name - opportunity_type_uuid: Filter by opportunity type UUID (use GET /v1/opportunities to inspect type.uuid on existing records) - opportunity_stage_uuid: Filter by stage UUID Sort parameters: - sort_by: name | created_at | updated_at | value | weighted_value | probability | source_date | intro_date | last_activity_date - order: asc | desc (default: asc) Pagination: - page: Page number (default: 1) - per_page: Results per page (default: 50)
get_list_person_opportunities
ChatGPTSame filtering, sorting, and pagination as GET /v1/opportunities, but scoped to opportunities that have the given person as an association.
get_list_person_opportunities
ChatGPTSame filtering, sorting, and pagination as GET /v1/opportunities, but scoped to opportunities that have the given person as an association.
get_list_person_opportunities
ChatGPTSame filtering, sorting, and pagination as GET /v1/opportunities, but scoped to opportunities that have the given person as an association.
get_list_persons
ChatGPTReturns a paginated list of people visible to the tenant. All filter parameters are optional — omitting all of them returns all persons. Filter parameters: - name: Case-insensitive substring match on person's display name - email: Exact match on primary email address - linkedin_url: Case-insensitive substring match on LinkedIn profile URL - modified_since: ISO 8601 timestamp — return only persons modified at or after this time (e.g. '2025-01-01T00:00:00Z') Sort parameters: - sort_by: name | last_activity_date (default: unsorted) - order: asc | desc (default: asc) Pagination: - page: Page number (default: 1) - per_page: Results per page, max 100 (default: 50)
get_list_persons
ChatGPTReturns a paginated list of people visible to the tenant. All filter parameters are optional — omitting all of them returns all persons. Filter parameters: - name: Case-insensitive substring match on person's display name - email: Exact match on primary email address - linkedin_url: Case-insensitive substring match on LinkedIn profile URL - modified_since: ISO 8601 timestamp — return only persons modified at or after this time (e.g. '2025-01-01T00:00:00Z') Sort parameters: - sort_by: name | last_activity_date (default: unsorted) - order: asc | desc (default: asc) Pagination: - page: Page number (default: 1) - per_page: Results per page, max 100 (default: 50)
get_list_persons
ChatGPTReturns a paginated list of people visible to the tenant. All filter parameters are optional — omitting all of them returns all persons. Filter parameters: - name: Case-insensitive substring match on person's display name - email: Exact match on primary email address - linkedin_url: Case-insensitive substring match on LinkedIn profile URL - modified_since: ISO 8601 timestamp — return only persons modified at or after this time (e.g. '2025-01-01T00:00:00Z') Sort parameters: - sort_by: name | last_activity_date (default: unsorted) - order: asc | desc (default: asc) Pagination: - page: Page number (default: 1) - per_page: Results per page, max 100 (default: 50)
get_list_tasks
ChatGPTReturns a paginated list of tasks visible to the caller. PERSONAL tasks created by other users are excluded. ARCHIVED tasks are excluded unless include_archived=true is passed. Filter parameters (all optional): - status: Filter by task status — must be DRAFT, ACTIVE, COMPLETED, or ARCHIVED - priority: Filter by priority — must be LOW, MEDIUM, or HIGH - assigned_to_uuid: Filter tasks assigned to a specific user UUID - created_by_uuid: Filter tasks created by a specific user UUID - associated_entity_uuid: Filter tasks linked to a specific entity UUID - search: Case-insensitive substring search on task title - include_archived: Set to true to include ARCHIVED tasks (default: false) Sort parameters: - sort_by: created_at | updated_at | due_date | priority (default: updated_at) - order: asc | desc (default: desc)
get_list_tasks
ChatGPTReturns a paginated list of tasks visible to the caller. PERSONAL tasks created by other users are excluded. ARCHIVED tasks are excluded unless include_archived=true is passed. Filter parameters (all optional): - status: Filter by task status — must be DRAFT, ACTIVE, COMPLETED, or ARCHIVED - priority: Filter by priority — must be LOW, MEDIUM, or HIGH - assigned_to_uuid: Filter tasks assigned to a specific user UUID - created_by_uuid: Filter tasks created by a specific user UUID - associated_entity_uuid: Filter tasks linked to a specific entity UUID - search: Case-insensitive substring search on task title - include_archived: Set to true to include ARCHIVED tasks (default: false) Sort parameters: - sort_by: created_at | updated_at | due_date | priority (default: updated_at) - order: asc | desc (default: desc)
get_list_tasks
ChatGPTReturns a paginated list of tasks visible to the caller. PERSONAL tasks created by other users are excluded. ARCHIVED tasks are excluded unless include_archived=true is passed. Filter parameters (all optional): - status: Filter by task status — must be DRAFT, ACTIVE, COMPLETED, or ARCHIVED - priority: Filter by priority — must be LOW, MEDIUM, or HIGH - assigned_to_uuid: Filter tasks assigned to a specific user UUID - created_by_uuid: Filter tasks created by a specific user UUID - associated_entity_uuid: Filter tasks linked to a specific entity UUID - search: Case-insensitive substring search on task title - include_archived: Set to true to include ARCHIVED tasks (default: false) Sort parameters: - sort_by: created_at | updated_at | due_date | priority (default: updated_at) - order: asc | desc (default: desc)
get_list_users
ChatGPTReturns active users that can be used with the x-rings-user-id header to enable per-user context on supported endpoints.
get_list_users
ChatGPTReturns active users that can be used with the x-rings-user-id header to enable per-user context on supported endpoints.
get_list_users
ChatGPTReturns active users that can be used with the x-rings-user-id header to enable per-user context on supported endpoints.
get_lookup_company
ChatGPTLookup a company by domain, LinkedIn URL, or name.
get_lookup_company
ChatGPTLookup a company by domain, LinkedIn URL, or name.
get_lookup_company
ChatGPTLookup a company by domain, LinkedIn URL, or name.
get_lookup_person
ChatGPTSearches across tenant-visible persons (including global records). At least one of email, linkedin_url, or domain must be provided. Returns up to limit matches (default 5, max 20), ranked so tenant-specific records appear before global ones. Parameters: - email: Exact email address match (primary or secondary emails) - linkedin_url: LinkedIn profile URL (e.g. 'https://linkedin.com/in/johndoe') - domain: Email domain to match — e.g. 'acme.com' matches 'alice@acme.com' - limit: Max results to return (default: 5, max: 20)
get_lookup_person
ChatGPTSearches across tenant-visible persons (including global records). At least one of email, linkedin_url, or domain must be provided. Returns up to limit matches (default 5, max 20), ranked so tenant-specific records appear before global ones. Parameters: - email: Exact email address match (primary or secondary emails) - linkedin_url: LinkedIn profile URL (e.g. 'https://linkedin.com/in/johndoe') - domain: Email domain to match — e.g. 'acme.com' matches 'alice@acme.com' - limit: Max results to return (default: 5, max: 20)
get_lookup_person
ChatGPTSearches across tenant-visible persons (including global records). At least one of email, linkedin_url, or domain must be provided. Returns up to limit matches (default 5, max 20), ranked so tenant-specific records appear before global ones. Parameters: - email: Exact email address match (primary or secondary emails) - linkedin_url: LinkedIn profile URL (e.g. 'https://linkedin.com/in/johndoe') - domain: Email domain to match — e.g. 'acme.com' matches 'alice@acme.com' - limit: Max results to return (default: 5, max: 20)
post_add_note_association
ChatGPTDelegates to GraphQL addAssociation with parent_entity_type=NOTE. Idempotent on duplicates: if the association already exists the existing row is returned (still status 201 for client simplicity — matches the opportunity association sub-endpoint).
post_add_note_association
ChatGPTDelegates to GraphQL addAssociation with parent_entity_type=NOTE. Idempotent on duplicates: if the association already exists the existing row is returned (still status 201 for client simplicity — matches the opportunity association sub-endpoint).
post_add_note_association
ChatGPTDelegates to GraphQL addAssociation with parent_entity_type=NOTE. Idempotent on duplicates: if the association already exists the existing row is returned (still status 201 for client simplicity — matches the opportunity association sub-endpoint).
post_add_opportunity_association
ChatGPTMirrors GraphQL addEntityToOpportunity: rejects with 404 when the opportunity or target entity doesn't exist for this tenant. Idempotent on duplicate associations — returns the existing association row rather than erroring.
post_add_opportunity_association
ChatGPTMirrors GraphQL addEntityToOpportunity: rejects with 404 when the opportunity or target entity doesn't exist for this tenant. Idempotent on duplicate associations — returns the existing association row rather than erroring.
post_add_opportunity_association
ChatGPTMirrors GraphQL addEntityToOpportunity: rejects with 404 when the opportunity or target entity doesn't exist for this tenant. Idempotent on duplicate associations — returns the existing association row rather than erroring.
post_add_task_association
ChatGPTLinks a person, company, note, file, or opportunity to the task. TASK-to-TASK links are not allowed. Returns 201 with the association record; if an identical association already exists the existing record is returned (idempotent). Returns 404 if the task is not visible to the caller. entity_type must be one of: PERSON, COMPANY, NOTE, FILE, OPPORTUNITY.
post_add_task_association
ChatGPTLinks a person, company, note, file, or opportunity to the task. TASK-to-TASK links are not allowed. Returns 201 with the association record; if an identical association already exists the existing record is returned (idempotent). Returns 404 if the task is not visible to the caller. entity_type must be one of: PERSON, COMPANY, NOTE, FILE, OPPORTUNITY.
post_add_task_association
ChatGPTLinks a person, company, note, file, or opportunity to the task. TASK-to-TASK links are not allowed. Returns 201 with the association record; if an identical association already exists the existing record is returned (idempotent). Returns 404 if the task is not visible to the caller. entity_type must be one of: PERSON, COMPANY, NOTE, FILE, OPPORTUNITY.
post_create_company
ChatGPTDedupe: if the payload's linkedin_url or website matches an existing tenant-visible company (incl. Crunchbase / Rings Research globals), that record's UUID is reused so the tenant row converges onto the canonical entity instead of forking a duplicate. If no match is found, the downstream write generates a fresh UUID.
post_create_company
ChatGPTDedupe: if the payload's linkedin_url or website matches an existing tenant-visible company (incl. Crunchbase / Rings Research globals), that record's UUID is reused so the tenant row converges onto the canonical entity instead of forking a duplicate. If no match is found, the downstream write generates a fresh UUID.
post_create_company
ChatGPTDedupe: if the payload's linkedin_url or website matches an existing tenant-visible company (incl. Crunchbase / Rings Research globals), that record's UUID is reused so the tenant row converges onto the canonical entity instead of forking a duplicate. If no match is found, the downstream write generates a fresh UUID.
post_create_note
ChatGPTThin wrapper over the GraphQL createNote resolver: full HTML content goes to S3 under the new note UUID, a plain-text excerpt is persisted on the DB row. associations are materialised via the shared create_associations path, silently ignoring entities that can't be resolved for the caller's tenant.
post_create_note
ChatGPTThin wrapper over the GraphQL createNote resolver: full HTML content goes to S3 under the new note UUID, a plain-text excerpt is persisted on the DB row. associations are materialised via the shared create_associations path, silently ignoring entities that can't be resolved for the caller's tenant.
post_create_note
ChatGPTThin wrapper over the GraphQL createNote resolver: full HTML content goes to S3 under the new note UUID, a plain-text excerpt is persisted on the DB row. associations are materialised via the shared create_associations path, silently ignoring entities that can't be resolved for the caller's tenant.
post_create_opportunity
ChatGPTRequired fields: name, type_uuid, stage_uuid. If the user hasn't specified an opportunity type or stage, ask them before calling this endpoint. To discover valid type_uuid and stage_uuid values, call GET /v1/opportunities and inspect the type.uuid and stage.uuid fields on existing records. Optional: details, value, probability, source_date, intro_date, intro_person_uuid, owner_user_uuid, associations (to link persons/companies). Returns the new opportunity UUID and timestamps on success (201).
post_create_opportunity
ChatGPTRequired fields: name, type_uuid, stage_uuid. If the user hasn't specified an opportunity type or stage, ask them before calling this endpoint. To discover valid type_uuid and stage_uuid values, call GET /v1/opportunities and inspect the type.uuid and stage.uuid fields on existing records. Optional: details, value, probability, source_date, intro_date, intro_person_uuid, owner_user_uuid, associations (to link persons/companies). Returns the new opportunity UUID and timestamps on success (201).
post_create_opportunity
ChatGPTRequired fields: name, type_uuid, stage_uuid. If the user hasn't specified an opportunity type or stage, ask them before calling this endpoint. To discover valid type_uuid and stage_uuid values, call GET /v1/opportunities and inspect the type.uuid and stage.uuid fields on existing records. Optional: details, value, probability, source_date, intro_date, intro_person_uuid, owner_user_uuid, associations (to link persons/companies). Returns the new opportunity UUID and timestamps on success (201).
post_create_person
ChatGPTAll fields are optional. If the provided email matches an existing person in the tenant, the existing record is updated in place and its UUID is returned (deduplication by email). Returns the UUID and rings_updated_at timestamp on success.
post_create_person
ChatGPTAll fields are optional. If the provided email matches an existing person in the tenant, the existing record is updated in place and its UUID is returned (deduplication by email). Returns the UUID and rings_updated_at timestamp on success.
post_create_person
ChatGPTAll fields are optional. If the provided email matches an existing person in the tenant, the existing record is updated in place and its UUID is returned (deduplication by email). Returns the UUID and rings_updated_at timestamp on success.
post_create_task_endpoint
ChatGPTCreates a task and optionally assigns it to users and associates it with entities (persons, companies, opportunities, etc.) in a single atomic operation. Returns the new task id on success. Enum values (case-sensitive, uppercase): - status: DRAFT | ACTIVE | COMPLETED | ARCHIVED (default: ACTIVE) - priority: LOW | MEDIUM | HIGH - visibility: RING (all tenant members) | PERSONAL (creator only, default: RING) - reminder_type: MINUTES | HOURS | DAYS | WEEKS (requires reminder_value)
post_create_task_endpoint
ChatGPTCreates a task and optionally assigns it to users and associates it with entities (persons, companies, opportunities, etc.) in a single atomic operation. Returns the new task id on success. Enum values (case-sensitive, uppercase): - status: DRAFT | ACTIVE | COMPLETED | ARCHIVED (default: ACTIVE) - priority: LOW | MEDIUM | HIGH - visibility: RING (all tenant members) | PERSONAL (creator only, default: RING) - reminder_type: MINUTES | HOURS | DAYS | WEEKS (requires reminder_value)
post_create_task_endpoint
ChatGPTCreates a task and optionally assigns it to users and associates it with entities (persons, companies, opportunities, etc.) in a single atomic operation. Returns the new task id on success. Enum values (case-sensitive, uppercase): - status: DRAFT | ACTIVE | COMPLETED | ARCHIVED (default: ACTIVE) - priority: LOW | MEDIUM | HIGH - visibility: RING (all tenant members) | PERSONAL (creator only, default: RING) - reminder_type: MINUTES | HOURS | DAYS | WEEKS (requires reminder_value)
post_lookup_companies_batch
ChatGPTEach entry in queries is resolved independently using the same matching semantics as GET /v1/companies/lookup. Results are returned in the same order as the input.
post_lookup_companies_batch
ChatGPTEach entry in queries is resolved independently using the same matching semantics as GET /v1/companies/lookup. Results are returned in the same order as the input.
post_lookup_companies_batch
ChatGPTEach entry in queries is resolved independently using the same matching semantics as GET /v1/companies/lookup. Results are returned in the same order as the input.
post_lookup_persons_batch
ChatGPTEach entry in queries is matched independently using the same semantics as GET /v1/persons/lookup (email, linkedin_url, or domain match). Results are returned in the same order as the input queries. Entries with no matching criteria return empty matches rather than an error.
post_lookup_persons_batch
ChatGPTEach entry in queries is matched independently using the same semantics as GET /v1/persons/lookup (email, linkedin_url, or domain match). Results are returned in the same order as the input queries. Entries with no matching criteria return empty matches rather than an error.
post_lookup_persons_batch
ChatGPTEach entry in queries is matched independently using the same semantics as GET /v1/persons/lookup (email, linkedin_url, or domain match). Results are returned in the same order as the input queries. Entries with no matching criteria return empty matches rather than an error.
post_search_notes
ChatGPTPerforms hybrid vector + full-text search and returns results grouped by source note with matching text snippets.
post_search_notes
ChatGPTPerforms hybrid vector + full-text search and returns results grouped by source note with matching text snippets.
post_search_notes
ChatGPTPerforms hybrid vector + full-text search and returns results grouped by source note with matching text snippets.
put_update_company
ChatGPTOnly fields provided in the request body are written; other attributes on the existing record are preserved. Returns 404 if the company is not visible in the tenant Explorer view.
put_update_company
ChatGPTOnly fields provided in the request body are written; other attributes on the existing record are preserved. Returns 404 if the company is not visible in the tenant Explorer view.
put_update_company
ChatGPTOnly fields provided in the request body are written; other attributes on the existing record are preserved. Returns 404 if the company is not visible in the tenant Explorer view.
put_update_note
ChatGPTOnly provided fields are written. If content is provided the S3 object is re-uploaded and the excerpt on the DB row is refreshed; omitting content leaves the stored HTML untouched. 404s when the note isn't visible for the caller's tenant.
put_update_note
ChatGPTOnly provided fields are written. If content is provided the S3 object is re-uploaded and the excerpt on the DB row is refreshed; omitting content leaves the stored HTML untouched. 404s when the note isn't visible for the caller's tenant.
put_update_note
ChatGPTOnly provided fields are written. If content is provided the S3 object is re-uploaded and the excerpt on the DB row is refreshed; omitting content leaves the stored HTML untouched. 404s when the note isn't visible for the caller's tenant.
put_update_opportunity
ChatGPTOnly fields present in the request body are written; other attributes on the existing record are preserved. Association edits go through the dedicated associations sub-resource (see below). Returns 404 if the opportunity is not visible under the tenant's ring.
put_update_opportunity
ChatGPTOnly fields present in the request body are written; other attributes on the existing record are preserved. Association edits go through the dedicated associations sub-resource (see below). Returns 404 if the opportunity is not visible under the tenant's ring.
put_update_opportunity
ChatGPTOnly fields present in the request body are written; other attributes on the existing record are preserved. Association edits go through the dedicated associations sub-resource (see below). Returns 404 if the opportunity is not visible under the tenant's ring.
put_update_person
ChatGPTFields omitted from the request body are left unchanged on the existing record. Returns 404 if the person UUID is not visible in the tenant's Explorer view. Returns the UUID and updated rings_updated_at timestamp on success.
put_update_person
ChatGPTFields omitted from the request body are left unchanged on the existing record. Returns 404 if the person UUID is not visible in the tenant's Explorer view. Returns the UUID and updated rings_updated_at timestamp on success.
put_update_person
ChatGPTFields omitted from the request body are left unchanged on the existing record. Returns 404 if the person UUID is not visible in the tenant's Explorer view. Returns the UUID and updated rings_updated_at timestamp on success.
put_update_task_endpoint
ChatGPTOmitted fields are left unchanged on the existing record. To mark a task as done, set status="COMPLETED". To remove a due date, pass clear_due_date=true instead of setting due_date to null. To remove a reminder, pass clear_reminder=true. Enum values (case-sensitive, uppercase): - status: DRAFT | ACTIVE | COMPLETED | ARCHIVED - priority: LOW | MEDIUM | HIGH - visibility: RING | PERSONAL - reminder_type: MINUTES | HOURS | DAYS | WEEKS
put_update_task_endpoint
ChatGPTOmitted fields are left unchanged on the existing record. To mark a task as done, set status="COMPLETED". To remove a due date, pass clear_due_date=true instead of setting due_date to null. To remove a reminder, pass clear_reminder=true. Enum values (case-sensitive, uppercase): - status: DRAFT | ACTIVE | COMPLETED | ARCHIVED - priority: LOW | MEDIUM | HIGH - visibility: RING | PERSONAL - reminder_type: MINUTES | HOURS | DAYS | WEEKS
put_update_task_endpoint
ChatGPTOmitted fields are left unchanged on the existing record. To mark a task as done, set status="COMPLETED". To remove a due date, pass clear_due_date=true instead of setting due_date to null. To remove a reminder, pass clear_reminder=true. Enum values (case-sensitive, uppercase): - status: DRAFT | ACTIVE | COMPLETED | ARCHIVED - priority: LOW | MEDIUM | HIGH - visibility: RING | PERSONAL - reminder_type: MINUTES | HOURS | DAYS | WEEKS