{"openapi":"3.0.3","info":{"title":"Mob CRM Public API","version":"1.0.0","description":"The Mob CRM public REST API.\n\n## Authentication\nAll endpoints (except this documentation) require a personal API token passed as a\nbearer token:\n\n```\nAuthorization: Bearer mob_xxxxxxxxxxxxxxxx\n```\n\nTokens carry **scopes**: `read` is required for safe methods (GET/HEAD/OPTIONS) and\n`write` is required for state-changing methods (POST/PATCH/PUT/DELETE). A token\nlacking the needed scope receives `403 forbidden`.\n\nIn hosted plans the API also requires the `public_api` entitlement; otherwise a\n`403` is returned. Self-hosted instances treat everyone as unlimited.\n\n## Response envelopes\nSuccessful responses wrap the payload in `{ \"data\": ..., \"meta\"?: ... }`.\nErrors return `{ \"error\": { \"code\": string, \"message\": string, \"details\"?: any } }`.\n\n## Pagination\nList endpoints accept `page` and `per_page` (max 100, default 25) query params and\nreturn a `meta` object: `{ total, page, per_page, total_pages }`.\n\n## Rate limiting\nRequests are rate limited per token owner (fixed window). Exceeding the limit\nreturns `429 rate_limited` with a `Retry-After` header (seconds until reset).\n\n## Webhooks\nSubscribers receive signed `POST` deliveries. Each request includes an\n`X-Mob-Signature: sha256=<hmac>` header - an HMAC-SHA256 of the raw JSON body keyed\nby the webhook secret - and an `X-Mob-Event` header. Verify the signature with a\nconstant-time comparison. Supported event names:\n`contact.created`, `contact.updated`, `contact.deleted`, `activity.created`,\n`reminder.due`, `task.created`, `task.completed`. Subscribers may use `*` to\nreceive all events. The delivery body is `{ \"event\": string, \"data\": object, \"timestamp\": string }`.","contact":{"name":"Mob CRM"},"license":{"name":"AGPL-3.0"}},"servers":[{"url":"/api/v1","description":"Public API v1"}],"security":[{"bearerAuth":[]}],"tags":[{"name":"Identity","description":"Token introspection."},{"name":"Contacts","description":"Contacts and their sub-resources."},{"name":"Activities","description":"Logged interactions and activity types."},{"name":"Life Events","description":"Significant contact milestones."},{"name":"Notes","description":"Free-form notes about contacts."},{"name":"Reminders","description":"Recurring or one-time reminders."},{"name":"Timeline","description":"Unified per-contact activity timeline."},{"name":"Gifts","description":"Gift ideas and tracking."},{"name":"Debts","description":"Money owed to or by contacts."},{"name":"Tasks","description":"To-dos, optionally linked to a contact."},{"name":"Tags","description":"User-defined tags."},{"name":"Search","description":"Cross-entity global search."},{"name":"Export","description":"Full data export and statistics."}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"mob_<token>","description":"Personal API token with read and/or write scopes."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","example":"not_found"},"message":{"type":"string"},"details":{}}}}},"PaginationMeta":{"type":"object","required":["total","page","per_page","total_pages"],"properties":{"total":{"type":"integer"},"page":{"type":"integer"},"per_page":{"type":"integer"},"total_pages":{"type":"integer"}}},"DeleteResult":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean"}}},"Contact":{"type":"object","properties":{"id":{"type":"string"},"first_name":{"type":"string"},"middle_name":{"type":"string"},"last_name":{"type":"string"},"nickname":{"type":"string"},"gender":{"type":"string"},"pronouns":{"type":"string"},"birthday_mode":{"type":"string","enum":["full_date","month_day","approximate_age"]},"birthday_date":{"type":"string"},"status":{"type":"string","enum":["active","archived","deceased"]},"is_favorite":{"type":"boolean"},"job_title":{"type":"string"},"company":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}}},"ContactCreate":{"type":"object","required":["first_name"],"properties":{"first_name":{"type":"string"},"middle_name":{"type":"string"},"last_name":{"type":"string"},"nickname":{"type":"string"},"maiden_name":{"type":"string"},"gender":{"type":"string"},"pronouns":{"type":"string"},"avatar_url":{"type":"string"},"birthday_mode":{"type":"string","enum":["full_date","month_day","approximate_age"]},"birthday_date":{"type":"string"},"birthday_month":{"type":"integer","minimum":1,"maximum":12},"birthday_day":{"type":"integer","minimum":1,"maximum":31},"birthday_year_approximate":{"type":"integer"},"status":{"type":"string","enum":["active","archived","deceased"]},"deceased_date":{"type":"string"},"is_favorite":{"type":"boolean"},"met_at_date":{"type":"string"},"met_at_location":{"type":"string"},"met_through_contact_id":{"type":"string"},"met_description":{"type":"string"},"job_title":{"type":"string"},"company":{"type":"string"},"industry":{"type":"string"},"work_notes":{"type":"string"}}},"ContactMethod":{"type":"object","required":["type","value"],"properties":{"type":{"type":"string","enum":["email","phone","whatsapp","telegram","signal","twitter","instagram","facebook","linkedin","website","other"]},"value":{"type":"string"},"label":{"type":"string"},"is_primary":{"type":"boolean"}}},"Address":{"type":"object","properties":{"label":{"type":"string"},"street_line_1":{"type":"string"},"street_line_2":{"type":"string"},"city":{"type":"string"},"state_province":{"type":"string"},"postal_code":{"type":"string"},"country":{"type":"string"},"is_primary":{"type":"boolean"}}},"CustomField":{"type":"object","required":["field_name","field_value"],"properties":{"field_name":{"type":"string"},"field_value":{"type":"string"},"field_group":{"type":"string"}}},"FoodPreferences":{"type":"object","properties":{"dietary_restrictions":{"type":"array","items":{"type":"string"}},"allergies":{"type":"array","items":{"type":"string"}},"favorite_foods":{"type":"array","items":{"type":"string"}},"disliked_foods":{"type":"array","items":{"type":"string"}},"notes":{"type":"string"}}},"Relationship":{"type":"object","required":["related_contact_id","relationship_type"],"properties":{"related_contact_id":{"type":"string"},"relationship_type":{"type":"string"},"notes":{"type":"string"}}},"TagAssignment":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}},"Activity":{"type":"object","required":["type","occurred_at","participant_contact_ids"],"properties":{"type":{"type":"string","enum":["phone_call","video_call","text_message","in_person","email","activity","other"]},"title":{"type":"string"},"description":{"type":"string"},"occurred_at":{"type":"string"},"duration_minutes":{"type":"integer"},"location":{"type":"string"},"activity_type_id":{"type":"string"},"participant_contact_ids":{"type":"array","items":{"type":"string"}}}},"ActivityType":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"category":{"type":"string"},"icon":{"type":"string"}}},"LifeEvent":{"type":"object","required":["contact_id","event_type","title"],"properties":{"contact_id":{"type":"string"},"event_type":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"occurred_at":{"type":"string"},"related_contact_ids":{"type":"array","items":{"type":"string"}}}},"Note":{"type":"object","required":["contact_id","body"],"properties":{"contact_id":{"type":"string"},"title":{"type":"string"},"body":{"type":"string"},"is_pinned":{"type":"boolean"}}},"Reminder":{"type":"object","required":["contact_id","title","reminder_date"],"properties":{"contact_id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"reminder_date":{"type":"string"},"frequency":{"type":"string","enum":["one_time","weekly","monthly","yearly"]}}},"Gift":{"type":"object","required":["contact_id","name","direction"],"properties":{"contact_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"url":{"type":"string"},"estimated_cost":{"type":"number"},"currency":{"type":"string"},"occasion":{"type":"string"},"status":{"type":"string","enum":["idea","planned","purchased","given","received"]},"direction":{"type":"string","enum":["giving","receiving"]},"date":{"type":"string"}}},"Debt":{"type":"object","required":["contact_id","amount","direction"],"properties":{"contact_id":{"type":"string"},"amount":{"type":"number"},"currency":{"type":"string"},"direction":{"type":"string","enum":["i_owe_them","they_owe_me"]},"reason":{"type":"string"},"incurred_at":{"type":"string"}}},"Task":{"type":"object","required":["title"],"properties":{"contact_id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"due_date":{"type":"string"},"priority":{"type":"string","enum":["low","medium","high"]},"status":{"type":"string","enum":["pending","in_progress","completed"]}}},"Tag":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}}},"responses":{"Unauthorized":{"description":"Missing, malformed, or invalid bearer token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Forbidden":{"description":"Token lacks the required scope or plan entitlement.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"ValidationError":{"description":"Request body or query failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"RateLimited":{"description":"Rate limit exceeded; see the Retry-After header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/me":{"get":{"tags":["Identity"],"summary":"Token introspection","description":"Returns the authed user id, token scopes, plan usage and entitlements.","responses":{"200":{"description":"Identity and entitlement info.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contacts":{"get":{"tags":["Contacts"],"summary":"List contacts","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"include_deleted","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"status","in":"query","schema":{"type":"string","enum":["active","archived","deceased"]}},{"name":"is_favorite","in":"query","schema":{"type":"boolean"}},{"name":"search","in":"query","schema":{"type":"string"}},{"name":"company","in":"query","schema":{"type":"string"}},{"name":"tag_name","in":"query","schema":{"type":"string"}},{"name":"sort_by","in":"query","schema":{"type":"string"}},{"name":"sort_order","in":"query","schema":{"type":"string","enum":["asc","desc"]}}],"responses":{"200":{"description":"Paginated contacts.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Contact"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Contacts"],"summary":"Create a contact","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactCreate"}}}},"responses":{"201":{"description":"Created contact.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Contact"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contacts/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"get":{"tags":["Contacts"],"summary":"Get a contact profile","responses":{"200":{"description":"Full contact profile.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Contact"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"tags":["Contacts"],"summary":"Update a contact","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactCreate"}}}},"responses":{"200":{"description":"Updated contact.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Contact"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["Contacts"],"summary":"Soft-delete a contact","responses":{"200":{"description":"Deletion acknowledgement.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contacts/{id}/restore":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"post":{"tags":["Contacts"],"summary":"Restore a soft-deleted contact","responses":{"200":{"description":"Restored contact.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Contact"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contacts/{id}/methods":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"get":{"tags":["Contacts"],"summary":"List contact methods","responses":{"200":{"description":"Contact methods.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Contacts"],"summary":"Add a contact method","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactMethod"}}}},"responses":{"201":{"description":"Created contact method.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contacts/{id}/methods/{methodId}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."},{"name":"methodId","in":"path","required":true,"schema":{"type":"string"},"description":"Contact method id."}],"patch":{"tags":["Contacts"],"summary":"Update a contact method","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactMethod"}}}},"responses":{"200":{"description":"Updated contact method.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["Contacts"],"summary":"Delete a contact method","responses":{"200":{"description":"Deletion acknowledgement.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contacts/{id}/addresses":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"get":{"tags":["Contacts"],"summary":"List addresses","responses":{"200":{"description":"Addresses.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Contacts"],"summary":"Add an address","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Address"}}}},"responses":{"201":{"description":"Created address.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contacts/{id}/addresses/{addressId}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."},{"name":"addressId","in":"path","required":true,"schema":{"type":"string"},"description":"Address id."}],"patch":{"tags":["Contacts"],"summary":"Update an address","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Address"}}}},"responses":{"200":{"description":"Updated address.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["Contacts"],"summary":"Delete an address","responses":{"200":{"description":"Deletion acknowledgement.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contacts/{id}/custom-fields":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"get":{"tags":["Contacts"],"summary":"List custom fields","responses":{"200":{"description":"Custom fields.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Contacts"],"summary":"Add a custom field","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomField"}}}},"responses":{"201":{"description":"Created custom field.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contacts/{id}/custom-fields/{fieldId}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."},{"name":"fieldId","in":"path","required":true,"schema":{"type":"string"},"description":"Custom field id."}],"patch":{"tags":["Contacts"],"summary":"Update a custom field","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomField"}}}},"responses":{"200":{"description":"Updated custom field.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["Contacts"],"summary":"Delete a custom field","responses":{"200":{"description":"Deletion acknowledgement.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contacts/{id}/food-preferences":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"get":{"tags":["Contacts"],"summary":"Get food preferences","responses":{"200":{"description":"Food preferences.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"put":{"tags":["Contacts"],"summary":"Upsert food preferences","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FoodPreferences"}}}},"responses":{"200":{"description":"Upserted food preferences.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contacts/{id}/relationships":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"get":{"tags":["Contacts"],"summary":"List relationships","responses":{"200":{"description":"Relationships.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Contacts"],"summary":"Add a relationship","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Relationship"}}}},"responses":{"201":{"description":"Created relationship.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contacts/{id}/relationships/{relationshipId}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."},{"name":"relationshipId","in":"path","required":true,"schema":{"type":"string"},"description":"Relationship id."}],"delete":{"tags":["Contacts"],"summary":"Delete a relationship","responses":{"200":{"description":"Deletion acknowledgement.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contacts/{id}/tags":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"get":{"tags":["Contacts"],"summary":"List a contact’s tags","responses":{"200":{"description":"Tags.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Contacts"],"summary":"Assign a tag to a contact","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagAssignment"}}}},"responses":{"201":{"description":"Assigned tag.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contacts/{id}/tags/{tagId}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."},{"name":"tagId","in":"path","required":true,"schema":{"type":"string"},"description":"Tag id."}],"delete":{"tags":["Contacts"],"summary":"Unassign a tag from a contact","responses":{"200":{"description":"Deletion acknowledgement.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/activities/types":{"get":{"tags":["Activities"],"summary":"List activity types","responses":{"200":{"description":"Activity types.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Activities"],"summary":"Create an activity type","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityType"}}}},"responses":{"201":{"description":"Created activity type.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/activities/types/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"patch":{"tags":["Activities"],"summary":"Update an activity type","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityType"}}}},"responses":{"200":{"description":"Updated activity type.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["Activities"],"summary":"Delete an activity type","responses":{"200":{"description":"Deletion acknowledgement.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/activities":{"get":{"tags":["Activities"],"summary":"List activities","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"include_deleted","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"contact_id","in":"query","schema":{"type":"string"}},{"name":"type","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated activities.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Activity"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Activities"],"summary":"Create an activity","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Activity"}}}},"responses":{"201":{"description":"Created activity.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Activity"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/activities/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"get":{"tags":["Activities"],"summary":"Get an activity","responses":{"200":{"description":"Activity.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Activity"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"tags":["Activities"],"summary":"Update an activity","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Activity"}}}},"responses":{"200":{"description":"Updated activity.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Activity"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["Activities"],"summary":"Soft-delete an activity","responses":{"200":{"description":"Deletion acknowledgement.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/activities/{id}/restore":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"post":{"tags":["Activities"],"summary":"Restore an activity","responses":{"200":{"description":"Restored activity.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Activity"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/life-events":{"get":{"tags":["Life Events"],"summary":"List a contact’s life events","parameters":[{"name":"contact_id","in":"query","required":true,"schema":{"type":"string"},"description":"Contact the records belong to."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"include_deleted","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Paginated life events.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Life Events"],"summary":"Create a life event","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LifeEvent"}}}},"responses":{"201":{"description":"Created life event.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/LifeEvent"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/life-events/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"get":{"tags":["Life Events"],"summary":"Get a life event","responses":{"200":{"description":"Life event.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/LifeEvent"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"tags":["Life Events"],"summary":"Update a life event","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LifeEvent"}}}},"responses":{"200":{"description":"Updated life event.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/LifeEvent"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["Life Events"],"summary":"Soft-delete a life event","responses":{"200":{"description":"Deletion acknowledgement.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/life-events/{id}/restore":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"post":{"tags":["Life Events"],"summary":"Restore a life event","responses":{"200":{"description":"Restored life event.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/LifeEvent"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/notes/search":{"get":{"tags":["Notes"],"summary":"Search notes","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"include_deleted","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"query","in":"query","schema":{"type":"string"}},{"name":"tag_name","in":"query","schema":{"type":"string"}},{"name":"contact_id","in":"query","schema":{"type":"string"}},{"name":"is_pinned","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Matching notes.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/notes":{"get":{"tags":["Notes"],"summary":"List a contact’s notes","parameters":[{"name":"contact_id","in":"query","required":true,"schema":{"type":"string"},"description":"Contact the records belong to."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"include_deleted","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Paginated notes.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Note"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Notes"],"summary":"Create a note","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Note"}}}},"responses":{"201":{"description":"Created note.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Note"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/notes/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"get":{"tags":["Notes"],"summary":"Get a note","responses":{"200":{"description":"Note.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Note"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"tags":["Notes"],"summary":"Update a note","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Note"}}}},"responses":{"200":{"description":"Updated note.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Note"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["Notes"],"summary":"Soft-delete a note","responses":{"200":{"description":"Deletion acknowledgement.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/notes/{id}/restore":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"post":{"tags":["Notes"],"summary":"Restore a note","responses":{"200":{"description":"Restored note.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Note"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/reminders":{"get":{"tags":["Reminders"],"summary":"List reminders","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"include_deleted","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"contact_id","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated reminders.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Reminder"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Reminders"],"summary":"Create a reminder","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Reminder"}}}},"responses":{"201":{"description":"Created reminder.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Reminder"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/reminders/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"get":{"tags":["Reminders"],"summary":"Get a reminder","responses":{"200":{"description":"Reminder.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Reminder"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"tags":["Reminders"],"summary":"Update a reminder","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Reminder"}}}},"responses":{"200":{"description":"Updated reminder.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Reminder"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["Reminders"],"summary":"Soft-delete a reminder","responses":{"200":{"description":"Deletion acknowledgement.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/reminders/{id}/restore":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"post":{"tags":["Reminders"],"summary":"Restore a reminder","responses":{"200":{"description":"Restored reminder.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/reminders/{id}/complete":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"post":{"tags":["Reminders"],"summary":"Mark a reminder complete","responses":{"200":{"description":"Completed reminder.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/reminders/{id}/snooze":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"post":{"tags":["Reminders"],"summary":"Snooze a reminder","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Reminder"}}}},"responses":{"200":{"description":"Snoozed reminder.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/reminders/{id}/dismiss":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"post":{"tags":["Reminders"],"summary":"Dismiss a reminder","responses":{"200":{"description":"Deletion acknowledgement.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/timeline":{"get":{"tags":["Timeline"],"summary":"Get a contact’s unified timeline","parameters":[{"name":"contact_id","in":"query","required":true,"schema":{"type":"string"},"description":"Contact the records belong to."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"include_deleted","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"entry_type","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated timeline entries.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/gifts/stats":{"get":{"tags":["Gifts"],"summary":"Gift tracker with summary","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"include_deleted","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"direction","in":"query","schema":{"type":"string","enum":["giving","receiving"]}},{"name":"occasion","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Gift tracker entries with summary meta.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/gifts":{"get":{"tags":["Gifts"],"summary":"List gifts","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"include_deleted","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"contact_id","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"direction","in":"query","schema":{"type":"string","enum":["giving","receiving"]}}],"responses":{"200":{"description":"Paginated gifts.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Gift"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Gifts"],"summary":"Create a gift","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Gift"}}}},"responses":{"201":{"description":"Created gift.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Gift"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/gifts/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"get":{"tags":["Gifts"],"summary":"Get a gift","responses":{"200":{"description":"Gift.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Gift"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"tags":["Gifts"],"summary":"Update a gift","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Gift"}}}},"responses":{"200":{"description":"Updated gift.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Gift"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["Gifts"],"summary":"Soft-delete a gift","responses":{"200":{"description":"Deletion acknowledgement.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/gifts/{id}/restore":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"post":{"tags":["Gifts"],"summary":"Restore a gift","responses":{"200":{"description":"Restored gift.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Gift"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/debts":{"get":{"tags":["Debts"],"summary":"List debts","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"include_deleted","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"contact_id","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated debts.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Debt"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Debts"],"summary":"Create a debt","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Debt"}}}},"responses":{"201":{"description":"Created debt.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Debt"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/debts/summary":{"get":{"tags":["Debts"],"summary":"Debt summary for a contact","parameters":[{"name":"contact_id","in":"query","required":true,"schema":{"type":"string"},"description":"Contact the records belong to."}],"responses":{"200":{"description":"Aggregate debt summary.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/debts/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"get":{"tags":["Debts"],"summary":"Get a debt","responses":{"200":{"description":"Debt.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Debt"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"tags":["Debts"],"summary":"Update a debt","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Debt"}}}},"responses":{"200":{"description":"Updated debt.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Debt"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["Debts"],"summary":"Soft-delete a debt","responses":{"200":{"description":"Deletion acknowledgement.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/debts/{id}/restore":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"post":{"tags":["Debts"],"summary":"Restore a debt","responses":{"200":{"description":"Restored debt.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Debt"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/debts/{id}/settle":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"post":{"tags":["Debts"],"summary":"Settle a debt","responses":{"200":{"description":"Settled debt.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Debt"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/tasks":{"get":{"tags":["Tasks"],"summary":"List tasks","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"include_deleted","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"contact_id","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string","enum":["pending","in_progress","completed"]}},{"name":"priority","in":"query","schema":{"type":"string","enum":["low","medium","high"]}}],"responses":{"200":{"description":"Paginated tasks.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Task"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Tasks"],"summary":"Create a task","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"responses":{"201":{"description":"Created task.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Task"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/tasks/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"get":{"tags":["Tasks"],"summary":"Get a task","responses":{"200":{"description":"Task.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Task"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"tags":["Tasks"],"summary":"Update a task","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"responses":{"200":{"description":"Updated task.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Task"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["Tasks"],"summary":"Soft-delete a task","responses":{"200":{"description":"Deletion acknowledgement.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/tasks/{id}/restore":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"post":{"tags":["Tasks"],"summary":"Restore a task","responses":{"200":{"description":"Restored task.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Task"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/tasks/{id}/complete":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"post":{"tags":["Tasks"],"summary":"Mark a task complete","responses":{"200":{"description":"Completed task.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Task"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/tags":{"get":{"tags":["Tags"],"summary":"List tags","responses":{"200":{"description":"Tags.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Tags"],"summary":"Create a tag","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"responses":{"201":{"description":"Created tag.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Tag"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/tags/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Resource identifier."}],"patch":{"tags":["Tags"],"summary":"Update a tag","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"responses":{"200":{"description":"Updated tag.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Tag"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["Tags"],"summary":"Delete a tag","responses":{"200":{"description":"Deletion acknowledgement.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeleteResult"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/search":{"get":{"tags":["Search"],"summary":"Global cross-entity search","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"}},{"name":"entity_types","in":"query","schema":{"type":"string"},"description":"Comma-separated entity types, e.g. contacts,notes."},{"name":"limit_per_type","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Search results grouped by entity, with total_matches meta.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/export":{"get":{"tags":["Export"],"summary":"Full data export","responses":{"200":{"description":"Full JSON export of the user’s CRM data.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/export/stats":{"get":{"tags":["Export"],"summary":"Export statistics","responses":{"200":{"description":"Aggregate statistics.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}