{"openapi": "3.1.0", "info": {"title": "Optery API", "version": "1.0.0", "description": "\n## Introduction<br/>\nIntroducing the Optery API - a robust tool designed to streamline the data broker opt-out process for your users,\nensuring a more secure online experience. In today's digitally-driven world, personal data privacy is critical, and with\nthe increasing influence of data brokers, it is imperative for businesses to deliver a professional, reliable solution\nfor their users. Optery API is the answer to this pressing need.\n\nHarness the power of Optery API for data protection and provide your\nusers with a privacy-focused application that they can rely on. Get started today and join us on the path\ntoward a safer, more secure digital future.\n\n> **Examples in this documentation are illustrative.** When an endpoint shows a UUID or\n> opaque identifier (for example, a `plan` UUID on `POST /members`), fetch a real value\n> from the corresponding discovery endpoint (`GET /plans`, `GET /members`, etc.) before\n> sending it. Copy-pasting an example UUID directly into a request will be rejected.\n\n## Authentication\nEvery request is authenticated with a bearer token in the `Authorization` header:\n\n    Authorization: Bearer sk_live-...\n\nUse an API key prefixed `sk_live-` for production or `sk_test-` for the sandbox. Generate a key from the developer settings in your Optery business dashboard. If you do not see the option, contact your Optery account team or [Optery Support](https://help.optery.com). A request with a missing or invalid credential returns `401`.\n\n## Changelog\nEvery change to this API is recorded on the [changelog](/v1/docs/changelog), newest first. Breaking changes are flagged there.\n\n## Getting started\n1. Get an API key (see Authentication).\n2. Pick an environment with the server selector at the top of this page: Sandbox for testing, Production for live data.\n3. Make your first request. For example, list the plans available to your organization:\n\n        curl https://public-api-sandbox.test.optery.com/v1/plans \\\n          -H \"Authorization: Bearer sk_test-...\"\n\nBuild against the sandbox with an `sk_test-` key, then switch the server selector to Production and use an `sk_live-` key when you go live.\n\n## API reference\nOptery's API is a REST-based service that provides businesses and individuals with an easy way to request removal from the databases of various\ndata brokers. This API uses HTTPS for secure data transfer and JSON data format for simpler data handling.\n\n### Members\nMembers can be added to your organization utilizing the Members API, which also facilitates updating and deleting\nmembers as required. The API enables managing all associated metadata of a member, such as names, emails, relatives,\nprevious addresses, and phone numbers. Incorporating this metadata will assist Optery's matching algorithm in locating\nthe member within data broker databases.\n\n### Subscriptions\nThe Subscriptions API enables the efficient management of member subscriptions,\nincluding viewing available plans, modifying plans, and canceling subscriptions as necessary.\n\n## Errors\nWhen a request fails, the response body is a JSON object with a single `message` field describing the problem:\n\n    { \"message\": \"...\" }\n\nCommon status codes:\n* `400` - the request was rejected by validation or a business rule; `message` explains what to fix.\n* `401` - the credential is missing or invalid.\n* `404` - the requested resource does not exist.\n* `429` - the rate limit was exceeded; see API rate limits below for the headers that tell you when to retry.\n\n## Request tracing\nEvery response includes an `X-Request-ID` header holding a unique id for that request. Quote it when you contact [Optery Support](https://help.optery.com) about a specific call and we can find that exact request in our logs.\n\nTo tie a request back to your own records, send the id yourself in the `X-Request-Id` request header and Optery returns that same value in `X-Request-ID`:\n\n    curl https://public-api-sandbox.test.optery.com/v1/plans \\\n      -H \"Authorization: Bearer sk_test-...\" \\\n      -H \"X-Request-Id: 7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n\nAn id you send must be non-empty, at most 200 characters, and free of spaces, square brackets, and characters outside printable ASCII. Surrounding whitespace is trimmed. A UUID in any common format, a ULID, a hex trace id, or a base64 token all qualify.\n\nA value outside those limits is not an error: the request is served normally and the response carries an Optery-generated id instead. Read the correlation id off the `X-Request-ID` response header rather than assuming it matches what you sent.\n\n## API rate limits\nBurst rate limiting of 30 requests per second is applied to all API requests on a per organization basis.<br/>\nIf the rate limit is exceeded, a 429 status code will be returned.<br/>\nContact us if you need an increase of the rate limit.\n\nEvery response (including 429s) carries headers that let you back off without guessing:\n* `X-RateLimit-Limit`: requests allowed per window for your API key.\n* `X-RateLimit-Remaining`: requests remaining in the current window.\n* `X-RateLimit-Reset`: seconds until the current window resets.\n\nOn a 429 response, a `Retry-After` header is also set with the same value as `X-RateLimit-Reset`. Honor it with exponential backoff for the most efficient use of your quota.\n\n## Resources\n* [Optery Help Center](https://help.optery.com) - guides, FAQs, and troubleshooting.\n* Need something the docs do not cover? Contact your Optery account team or [Optery Support](https://help.optery.com).", "contact": {"name": "Optery Support", "url": "https://help.optery.com"}}, "paths": {"/v1/members/invites": {"post": {"operationId": "invite_member", "summary": "Invite Member", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MemberInvite"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Invite a member to your organization by email, instead of adding them directly.\n\nUnlike `POST /members`, which creates the member's record immediately, this sends the\ninvitee an email with a signup link. The member is only created once they accept and set\ntheir own password -- until then, no member record exists and the invite will not appear\nfrom `GET /members`. Use `GET /members/invites` to check its status, and\n`POST /members/invites/{uuid}/resend` if the invitee needs a new copy of the email.\n\nOnce accepted, the member's `member_type` is `regular`, not `api` -- `GET /members`\ndefaults to `?member_type=api`, so an accepted invite will not show up there unless you\npass `?member_type=regular` or `?member_type=all`.\n\nRequires a **plan**: fetch a valid plan UUID for your organization from `GET /plans`.", "tags": ["Member/Invites"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/InviteMemberRequest"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}, "get": {"operationId": "list_member_invites", "summary": "List Member Invites", "parameters": [{"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 100, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedMemberInvite"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Retrieve every pending, accepted, or expired member invitation sent for your\norganization, regardless of how it was created (this endpoint, the Optery dashboard, or\nSCIM).\n\nAn invitation superseded by a resend does not appear here -- use the `uuid` from the\nresend response instead. Anonymous invites (bulk invite links with no invitee assigned\nyet) also do not appear here, since they have no email or name to return until claimed.\nAn invitation for a non-member organization role (admin, viewer, etc.) also does not\nappear here; this endpoint only surfaces member invitations.\n\nPlease use pagination if your organization has sent over 100 invitations.", "tags": ["Member/Invites"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/invites/{invite_uuid}/resend": {"post": {"operationId": "resend_member_invite", "summary": "Resend Member Invite", "parameters": [{"in": "path", "name": "invite_uuid", "schema": {"format": "uuid", "title": "Invite Uuid", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MemberInvite"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Resend an invitation email with a new link, invalidating the previous one.\n\nThe response's `uuid` will differ from the one you called this endpoint with -- a resend\ncreates a new invitation row and supersedes the old one. Save the new `uuid` for any\nfuture resend or cancel call.\n\nFails with a 404 if no invitation with this `uuid` exists for your organization. Fails\nwith a 400 if the invitation can't be resent: it's an anonymous (unassigned) invite, its\norganization has no billing user configured, or it was already accepted -- its email is\nnow in use by an existing member.", "tags": ["Member/Invites"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/invites/{invite_uuid}/cancel": {"post": {"operationId": "cancel_member_invite", "summary": "Cancel Member Invite", "parameters": [{"in": "path", "name": "invite_uuid", "schema": {"format": "uuid", "title": "Invite Uuid", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Withdraw a pending invitation so the invitee's link stops working.\n\nFails with a 404 if no invitation with this `uuid` exists for your organization, and with\na 400 if the invitation has already been accepted (only a pending, resent, or expired\ninvitation can be cancelled).", "tags": ["Member/Invites"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/members": {"get": {"operationId": "list_members", "summary": "Get Members", "parameters": [{"in": "query", "name": "member_type", "schema": {"default": "api", "examples": ["regular", "api", "delegated", "family", "all"], "type": "string", "enum": ["regular", "api", "delegated", "family", "all"], "title": "MemberType", "description": "Filter values for the member list endpoint: the concrete member types plus `all`."}, "required": false, "examples": ["regular", "api", "delegated", "family", "all"]}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "description": "Group tag for the member, used for filtering a group of members for different actions.", "examples": ["group_1", "group_2", "all", null], "maxLength": 50, "type": ["string", "null"]}, "required": false}, {"in": "query", "name": "email", "schema": {"title": "Email", "examples": ["johndoe@example.com"], "format": "email", "type": ["string", "null"]}, "required": false}, {"in": "query", "name": "ref_id", "schema": {"title": "Ref Id", "description": "Return only the member whose `ref_id` is exactly this value. Your own system's identifier for this member (for example the employee ID from your HR platform), so you can correlate Optery members back to your records without maintaining a mapping table. Unique within your organization, and matched case-sensitively.", "examples": ["EMP-4471"], "maxLength": 255, "type": ["string", "null"]}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 100, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedOrganizationUser"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Retrieve the list of all members.\n\nPlease use pagination if you have over 100 members.\n\nFiltering members by type with **?member_type=<api,delegated,regular,family,all>** values:\n- `api` - will return only users created with the API (via `POST /members`).\n- `delegated` - will return users who are managed by admins.\n- `regular` - will return users added by invite, including via `POST /members/invites`\n  once accepted -- an accepted invite is a `regular` member, not `api`.\n- `family` - will return family members invited by another member.\n- `all` - will return all users for the organization.\n- *leaving blank will default to `api`.*\n\nFiltering members by group tags with **?group_tag=<group tag name>** values:\n- `all` - will return all users for the organization, regardless of their group tag.\n- *leaving blank will default to returning users with no group tags set.*\n\nFiltering a member by email with **?email=<email>** to return only the member with the given email address.\n\nFiltering a member by your own identifier with **?ref_id=<ref_id>** to return only the member whose\n`ref_id` is exactly that value. Matching is case-sensitive. This filter applies *on top of* the\n`member_type` and `group_tag` filters above, both of which default to something narrow, so a\nlookup for a tagged or non-API member needs those defaults widened:\n`?ref_id=EMP-4471&member_type=all&group_tag=all`.", "tags": ["Members"], "security": [{"OpteryAuthBearer": []}]}, "post": {"operationId": "add_member", "summary": "Add Member", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AddMemberCompleteResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Create a member, and initiate a deep exposure scan.\n\nThe member will be assigned with the provided plan from the payload and will start the Opt-Out process automatically\nfor any paid plan.\n\n**country** and **state** must be values from `GET /v1/regions`: send a country's `code` as `country` and one of its\nstates' `value` as `state`. `state` is required for `US` and optional elsewhere. Some countries only accept\nstate names, matched case-sensitively; for example `GB` accepts the county `Kent` but not the region `England`.\n\nThe **group_tag** field is optional and can be used to group members for different actions.\nBy default, its value is `null`. However, if provided, it should be included in every request\nfor the same group of members; otherwise, a `Member not found` error will be raised.\n\nThe **ref_id** field is optional and holds your own identifier for this member, so you can look\nthe member up later with `GET /members?ref_id=<ref_id>` instead of storing the Optery UUID. It\nmust be unique within your organization: reusing a value that another member already holds is\nrejected with a 400 error.\n\n*Member minimum required age is determined by the organization's settings (default: 18 years old).\nIf the member is younger than the required age, the request will be rejected with a 400 error and a\ncorresponding error message.*", "tags": ["Members"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MemberSchemaInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/grouptags": {"get": {"operationId": "list_group_tags", "summary": "Get Group Tags", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/GroupTagListSchema"}, "title": "Response", "type": "array"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Returns a list of all group_tags defined for an organization.", "tags": ["Members"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/{uuid}/grouptag": {"patch": {"operationId": "update_member_group_tag", "summary": "Update Group Tag", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Updates the group_tags field of a member.", "tags": ["Members"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GroupTagSchemaInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/{uuid}": {"get": {"operationId": "get_member", "summary": "Get Member Profile", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "description": "Group tag for the member, used for filtering a group of members for different actions.", "examples": ["group_1", "group_2", "all", null], "maxLength": 50, "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OrganizationUserProfile"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get a specific member profile given the member ID.", "tags": ["Members"], "security": [{"OpteryAuthBearer": []}]}, "patch": {"operationId": "update_member", "summary": "Update Members Profile", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "description": "Group tag for the member, used for filtering a group of members for different actions.", "examples": ["group_1", "group_2", "all", null], "maxLength": 50, "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Updates a specific member profile given a uuid.\n\nFor example: first_name, last_name, city, state, country, birthday, phone.\n\nSending **ref_id** changes your own identifier for this member; it must still be unique within\nyour organization, so a value another member already holds is rejected with a 400 error. Send\n`\"ref_id\": null` to clear it. Omitting the field entirely leaves it unchanged.", "tags": ["Members"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/OrganizationUserProfileInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}, "delete": {"operationId": "delete_member", "summary": "Remove Members", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "description": "Group tag for the member, used for filtering a group of members for different actions.", "examples": ["group_1", "group_2", "all", null], "maxLength": 50, "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Removes a member, this will completely destroy all member's data, records, reports and statistics.\n\nA paid plan will be cancelled.", "tags": ["Members"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/{uuid}/addresses": {"get": {"operationId": "list_member_addresses", "summary": "Get Addresses", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/AddressOutput"}, "title": "Response", "type": "array"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get all addresses of a member. Providing past addresses help our\nmatching algorithm to find more accurate results.", "tags": ["Member/Addresses"], "security": [{"OpteryAuthBearer": []}]}, "post": {"operationId": "add_member_address", "summary": "Add Address", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AddressOutput"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Add an address to a member. Providing past addresses help our\nmatching algorithm to find more accurate results.", "tags": ["Member/Addresses"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AddAddressInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/{uuid}/addresses/{address_uuid}": {"patch": {"operationId": "update_member_address", "summary": "Edit Address", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "path", "name": "address_uuid", "schema": {"format": "uuid", "title": "Address Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Edit an address record of a member.", "tags": ["Member/Addresses"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EditAddressInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}, "delete": {"operationId": "delete_member_address", "summary": "Delete Address", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "path", "name": "address_uuid", "schema": {"format": "uuid", "title": "Address Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Delete a past or known address of a member.", "tags": ["Member/Addresses"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/{uuid}/emails": {"get": {"operationId": "list_member_emails", "summary": "Get Emails", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/EmailOutput"}, "title": "Response", "type": "array"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get all email records for a member.\nThis is useful for the matching algorithm to find more accurate results.", "tags": ["Member/Emails"], "security": [{"OpteryAuthBearer": []}]}, "post": {"operationId": "add_member_email", "summary": "Add Email", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailOutput"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Add a known email record for a member.\nThis is useful for the matching algorithm to find more accurate results.", "tags": ["Member/Emails"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailAddInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/{uuid}/emails/{email_uuid}": {"patch": {"operationId": "update_member_email", "summary": "Edit Email", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "path", "name": "email_uuid", "schema": {"format": "uuid", "title": "Email Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Edit email record of a member.", "tags": ["Member/Emails"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailEditInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}, "delete": {"operationId": "delete_member_email", "summary": "Delete Email", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "path", "name": "email_uuid", "schema": {"format": "uuid", "title": "Email Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Delete email record from a member.", "tags": ["Member/Emails"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/{uuid}/emails/{email_uuid}/scan": {"patch": {"operationId": "set_member_email_scan_flag", "summary": "Use Email For Scan", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "path", "name": "email_uuid", "schema": {"format": "uuid", "title": "Email Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Toggle an email record to be used for scanning.<br/>\nNote: Only one email record can be used for scanning at a time.<br/>", "tags": ["Member/Emails"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailScanInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/{uuid}/names": {"get": {"operationId": "list_member_names", "summary": "Get Names", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/NameOutput"}, "title": "Response", "type": "array"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get the list of additional names for a user, variations\nsuch as maiden name or public known alternative names.\nThis is useful for the matching algorithm to find more accurate results.", "tags": ["Member/Alt. Names"], "security": [{"OpteryAuthBearer": []}]}, "post": {"operationId": "add_member_name", "summary": "Add Name", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NameOutput"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Add a name variation record for a user.\nThis is useful for matching a user who sometimes uses\na different name or registered under an alternative name in the past.", "tags": ["Member/Alt. Names"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AddNameInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/{uuid}/names/{name_uuid}": {"patch": {"operationId": "update_member_name", "summary": "Edit Name", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "path", "name": "name_uuid", "schema": {"format": "uuid", "title": "Name Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "This endpoint is used to edit a name record for a user,\nediting first name, last name or a middle name.", "tags": ["Member/Alt. Names"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EditNameInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}, "delete": {"operationId": "delete_member_name", "summary": "Delete Name", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "path", "name": "name_uuid", "schema": {"format": "uuid", "title": "Name Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Delete an alternative name record for a user.", "tags": ["Member/Alt. Names"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/{uuid}/phones": {"get": {"operationId": "list_member_phones", "summary": "Get Phones", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/PhoneOutput"}, "title": "Response", "type": "array"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get list of phones. This is useful for matching algorithm to find more accurate results.", "tags": ["Member/Phones"], "security": [{"OpteryAuthBearer": []}]}, "post": {"operationId": "add_member_phone", "summary": "Add Phone", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhoneOutput"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Add a known Phone to a member. This is useful for matching algorithm to find more accurate results.", "tags": ["Member/Phones"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhoneAddInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/{uuid}/phones/{phone_uuid}": {"patch": {"operationId": "update_member_phone", "summary": "Edit Phone", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "path", "name": "phone_uuid", "schema": {"format": "uuid", "title": "Phone Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Edit a phone record of a member.", "tags": ["Member/Phones"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhoneEditInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}, "delete": {"operationId": "delete_member_phone", "summary": "Delete Phone", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "path", "name": "phone_uuid", "schema": {"format": "uuid", "title": "Phone Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Delete a phone record from a member.", "tags": ["Member/Phones"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/{uuid}/phones/{phone_uuid}/scan": {"patch": {"operationId": "set_member_phone_scan_flag", "summary": "Use Phone For Scan", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "path", "name": "phone_uuid", "schema": {"format": "uuid", "title": "Phone Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Toggle a phone record to be used for scanning.<br/>\nNote: Only one phone record can be used for scanning at a time.<br/>", "tags": ["Member/Phones"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhoneScanInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/{uuid}/relatives": {"get": {"operationId": "list_member_relatives", "summary": "Get Relatives", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/RelativeOutput"}, "title": "Response", "type": "array"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get list of relatives provided for a member,\nProviding relatives help our matching algorithm finding more accurate results.", "tags": ["Member/Relatives"], "security": [{"OpteryAuthBearer": []}]}, "post": {"operationId": "add_member_relative", "summary": "Add Relative", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RelativeOutput"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Add a relative to a member. This is useful for matching algorithm to find more accurate results.", "tags": ["Member/Relatives"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AddRelativeInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/{uuid}/relatives/{relative_uuid}": {"patch": {"operationId": "update_member_relative", "summary": "Edit Relative", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "path", "name": "relative_uuid", "schema": {"format": "uuid", "title": "Relative Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Edit relative information.", "tags": ["Member/Relatives"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EditRelativeInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}, "delete": {"operationId": "delete_member_relative", "summary": "Delete Relative", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "path", "name": "relative_uuid", "schema": {"format": "uuid", "title": "Relative Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Delete a relative record for a member.", "tags": ["Member/Relatives"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/{uuid}/companies": {"get": {"operationId": "list_member_companies", "summary": "Get Companies", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/CompanyOutput"}, "title": "Response", "type": "array"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get all company records for a member.<br/>\nThis is useful for the matching algorithm to find more accurate results and\nwill significantly help finding lead-generation databrokers profiles", "tags": ["Member/Companies"], "security": [{"OpteryAuthBearer": []}]}, "post": {"operationId": "add_member_company", "summary": "Add Company", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CompanyOutput"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Add a known company record for a member.<br/>\nThis is useful for the matching algorithm to find more accurate results and\nwill significantly help finding lead-generation databrokers profiles", "tags": ["Member/Companies"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CompanyInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/{uuid}/companies/{company_uuid}": {"patch": {"operationId": "update_member_company", "summary": "Edit Company", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "path", "name": "company_uuid", "schema": {"format": "uuid", "title": "Company Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Edit company record of a member.\n\n*note: Setting is_current_company to True will set all other company records to False.", "tags": ["Member/Companies"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CompanyInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}, "delete": {"operationId": "delete_member_company", "summary": "Delete Company", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "path", "name": "company_uuid", "schema": {"format": "uuid", "title": "Company Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Delete company record from a member.", "tags": ["Member/Companies"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/{uuid}/info": {"get": {"operationId": "get_member_additional_info", "summary": "Get Additional Info", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdditionalInfo"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get additional information for a member.", "tags": ["Member/Additional Info"], "security": [{"OpteryAuthBearer": []}]}, "post": {"operationId": "update_member_additional_info", "summary": "Edit Additional Info", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdditionalInfo"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Update additional information for a member.", "tags": ["Member/Additional Info"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdditionalInfo"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}}, "/v1/members/{uuid}/optout-settings": {"get": {"operationId": "get_member_optout_settings", "summary": "Get Optout Settings", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OptoutSettingsResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get the optout settings for a member.", "tags": ["Member/Optout Settings"], "security": [{"OpteryAuthBearer": []}]}, "patch": {"operationId": "update_member_optout_settings", "summary": "Edit Optout Settings", "parameters": [{"in": "path", "name": "uuid", "schema": {"format": "uuid", "title": "Uuid", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OptoutSettingsResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Edit the optout settings for a member.", "tags": ["Member/Optout Settings"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EditOptoutSettingsInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}}, "/v1/databrokers/data": {"get": {"operationId": "list_databrokers", "summary": "Get Data", "parameters": [{"in": "query", "name": "is_expanded_reach_included", "schema": {"default": false, "description": "Whether to include expanded reach databrokers in the results", "title": "Is Expanded Reach Included", "type": "boolean"}, "required": false, "description": "Whether to include expanded reach databrokers in the results"}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 100, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedDatabrokerDataOutput"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get list of databrokers with details about what kind of data they collect.\n\nPlease use pagination to get all results.", "tags": ["Databrokers"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/exports/removal-report": {"post": {"operationId": "start_removal_report_export", "summary": "Generate Removal Report", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RemovalReportExportOutput"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "tags": ["Exports"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RemovalReportExportInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}}, "/v1/exports/removal-report/{export_id}/": {"get": {"operationId": "get_removal_report_export", "summary": "Fetch Removal Report", "parameters": [{"in": "path", "name": "export_id", "schema": {"title": "Export Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RemovalReportExportOutput"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "tags": ["Exports"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/optouts/{member_uuid}/statistics": {"get": {"operationId": "get_member_statistics", "summary": "Get Statistics", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Stats"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Retrieve exposure statistics for a member, including\nthe number of profiles that were found exposed and\nsubsequently removed or not found.", "tags": ["Opt-Out"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/optouts/{member_uuid}": {"get": {"operationId": "list_member_databroker_optouts", "summary": "Get Databrokers", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "databroker_status", "schema": {"allOf": [{"enum": ["active", "inactive"], "title": "DatabrokerStatus", "type": "string"}], "default": "active", "description": "Status of the databroker", "examples": ["active", "inactive"]}, "required": false, "description": "Status of the databroker", "examples": ["active", "inactive"]}, {"in": "query", "name": "is_included_in_subscription", "schema": {"description": "If `true`, returns only brokers covered by the member's effective plan tier. If `false`, returns only brokers above that tier (useful for upsell previews). If omitted, no plan-tier narrowing is applied.\n\nEffective tier is resolved per request: paid members use their plan tier; paused members use their paused plan; free members in an organization with `scan_by_plan` configured use that cap; free members elsewhere (including B2C) get Ultimate -- free is treated as a sales-tool view of the full broker set.", "examples": [true, false], "title": "Is Included In Subscription", "type": ["boolean", "null"]}, "required": false, "description": "If `true`, returns only brokers covered by the member's effective plan tier. If `false`, returns only brokers above that tier (useful for upsell previews). If omitted, no plan-tier narrowing is applied.\n\nEffective tier is resolved per request: paid members use their plan tier; paused members use their paused plan; free members in an organization with `scan_by_plan` configured use that cap; free members elsewhere (including B2C) get Ultimate -- free is treated as a sales-tool view of the full broker set.", "examples": [true, false]}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 200, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedDatabrokerOptout"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Retrieve a list of data broker websites for a member, along with the current status of their\nopt-out requests for each respective data broker. Please use pagination to get all results.\n\nBy default, all visible brokers for the member are returned. Pass\n`is_included_in_subscription=true` to narrow to brokers the member is entitled to opt-out from\ngiven their current plan (and the org's `scan_by_plan` cap when applicable), or `false` to see\nonly brokers outside that coverage (upsell preview). See the field description for the exact\neffective-tier resolution rules.\n\nPlease refer to these status codes for information on the current status of the opt-out request and exposure risk:\n### Exposure Risk Status\n- 0 - Search in Process\n- 10 - Personal Info Found Exposed\n- 40 - Removed / Not Found\n\n### Removal Status & Sub-Status\n| Removal Status              | Removal Sub-Status                |\n| --------------------------- | --------------------------------- |\n| 0 - Pending (empty string)  | 0 - Pending (empty string)        |\n| 10 - Submitted              | 10 - Submitted                    |\n| 40 - Removed / Not Found    | 43 - Removed <br/> 47 - Not Found |\n| 50 - Non - Compliant        | 50 - Non - Compliant              |\n| 60 - Escalation In Progress | 60 - Escalation In Progress       |", "tags": ["Opt-Out"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/optouts/{member_uuid}/gallery": {"get": {"operationId": "list_member_gallery", "summary": "Get Member Gallery", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 100, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedGalleryItem"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Members Gallery is a collection of pair screenshots for each databroker. <br/>\nEach pair consists of a screenshot of the member's profile found on the databroker's website\nand a screenshot of the member's profile removed from the databroker's website accordingly if found to be removed. <br/>\nThe gallery also includes the current status of the opt-out request and exposure risk for each databroker.\nPlease use pagination to get all results.<br/><br/>\n\nPlease refer to these status codes for information on the current status of the opt-out request and exposure risk:<br/>\n### Exposure Risk Status\n- 0 - Search in Process\n- 10 - Personal Info Found Exposed\n- 40 - Removed / Not Found\n\n### Removal Status & Sub-Status\n| Removal Status              | Removal Sub-Status                |\n| --------------------------- | --------------------------------- |\n| 0 - Pending (empty string)  | 0 - Pending (empty string)        |\n| 10 - Submitted              | 10 - Submitted                    |\n| 40 - Removed / Not Found    | 43 - Removed <br/> 47 - Not Found |\n| 50 - Non - Compliant        | 50 - Non - Compliant              |\n| 60 - Escalation In Progress | 60 - Escalation In Progress       |", "tags": ["Opt-Out"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/optouts/{member_uuid}/screenshots": {"get": {"operationId": "list_member_screenshots", "summary": "Get Screenshots", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "search_type", "schema": {"allOf": [{"enum": ["search-engines", "databrokers", "all"], "title": "DBType", "type": "string"}], "default": "all"}, "required": false}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 100, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedScreenshot"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Retrieve a list of screenshots that showcase instances where a member's\ndata has been found and subsequently exposed by data brokers.\nThe list will highlight the specific locations where the member's data was discovered.\nPlease use pagination to get all results.<br/>\n\nYou can filter values with **?search_type=<search-engines,databrokers,all>** values.<br/>\n*leaving blank will default to 'all'*\n\n### Exposure Risk Status\n- 0 - Search in Process\n- 10 - Personal Info Found Exposed\n- 40 - Removed / Not Found\n\n### Removal Status & Sub-Status\n| Removal Status              | Removal Sub-Status                |\n| --------------------------- | --------------------------------- |\n| 0 - Pending (empty string)  | 0 - Pending (empty string)        |\n| 10 - Submitted              | 10 - Submitted                    |\n| 40 - Removed / Not Found    | 43 - Removed <br/> 47 - Not Found |\n| 50 - Non - Compliant        | 50 - Non - Compliant              |\n| 60 - Escalation In Progress | 60 - Escalation In Progress       |", "tags": ["Opt-Out"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/optouts/{member_uuid}/events": {"get": {"operationId": "list_member_optout_events", "summary": "Get Optout Events", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}, {"in": "query", "name": "databroker_uuid", "schema": {"title": "Databroker Uuid", "format": "uuid", "type": ["string", "null"]}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 100, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedOptoutEvent"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Retrieve a list of activities that have been performed on a member's account. <br/>\nThis includes Data Broker opt-out requests, custom requests, removal issues and other activities\nlike periodic scans completion and removal reports.<br/><br/>\nPlease use pagination to get all results.", "tags": ["Opt-Out"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/optouts/{member_uuid}/removal-issues": {"post": {"operationId": "add_member_removal_issue", "summary": "Add Removal Issue", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AddRemovalIssueResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Add a Removal Issue for a member's profile that has been found exposed by a data broker.\n\nSometimes, Optery's automated detection may incorrectly mark a profile as \"Removed / Not Found\" even\nwhen it is still visible. This situation can occur when a data broker shows multiple instances of a\nprofile, when there are slight variations or outdated information in the profile details, or due to\ninherent limitations in our matching algorithms.\n\nFor paid subscribers who encounter this error, please report the issue by submitting the URL, a\nscreenshot, and any additional details. This information helps our team investigate and correct the\nremoval status, ensuring that your profile is properly handled.\n\nFor more information view the [documentation](https://help.optery.com/en/article/how-do-i-report-an-exposed-profile-or-removals-issue-that-optery-has-incorrectly-marked-removed-not-found-1d7rcth/).", "tags": ["Opt-Out"], "requestBody": {"content": {"multipart/form-data": {"schema": {"title": "MultiPartBodyParams", "type": "object", "properties": {"exposed_url": {"examples": ["https://malicious-databroker-example/your/name/"], "title": "Exposed Url", "type": "string"}, "additional_information": {"examples": ["Additional information about the exposure"], "title": "Additional Information", "type": "string"}, "proof_of_exposure": {"description": "A screenshot of the exposure.", "examples": ["<image-file-upload.png>"], "format": "binary", "title": "Proof Of Exposure", "type": "string"}}, "required": ["exposed_url", "additional_information", "proof_of_exposure"]}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}, "get": {"operationId": "list_member_removal_issues", "summary": "Get Removal Issues", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 100, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedRemovalIssueDetailResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "List all removal issues for a member.\n\nSometimes, Optery's automated detection may incorrectly mark a profile as \"Removed / Not Found\" even\nwhen it is still visible. This situation can occur when a data broker shows multiple instances of a\nprofile, when there are slight variations or outdated information in the profile details, or due to\ninherent limitations in our matching algorithms.\n\nFor paid subscribers who encounter this error, please report the issue by submitting the URL, a\nscreenshot, and any additional details. This information helps our team investigate and correct\nthe removal status, ensuring that your profile is properly handled.\n\nFor more information view the [documentation](https://help.optery.com/en/article/how-do-i-report-an-exposed-profile-or-removals-issue-that-optery-has-incorrectly-marked-removed-not-found-1d7rcth/).", "tags": ["Opt-Out"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/optouts/{member_uuid}/removal-issues/status": {"post": {"operationId": "get_member_removal_issues_status", "summary": "Get Removals Issues Status", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/RemovalIssueStatusResponse"}, "title": "Response", "type": "array"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Bulk retrieve Removals Issues' status by Issue ID.\n\nSometimes, Optery's automated detection may incorrectly mark a profile as \"Removed / Not Found\" even\nwhen it is still visible. This situation can occur when a data broker shows multiple instances of a\nprofile, when there are slight variations or outdated information in the profile details, or due to\ninherent limitations in our matching algorithms.\n\nFor paid subscribers who encounter this error, please report the issue by submitting the URL, a\nscreenshot, and any additional details. This information helps our team investigate and correct the\nremoval status, ensuring that your profile is properly handled.\n\nFor more information view the [documentation](https://help.optery.com/en/article/how-do-i-report-an-exposed-profile-or-removals-issue-that-optery-has-incorrectly-marked-removed-not-found-1d7rcth/).", "tags": ["Opt-Out"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetRemovalIssues"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}}, "/v1/optouts/{member_uuid}/custom-removals": {"post": {"operationId": "add_member_custom_removal", "summary": "Add Custom Removal", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CustomRemovalResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Add a Custom Removal request for a member's profile.\n\nThe Ultimate plan allows subscribers to submit Custom Removals Requests for data brokers not covered on\nour official list. This best-effort service starts processing 30 days after the subscription is purchased\nand aims to remove unsupported profiles, with roughly 75% of requests successfully resulting in removal\nand around 25% remaining unsuccessful.\n\nPlease note that only full URLs leading directly to the profile are accepted. Requests using generic\ncompany names or partial URLs will be rejected. This service applies exclusively to data brokers\nand people search sites and does not extend to general web sites or social media.\n\nFor more information view the [documentation](https://help.optery.com/en/article/ultimate-plan-offers-best-effort-removals-for-unsupported-data-brokers-through-custom-removals-requests-lchi5e/).", "tags": ["Opt-Out"], "requestBody": {"content": {"multipart/form-data": {"schema": {"title": "MultiPartBodyParams", "type": "object", "properties": {"exposed_url": {"description": "Full URL leading directly to the exposed profile. Generic company names and partial URLs are rejected.", "examples": ["https://example.com/profile123"], "title": "Exposed Url", "type": "string"}, "search_engine_url": {"description": "Search engine results page the profile was found on, if one was used to locate it.", "examples": ["https://google.com/search?q=profile123"], "title": "Search Engine Url", "type": ["string", "null"]}, "search_keywords": {"description": "Keywords used to locate the exposed profile.", "examples": ["John Doe phone number"], "title": "Search Keywords", "type": ["string", "null"]}, "additional_information": {"description": "Any extra information regarding the removal request.", "examples": ["Sensitive personal data exposed."], "title": "Additional Information", "type": ["string", "null"]}, "proof_of_exposure": {"description": "Proof of data exposure (JPG/PNG, up to 10MB)", "examples": ["<image-file-upload.png>"], "format": "binary", "title": "Proof Of Exposure", "type": "string"}}, "required": ["exposed_url", "proof_of_exposure"]}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}, "get": {"operationId": "list_member_custom_removals", "summary": "Get Custom Removals", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 100, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedRemovalIssueDetailResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "List all Custom Removals for a member.\n\nThe Ultimate plan allows subscribers to submit Custom Removals Requests for data brokers not covered on\nour official list. This best-effort service starts processing 30 days after the subscription is purchased\nand aims to remove unsupported profiles, with roughly 75% of requests successfully resulting in removal\nand around 25% remaining unsuccessful.\n\nPlease note that only full URLs leading directly to the profile are accepted. Requests using generic\ncompany names or partial URLs will be rejected. This service applies exclusively to data brokers\nand people search sites and does not extend to general web sites or social media.\n\nFor more information view the [documentation](https://help.optery.com/en/article/ultimate-plan-offers-best-effort-removals-for-unsupported-data-brokers-through-custom-removals-requests-lchi5e/).", "tags": ["Opt-Out"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/optouts/{member_uuid}/custom-removals/status": {"post": {"operationId": "get_member_custom_removals_status", "summary": "Get Custom Removal Status", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/CustomRemovalStatusResponse"}, "title": "Response", "type": "array"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Bulk retrieve Custom Removals' status by Issue ID.\n\nThe Ultimate plan allows subscribers to submit Custom Removals Requests for data brokers not covered on\nour official list. This best-effort service starts processing 30 days after the subscription is purchased\nand aims to remove unsupported profiles, with roughly 75% of requests successfully resulting in removal\nand around 25% remaining unsuccessful.\n\nPlease note that only full URLs leading directly to the profile are accepted. Requests using generic\ncompany names or partial URLs will be rejected. This service applies exclusively to data brokers\nand people search sites and does not extend to general web sites or social media.\n\nFor more information view the [documentation](https://help.optery.com/en/article/ultimate-plan-offers-best-effort-removals-for-unsupported-data-brokers-through-custom-removals-requests-lchi5e/).", "tags": ["Opt-Out"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetCustomRemovalStatus"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}}, "/v1/optouts/{member_uuid}/scan/scheduled": {"get": {"operationId": "get_member_scheduled_scan", "summary": "Get Scheduled Scan", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ScanScheduleOutput"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get the first scheduled scan for the member. Includes the scan interval after the sign-up in minutes.", "tags": ["Opt-Out/Scan"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/optouts/{member_uuid}/scan/postpone": {"patch": {"operationId": "postpone_member_scan", "summary": "Postpone Scan", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "postpone_mins", "schema": {"title": "Postpone Mins", "type": "integer"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ScanOutput"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Postpone the first scan for the member for the specified minutes.\n\nSet minutes to 0 to start the scan immediately.", "tags": ["Opt-Out/Scan"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/optouts/{member_uuid}/scan/dates": {"get": {"operationId": "get_member_scan_dates", "summary": "Get Scan Dates", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ScanDatesOutput"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get the scan dates for the member, including the last and next periodic scan dates.", "tags": ["Opt-Out/Scan"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/optouts/{member_uuid}/custom-scan": {"post": {"operationId": "request_member_custom_scan", "summary": "Request Custom Scan", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CustomScanOutput"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Initiates a *custom scan* request for the specified member. This is an **extra paid service** that allows:\n\n- Overriding the default location (city/state) for the scan.\n- Scheduling the scan for a future date/time.", "tags": ["Opt-Out/Scan"], "requestBody": {"content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/CustomScanInput"}], "default": {"city": null, "state": null, "schedule": 0}}}}, "required": false}, "security": [{"OpteryAuthBearer": []}]}, "get": {"operationId": "list_member_custom_scans", "summary": "Get Custom Scans", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 100, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ScanListItemOutput"}, "title": "Response", "type": "array"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}, "X-Total-Count": {"$ref": "#/components/headers/TotalCount"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Returns a list of all scans associated with the given member.\n\nIncludes:\n- Both primary and custom scans.\n- Scan ID and status\n- Creation and scheduled timestamps\n- Report PDF URL, if the scan has been completed\n\nPaginated with `limit`/`offset` query params (default/max limit 100). The response body\nstays a plain JSON array; compare the `X-Total-Count` response header to the array length\nto detect a truncated page.", "tags": ["Opt-Out/Scan"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/optouts/{member_uuid}/custom-scan/{scan_id}": {"get": {"operationId": "get_member_custom_scan", "summary": "Get A Custom Scan", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "path", "name": "scan_id", "schema": {"title": "Scan Id", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CustomScanDetailOutput"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Retrieves the details of a specific custom scan for the given member.\n\nReturns:\n- Scan ID and current status.\n- Download URL for the PDF report if the scan has been completed.", "tags": ["Opt-Out/Scan"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/optouts/{member_uuid}/get-scans": {"get": {"operationId": "list_member_scans", "summary": "Get Scans", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 100, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ScanListItemOutput"}, "title": "Response", "type": "array"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}, "X-Total-Count": {"$ref": "#/components/headers/TotalCount"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Returns a list of all scans associated with the given member.\n\nPaginated with `limit`/`offset` query params (default/max limit 100). The response body\nstays a plain JSON array; compare the `X-Total-Count` response header to the array length\nto detect a truncated page.", "tags": ["Opt-Out/Scan"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/optouts/{member_uuid}/get-screenshots-by-scan/{scan_id}": {"get": {"operationId": "list_member_scan_screenshots", "summary": "Get Screenshots By Scan", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "path", "name": "scan_id", "schema": {"title": "Scan Id", "type": "string"}, "required": true}, {"in": "query", "name": "search_type", "schema": {"allOf": [{"enum": ["search-engines", "databrokers", "all"], "title": "DBType", "type": "string"}], "default": "all"}, "required": false}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 100, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/Screenshot"}, "title": "Response", "type": "array"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}, "X-Total-Count": {"$ref": "#/components/headers/TotalCount"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get screenshots for a specific scan by its ID.\n\nPaginated with `limit`/`offset` query params (default/max limit 100). The response body\nstays a plain JSON array; compare the `X-Total-Count` response header to the array length\nto detect a truncated page.", "tags": ["Opt-Out/Scan"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/organization/dashboard": {"get": {"operationId": "get_organization_dashboard", "summary": "Dashboard", "parameters": [{"in": "query", "name": "member_uuid", "schema": {"description": "Limit results to a specific member.", "title": "Member Uuid", "format": "uuid", "type": ["string", "null"]}, "required": false, "description": "Limit results to a specific member."}, {"in": "query", "name": "group_by", "schema": {"description": "Include a monthly breakdown of the totals. Allowed values: [\"monthly\", null]", "type": "string", "enum": ["monthly"], "title": "AggregatorGroupBy"}, "required": false, "description": "Include a monthly breakdown of the totals. Allowed values: [\"monthly\", null]"}, {"in": "query", "name": "start_date", "schema": {"description": "Start date of the range (inclusive) in YYYY-MM-DD format.", "example": "2025-05-01", "title": "Start Date", "format": "date", "type": ["string", "null"]}, "required": false, "description": "Start date of the range (inclusive) in YYYY-MM-DD format.", "example": "2025-05-01"}, {"in": "query", "name": "end_date", "schema": {"description": "End date of the range (exclusive) in YYYY-MM-DD format.", "example": "2025-06-01", "title": "End Date", "format": "date", "type": ["string", "null"]}, "required": false, "description": "End date of the range (exclusive) in YYYY-MM-DD format.", "example": "2025-06-01"}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DashboardResponseSchema"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get organization dashboard metrics with an optional month-by-month breakdown\nfor the given date range. Can be filtered for individual organization members.", "tags": ["Organization"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/organization/optouts/events": {"get": {"operationId": "list_organization_optout_events", "summary": "Get Optout Events", "parameters": [{"in": "query", "name": "member_uuid", "schema": {"description": "Limit results to a specific member.", "examples": ["019e50f6-fc28-7f00-8f2d-28b6de7116d9"], "title": "Member Uuid", "format": "uuid", "type": ["string", "null"]}, "required": false, "description": "Limit results to a specific member.", "examples": ["019e50f6-fc28-7f00-8f2d-28b6de7116d9"]}, {"in": "query", "name": "group_tag", "schema": {"description": "Group tag for the member, used for filtering a group of members for different actions.", "examples": ["engineering"], "title": "Group Tag", "type": ["string", "null"]}, "required": false, "description": "Group tag for the member, used for filtering a group of members for different actions.", "examples": ["engineering"]}, {"in": "query", "name": "databroker_uuid", "schema": {"description": "Limit results to a specific data broker.", "examples": ["9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"], "title": "Databroker Uuid", "format": "uuid", "type": ["string", "null"]}, "required": false, "description": "Limit results to a specific data broker.", "examples": ["9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"]}, {"in": "query", "name": "event_type", "schema": {"description": "Filter by event type. Omit to return every event type.", "examples": ["profile_found"], "type": "string", "enum": ["profile_found", "submitted", "submitted_outdated", "escalation", "removed", "not_found", "custom_request_submitted", "custom_request_accepted", "custom_request_rejected", "custom_request_not_found", "new_exposure_report", "new_custom_exposure_report", "new_removal_report", "new_periodic_report", "new_submitted_report"], "title": "OptOutEventType"}, "required": false, "description": "Filter by event type. Omit to return every event type.", "examples": ["profile_found"]}, {"in": "query", "name": "start_date", "schema": {"description": "Start date of the range (inclusive) in UTC ISO-8601 format.", "examples": ["2025-05-01T14:30:00Z"], "title": "Start Date", "format": "date-time", "type": ["string", "null"]}, "required": false, "description": "Start date of the range (inclusive) in UTC ISO-8601 format.", "examples": ["2025-05-01T14:30:00Z"]}, {"in": "query", "name": "end_date", "schema": {"description": "End date of the range (exclusive) in UTC ISO-8601 format.", "examples": ["2025-06-01T23:23:59Z"], "title": "End Date", "format": "date-time", "type": ["string", "null"]}, "required": false, "description": "End date of the range (exclusive) in UTC ISO-8601 format.", "examples": ["2025-06-01T23:23:59Z"]}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 100, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "Supports the following response formats based on the request's `Accept` header:\n* `application/json`\n* `text/csv`", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedOrganizationOptoutEvent"}}, "text/csv": {"schema": {"$defs": {"OptOutEventType": {"enum": ["profile_found", "submitted", "submitted_outdated", "escalation", "removed", "not_found", "custom_request_submitted", "custom_request_accepted", "custom_request_rejected", "custom_request_not_found", "new_exposure_report", "new_custom_exposure_report", "new_removal_report", "new_periodic_report", "new_submitted_report"], "title": "OptOutEventType", "type": "string"}}, "properties": {"message": {"description": "Textual description of the event.", "examples": ["Opt-out request submitted"], "title": "Message", "type": "string"}, "created_at": {"description": "When the event occurred.", "examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "event_type": {"$ref": "#/components/schemas/OptOutEventType", "description": "Type of the event."}, "exposure_url": {"description": "The URL where exposed data was found.", "examples": ["https://example.com/profile123"], "title": "Exposure Url", "type": ["string", "null"]}, "member_uuid": {"description": "The member this event relates to.", "format": "uuid", "title": "Member Uuid", "type": "string"}, "ref_id": {"description": "Your own identifier for the member this event relates to, as set via `ref_id` on the member. `null` when you have not set one. Lets you correlate an event back to your own system without a lookup by `member_uuid`.", "examples": ["EMP-4471"], "title": "Ref Id", "type": ["string", "null"]}, "databroker_uuid": {"description": "The databroker's uuid.", "title": "Databroker Uuid", "format": "uuid", "type": ["string", "null"]}, "databroker_name": {"description": "The databroker's name.", "title": "Databroker Name", "type": ["string", "null"]}, "databroker_homepage_url": {"description": "The databroker's homepage url.", "title": "Databroker Homepage Url", "type": ["string", "null"]}, "databroker_has_name_data": {"description": "Whether the databroker collects names.", "title": "Databroker Has Name Data", "type": ["boolean", "null"]}, "databroker_has_relative_data": {"description": "Whether the databroker collects data about your relatives.", "title": "Databroker Has Relative Data", "type": ["boolean", "null"]}, "databroker_has_address_data": {"description": "Whether the databroker collects addresses.", "title": "Databroker Has Address Data", "type": ["boolean", "null"]}, "databroker_has_email_data": {"description": "Whether the databroker collects emails.", "title": "Databroker Has Email Data", "type": ["boolean", "null"]}, "databroker_has_phone_data": {"description": "Whether the databroker collects phone numbers.", "title": "Databroker Has Phone Data", "type": ["boolean", "null"]}, "databroker_has_company_data": {"description": "Whether the databroker collects company data.", "title": "Databroker Has Company Data", "type": ["boolean", "null"]}}, "required": ["message", "created_at", "event_type", "member_uuid"], "title": "OrganizationOptoutEventFlat", "type": "object"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Retrieve a list of events related to your organization.\n\nThese events represent key actions and milestones\u2014such as data broker opt-out requests,\ncustom removals, issue reports, periodic scan completions, and removal summaries.\n\nThis endpoint is designed to provide raw, queryable data that can be filtered and exported\nin various formats for further analysis or integration into third-party tools and dashboards.\n\nPlease use pagination to get all results.\n\n### Event Types\n- `profile_found` - New profile exposure detected.\n- `submitted` - Submitted opt out request.\n- `submitted_outdated` - Submitted outdated content removals.\n- `escalation` - Escalating opt out request.\n- `removed` - Profile removed successfully.\n- `not_found` - No profile exposure found at.\n- `custom_request_submitted` - Custom request was submitted successfully.\n- `custom_request_accepted` - Custom request was accepted.\n- `custom_request_rejected` - Custom request was rejected.\n- `custom_request_not_found` - Custom request was not found.\n- `new_exposure_report` - New exposure report available.\n- `new_custom_exposure_report` - New custom exposure report available.\n- `new_removal_report` - New removal report available.\n- `new_periodic_report` - New periodic exposure report available.\n- `new_submitted_report` - Recurring scheduled scan completed.", "tags": ["Organization"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/organization/dashboard/time-saved": {"get": {"operationId": "get_organization_time_saved", "summary": "Time Saved", "parameters": [{"in": "query", "name": "start_date", "schema": {"description": "Start date of the range (inclusive) in YYYY-MM-DD format. Omit to sum from the earliest snapshot.", "examples": ["2026-05-01"], "title": "Start Date", "format": "date", "type": ["string", "null"]}, "required": false, "description": "Start date of the range (inclusive) in YYYY-MM-DD format. Omit to sum from the earliest snapshot.", "examples": ["2026-05-01"]}, {"in": "query", "name": "end_date", "schema": {"description": "End date of the range (exclusive) in YYYY-MM-DD format. Omit to sum through the latest snapshot.", "examples": ["2026-06-01"], "title": "End Date", "format": "date", "type": ["string", "null"]}, "required": false, "description": "End date of the range (exclusive) in YYYY-MM-DD format. Omit to sum through the latest snapshot.", "examples": ["2026-06-01"]}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TimeSavedResponseSchema"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get the persisted time saved value for the authenticated organization.\n\nSums persisted daily snapshots written by the nightly aggregator over the range\n[`start_date`, `end_date`), with `start_date` inclusive and `end_date` exclusive. Either bound\nmay be omitted: an omitted `start_date` sums from the earliest snapshot, an omitted `end_date`\nsums through the latest, and omitting both sums all time. Partial ranges (e.g. an in-progress\nmonth) return a partial sum with `coverage_days` indicating how many days were included.", "tags": ["Organization"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/regions": {"get": {"operationId": "list_regions", "summary": "List Regions", "parameters": [{"in": "query", "name": "country", "schema": {"description": "2-letter ISO country code. When set, only that country is returned. Case-insensitive.", "examples": ["GB"], "title": "Country", "type": ["string", "null"]}, "required": false, "description": "2-letter ISO country code. When set, only that country is returned. Case-insensitive.", "examples": ["GB"]}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/RegionCountryOutput"}, "title": "Response", "type": "array"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "List the countries and states accepted by `country` and `state` when adding or editing a member or an address.\n\nSend a country's `code` as `country` and one of its states' `value` as `state`. The list is static reference\ndata that only changes with a release, so it is safe to cache. Pass `country` to fetch a single country.\n\n- `state` is required for `US`; for every other country it is optional.\n- Countries with no states return an empty `states` list.\n- Some countries, such as `GB`, only accept state names (counties), matched case-sensitively. A region such as\n  `England` is not a state.\n\nReturns a 422 if `country` is not a valid ISO code.", "tags": ["Regions"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/plans": {"get": {"operationId": "list_plans", "summary": "Get Plans", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/PlanOutput"}, "title": "Response", "type": "array"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get the list of plans available for subscription.<br><br/>\nUse the UUID key to change an existing member's plan using Subscribe Member endpoint<br><br/>\nor pass the UUID to Add Member endpoint to subscribe a new member with a specific plan.", "tags": ["Subscriptions"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/subscriptions": {"get": {"operationId": "get_organization_subscription", "summary": "Get Subscriptions", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SubscriptionOutput"}, {"type": "null"}]}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get billing information for all members.", "tags": ["Subscriptions"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/subscriptions/{member_uuid}": {"get": {"operationId": "get_member_subscription", "summary": "Get Subscription", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PlanOutput"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ObjectNotFoundResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get subscription information for a specific member given member UUID.", "tags": ["Subscriptions"], "security": [{"OpteryAuthBearer": []}]}, "post": {"operationId": "update_member_subscription", "summary": "Subscribe Member", "parameters": [{"in": "path", "name": "member_uuid", "schema": {"format": "uuid", "title": "Member Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "group_tag", "schema": {"title": "Group Tag", "type": ["string", "null"]}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericOKResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Subscribe a member to a plan given the UUID of the plan.<br><br/>\nTo get the list of plans available for subscription, use the Get Plans endpoint.", "tags": ["Subscriptions"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PlanInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}}, "/v1/webhooks/event-types": {"get": {"operationId": "list_webhook_event_types", "summary": "Get Event Types", "parameters": [{"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 100, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedEventTypeResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Get all event types.", "tags": ["Webhooks"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/webhooks/subscriptions": {"post": {"operationId": "create_webhook_subscription", "summary": "Add Subscription", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SubscriptionCreatedResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Create a subscription for a webhook.", "tags": ["Webhooks"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateSubscriptionSchemaInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}, "get": {"operationId": "list_webhook_subscriptions", "summary": "Get Subscriptions", "parameters": [{"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 100, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedSubscriptionCreatedResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "List webhook subscriptions.", "tags": ["Webhooks"], "security": [{"OpteryAuthBearer": []}]}}, "/v1/webhooks/subscriptions/{subscription_id}": {"get": {"operationId": "get_webhook_subscription", "summary": "Get Subscription", "parameters": [{"in": "path", "name": "subscription_id", "schema": {"format": "uuid", "title": "Subscription Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SubscriptionCreatedResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "List webhook subscriptions.", "tags": ["Webhooks"], "security": [{"OpteryAuthBearer": []}]}, "delete": {"operationId": "delete_webhook_subscription", "summary": "Delete Subscription", "parameters": [{"in": "path", "name": "subscription_id", "schema": {"format": "uuid", "title": "Subscription Id", "type": "string"}, "required": true}], "responses": {"204": {"description": "No Content", "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Delete a webhook subscription.", "tags": ["Webhooks"], "security": [{"OpteryAuthBearer": []}]}, "put": {"operationId": "update_webhook_subscription", "summary": "Edit Subscription", "parameters": [{"in": "path", "name": "subscription_id", "schema": {"format": "uuid", "title": "Subscription Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SubscriptionCreatedResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenericBadResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnprocessableEntityResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Update a webhook subscription.", "tags": ["Webhooks"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateSubscriptionSchemaInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}}, "/v1/webhooks/subscriptions/{subscription_id}/test": {"post": {"operationId": "send_test_webhook_event", "summary": "Send Test Event", "parameters": [{"in": "path", "name": "subscription_id", "schema": {"format": "uuid", "title": "Subscription Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TestEventResponse"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "Fire a sample event to verify URL, auth, and firewall before any real traffic.\n\nThe test event uses the same payload schema as the production event and is delivered\nthrough the same signing and retry path, so a 503 or timeout from your endpoint\nsurfaces here exactly as it would in production.\n\nIn addition to the account-wide rate limit, this endpoint enforces its own limit of\n10 requests per hour per `subscription_id`. If you need to send more test events than\nthat, create additional test subscriptions rather than waiting for the window to reset.", "tags": ["Webhooks"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TestEventInput"}}}, "required": true}, "security": [{"OpteryAuthBearer": []}]}}, "/v1/webhooks/subscriptions/{subscription_id}/deliveries": {"get": {"operationId": "list_webhook_deliveries", "summary": "Get Deliveries", "parameters": [{"in": "path", "name": "subscription_id", "schema": {"format": "uuid", "title": "Subscription Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/DeliveryResponse"}, "title": "Response", "type": "array"}}}, "headers": {"X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}}, "429": {"$ref": "#/components/responses/RateLimited"}}, "description": "List the recent webhook delivery attempts for this subscription.\n\nSurfaces the data Hook0 records about each delivery, including the response status\ncode your endpoint returned and an excerpt of the response body. Use this when a\nwebhook didn't arrive as expected to confirm whether Optery sent it and what your\nserver (or firewall) said back. Results are cached briefly to avoid hammering Hook0.", "tags": ["Webhooks"], "security": [{"OpteryAuthBearer": []}]}}}, "components": {"schemas": {"MemberInvite": {"properties": {"uuid": {"description": "The invitation's public identifier. Use it to resend or cancel this invite.", "examples": ["10c3c604-5100-4bb6-a02c-5d511931b84f"], "format": "uuid", "title": "Uuid", "type": "string"}, "email": {"examples": ["johndoe@example.com"], "format": "email", "title": "Email", "type": "string"}, "first_name": {"examples": ["John"], "title": "First Name", "type": "string"}, "last_name": {"examples": ["Doe"], "title": "Last Name", "type": "string"}, "status": {"$ref": "#/components/schemas/MemberInviteStatus", "description": "Current status of the invitation.", "examples": ["invited"]}, "sent_at": {"description": "When the invitation email was last sent.", "examples": ["2026-05-28T15:04:05Z"], "title": "Sent At", "format": "date-time", "type": ["string", "null"]}, "accepted_at": {"description": "When the invitee accepted the invitation, or null if still pending.", "examples": ["2026-05-28T15:04:05Z"], "title": "Accepted At", "format": "date-time", "type": ["string", "null"]}}, "required": ["uuid", "email", "first_name", "last_name", "status"], "title": "MemberInvite", "type": "object"}, "MemberInviteStatus": {"description": "Status of a member invitation.\n\n- invited: email sent, awaiting the invitee's response.\n- accepted: the invitee has created their account and is now a member.\n- resent: superseded by a newer invitation sent after a resend; the newer invitation's\n  `uuid` is the one to use for any further action.\n- expired: no longer valid; send a new invite instead.", "enum": ["invited", "accepted", "resent", "expired"], "title": "MemberInviteStatus", "type": "string"}, "GenericBadResponse": {"properties": {"message": {"title": "Message", "type": "string"}}, "required": ["message"], "title": "GenericBadResponse", "type": "object"}, "UnprocessableEntityResponse": {"description": "If a form is missing fields or has invalid data, this response will be returned.", "properties": {"detail": {"additionalProperties": true, "title": "Detail", "type": "object"}}, "required": ["detail"], "title": "UnprocessableEntityResponse", "type": "object"}, "InviteMemberRequest": {"properties": {"email": {"examples": ["johndoe@example.com"], "format": "email", "title": "Email", "type": "string"}, "first_name": {"examples": ["John"], "maxLength": 150, "title": "First Name", "type": "string"}, "last_name": {"examples": ["Doe"], "maxLength": 150, "title": "Last Name", "type": "string"}, "plan": {"description": "UUID of the plan to subscribe this member to once they accept the invite. Required. **The value in the example below is illustrative only and will be rejected if used directly.** Fetch a valid plan UUID for your organization from `GET /plans`.", "examples": ["00000000-0000-0000-0000-000000000000"], "format": "uuid", "title": "Plan", "type": "string"}}, "required": ["email", "first_name", "last_name", "plan"], "title": "InviteMemberRequest", "type": "object"}, "PagedMemberInvite": {"properties": {"items": {"items": {"$ref": "#/components/schemas/MemberInvite"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedMemberInvite", "type": "object"}, "ObjectNotFoundResponse": {"properties": {"message": {"default": "Object not found", "title": "Message", "type": "string"}}, "title": "ObjectNotFoundResponse", "type": "object"}, "GenericOKResponse": {"properties": {"success": {"default": true, "title": "Success", "type": "boolean"}}, "title": "GenericOKResponse", "type": "object"}, "MemberType": {"description": "Filter values for the member list endpoint: the concrete member types plus `all`.", "enum": ["regular", "api", "delegated", "family", "all"], "title": "MemberType", "type": "string"}, "MemberTypeValue": {"description": "String value for each concrete member type, as returned in member responses.\n\nValues mirror Optery.business.models.OrganizationMemberType (name lowercased). They are\nspelled out here rather than derived so static type checkers can see the members; a test\nasserts they stay in sync with the model enum, so drift fails CI instead of shipping.", "enum": ["regular", "api", "delegated", "family"], "title": "MemberTypeValue", "type": "string"}, "OrganizationUser": {"properties": {"first_name": {"examples": ["John"], "title": "First Name", "type": ["string", "null"]}, "last_name": {"examples": ["Doe"], "title": "Last Name", "type": ["string", "null"]}, "email": {"examples": ["johndoe@example.com"], "title": "Email", "type": ["string", "null"]}, "plan": {"examples": ["Ultimate"], "title": "Plan", "type": ["string", "null"]}, "plan_uuid": {"description": "UUID of the member's current plan, or null if none is assigned. Look up plan UUIDs via `GET /plans`.", "examples": ["00000000-0000-0000-0000-000000000000"], "title": "Plan Uuid", "format": "uuid", "type": ["string", "null"]}, "member_type": {"allOf": [{"$ref": "#/components/schemas/MemberTypeValue"}], "default": "regular", "description": "The type of member: `regular`, `api`, `delegated`, or `family`.", "examples": ["api"]}, "ref_id": {"description": "Your own system's identifier for this member (for example the employee ID from your HR platform), so you can correlate Optery members back to your records without maintaining a mapping table. Unique within your organization, and matched case-sensitively. `null` when no identifier is set.", "examples": ["EMP-4471"], "title": "Ref Id", "maxLength": 255, "type": ["string", "null"]}, "uuid": {"format": "uuid", "title": "Uuid", "type": "string"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "group_tag": {"title": "Group Tag", "maxLength": 50, "type": ["string", "null"]}}, "required": ["created_at"], "title": "OrganizationUser", "type": "object"}, "PagedOrganizationUser": {"properties": {"items": {"items": {"$ref": "#/components/schemas/OrganizationUser"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedOrganizationUser", "type": "object"}, "AddMemberCompleteResponse": {"properties": {"uuid": {"format": "uuid", "title": "Uuid", "type": "string"}}, "title": "AddMemberCompleteResponse", "type": "object"}, "MemberSchemaInput": {"description": "Extends MemberSchema to add full address support.", "properties": {"email": {"examples": ["johndoe@example.com"], "format": "email", "title": "Email", "type": "string"}, "first_name": {"examples": ["John"], "maxLength": 150, "title": "First Name", "type": "string"}, "last_name": {"examples": ["Doe"], "maxLength": 150, "title": "Last Name", "type": "string"}, "middle_name": {"example": "Waylon", "examples": ["Waylon"], "title": "Middle Name", "maxLength": 50, "type": ["string", "null"]}, "city": {"examples": ["New York"], "maxLength": 255, "title": "City", "type": "string"}, "country": {"description": "2-letter ISO country code. See `GET /v1/regions` for the accepted codes.", "examples": ["US"], "maxLength": 2, "title": "Country", "type": "string"}, "state": {"description": "Required for `US` (2-letter state code). Optional elsewhere. When sent, it must be one of the values returned for that country by `GET /v1/regions?country=<code>`: a short code where one exists, otherwise the exact state or county name (case-sensitive; for example `GB` takes `Kent`, not `England`).", "example": "NY", "examples": ["NY"], "title": "State", "maxLength": 255, "type": ["string", "null"]}, "birthday_day": {"example": 31, "examples": [31], "title": "Birthday Day", "maximum": 31, "minimum": 1, "type": ["integer", "null"]}, "birthday_month": {"example": 12, "examples": [12], "title": "Birthday Month", "maximum": 12, "minimum": 1, "type": ["integer", "null"]}, "birthday_year": {"examples": [1990], "minimum": 1900, "title": "Birthday Year", "type": "integer"}, "plan": {"description": "UUID of the plan to subscribe this member to. **The value in the example below is illustrative only and will be rejected if used directly.** Fetch a valid plan UUID for your organization from `GET /plans`.", "examples": ["00000000-0000-0000-0000-000000000000"], "title": "Plan", "format": "uuid", "type": ["string", "null"]}, "postpone_scan": {"default": 45, "description": "Number of minutes to postpone the scan. Set to 0 to start immediately.", "examples": [30], "maximum": 1440, "minimum": 0, "title": "Postpone Scan", "type": "integer"}, "group_tag": {"title": "Group Tag", "description": "Group tag for the member, used for filtering a group of members for different actions.", "examples": ["group_1", "group_2"], "maxLength": 50, "type": ["string", "null"]}, "address_line1": {"example": "321 Main St.", "examples": ["321 Main St."], "title": "Address Line1", "maxLength": 255, "type": ["string", "null"]}, "address_line2": {"example": "Apt 1H", "examples": ["Apt 1H"], "title": "Address Line2", "maxLength": 255, "type": ["string", "null"]}, "zipcode": {"example": "10001", "examples": ["10001"], "title": "Zipcode", "maxLength": 50, "type": ["string", "null"]}, "ref_id": {"description": "Your own system's identifier for this member (for example the employee ID from your HR platform), so you can correlate Optery members back to your records without maintaining a mapping table. Unique within your organization, and matched case-sensitively. `null` when no identifier is set.", "examples": ["EMP-4471"], "title": "Ref Id", "maxLength": 255, "type": ["string", "null"]}}, "required": ["email", "first_name", "last_name", "city", "country", "state", "birthday_year"], "title": "MemberSchemaInput", "type": "object"}, "GroupTagListSchema": {"properties": {"group_tag": {"title": "Group Tag", "description": "Group tag for the member, used for filtering a group of members for different actions.", "examples": ["group_1", "group_2"], "maxLength": 50, "type": ["string", "null"]}, "count": {"examples": [32], "title": "Count", "type": "integer"}}, "required": ["count"], "title": "GroupTagListSchema", "type": "object"}, "GroupTagSchemaInput": {"properties": {"group_tag": {"title": "Group Tag", "description": "Group tag for the member, used for filtering a group of members for different actions.", "examples": ["group_1", "group_2"], "maxLength": 50, "type": ["string", "null"]}}, "title": "GroupTagSchemaInput", "type": "object"}, "OrganizationUserProfile": {"properties": {"first_name": {"examples": ["John"], "title": "First Name", "type": "string"}, "last_name": {"examples": ["Doe"], "title": "Last Name", "type": "string"}, "middle_name": {"example": "Waylon", "examples": ["Waylon"], "title": "Middle Name", "type": ["string", "null"]}, "email": {"examples": ["johndoe@example.com"], "format": "email", "title": "Email", "type": "string"}, "plan": {"examples": ["Ultimate"], "title": "Plan", "type": ["string", "null"]}, "plan_uuid": {"description": "UUID of the member's current plan, or null if none is assigned. Look up plan UUIDs via `GET /plans`.", "examples": ["00000000-0000-0000-0000-000000000000"], "title": "Plan Uuid", "format": "uuid", "type": ["string", "null"]}, "city": {"example": "New York", "examples": ["New York"], "title": "City", "type": ["string", "null"]}, "state": {"example": "NY", "examples": ["NY"], "title": "State", "type": ["string", "null"]}, "country": {"example": "US", "examples": ["US"], "title": "Country", "type": ["string", "null"]}, "birthday_day": {"example": 27, "examples": [27], "title": "Birthday Day", "type": ["integer", "null"]}, "birthday_month": {"example": 9, "examples": [9], "title": "Birthday Month", "type": ["integer", "null"]}, "birthday_year": {"example": 1993, "examples": [1993], "title": "Birthday Year", "type": ["integer", "null"]}, "phone": {"example": "+14155551234", "examples": ["+14155551234"], "title": "Phone", "maxLength": 30, "type": ["string", "null"]}, "lpoa_enabled": {"default": false, "description": "True when the member has an active LPOA (Power of Attorney) authorization on file.", "examples": [true], "title": "Lpoa Enabled", "type": "boolean"}, "member_type": {"allOf": [{"$ref": "#/components/schemas/MemberTypeValue"}], "default": "regular", "description": "The type of member: `regular`, `api`, `delegated`, or `family`.", "examples": ["api"]}, "ref_id": {"description": "Your own system's identifier for this member (for example the employee ID from your HR platform), so you can correlate Optery members back to your records without maintaining a mapping table. Unique within your organization, and matched case-sensitively. `null` when no identifier is set.", "examples": ["EMP-4471"], "title": "Ref Id", "maxLength": 255, "type": ["string", "null"]}, "uuid": {"format": "uuid", "title": "Uuid", "type": "string"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "group_tag": {"title": "Group Tag", "maxLength": 50, "type": ["string", "null"]}}, "required": ["first_name", "last_name", "email", "created_at"], "title": "OrganizationUserProfile", "type": "object"}, "OrganizationUserProfileInput": {"properties": {"first_name": {"examples": ["John"], "maxLength": 150, "title": "First Name", "type": ["string", "null"]}, "last_name": {"examples": ["Doe"], "maxLength": 150, "title": "Last Name", "type": ["string", "null"]}, "middle_name": {"example": "Waylon", "examples": ["Waylon"], "title": "Middle Name", "maxLength": 50, "type": ["string", "null"]}, "city": {"example": "San Francisco", "examples": ["San Francisco"], "title": "City", "maxLength": 255, "type": ["string", "null"]}, "state": {"description": "US: 2-letter state code. Other countries: short code or exact state/province/region name.", "example": "CA", "examples": ["CA"], "title": "State", "maxLength": 255, "type": ["string", "null"]}, "country": {"description": "2-letter ISO country code.", "examples": ["US"], "maxLength": 2, "title": "Country", "type": "string"}, "birthday_day": {"example": 31, "examples": [31], "title": "Birthday Day", "maximum": 31, "minimum": 1, "type": ["integer", "null"]}, "birthday_month": {"example": 12, "examples": [12], "title": "Birthday Month", "maximum": 12, "minimum": 1, "type": ["integer", "null"]}, "birthday_year": {"examples": [1990], "minimum": 1900, "title": "Birthday Year", "type": "integer"}, "phone": {"example": "+14155551234", "examples": ["+14155551234"], "title": "Phone", "type": ["string", "null"]}, "ref_id": {"description": "Your own system's identifier for this member (for example the employee ID from your HR platform), so you can correlate Optery members back to your records without maintaining a mapping table. Unique within your organization, and matched case-sensitively. `null` when no identifier is set.", "examples": ["EMP-4471"], "title": "Ref Id", "maxLength": 255, "type": ["string", "null"]}}, "title": "OrganizationUserProfileInput", "type": "object"}, "AddressOutput": {"properties": {"uuid": {"format": "uuid", "title": "Uuid", "type": "string"}, "is_primary": {"title": "Is Primary", "type": "boolean"}, "address_line1": {"examples": ["123 Main St."], "title": "Address Line1", "type": ["string", "null"]}, "address_line2": {"examples": ["Apt. 1"], "title": "Address Line2", "type": ["string", "null"]}, "zipcode": {"examples": ["10001"], "title": "Zipcode", "type": ["string", "null"]}, "city": {"examples": ["New York"], "title": "City", "type": ["string", "null"]}, "state": {"example": "NY", "examples": ["NY"], "title": "State", "type": ["string", "null"]}, "country": {"description": "2-letter ISO country code.", "examples": ["US"], "maxLength": 2, "title": "Country", "type": "string"}}, "required": ["uuid", "is_primary", "city", "country"], "title": "AddressOutput", "type": "object"}, "AddAddressInput": {"properties": {"address_line1": {"example": "123 Main St.", "examples": ["123 Main St."], "title": "Address Line1", "type": ["string", "null"]}, "address_line2": {"example": "Apt. 1", "examples": ["Apt. 1"], "title": "Address Line2", "type": ["string", "null"]}, "city": {"examples": ["New York"], "title": "City", "type": "string"}, "zipcode": {"examples": ["10001"], "title": "Zipcode", "maxLength": 50, "type": ["string", "null"]}, "state": {"description": "US: 2-letter state code. Other countries: short code or exact state/province/region name.", "example": "NY", "examples": ["NY"], "title": "State", "type": ["string", "null"]}, "country": {"description": "2-letter ISO country code.", "examples": ["US"], "maxLength": 2, "title": "Country", "type": "string"}}, "required": ["city", "country"], "title": "AddAddressInput", "type": "object"}, "EditAddressInput": {"properties": {"address_line1": {"example": "410 W 4th St.", "examples": ["410 W 4th St."], "title": "Address Line1", "type": ["string", "null"]}, "address_line2": {"example": "", "examples": [""], "title": "Address Line2", "type": ["string", "null"]}, "city": {"examples": ["New York"], "title": "City", "type": ["string", "null"]}, "zipcode": {"example": "10012", "examples": ["10012"], "title": "Zipcode", "maxLength": 50, "type": ["string", "null"]}, "state": {"description": "US: 2-letter state code. Other countries: short code or exact state/province/region name.", "example": "NY", "examples": ["NY"], "title": "State", "type": ["string", "null"]}, "country": {"description": "2-letter ISO country code.", "examples": ["US"], "maxLength": 2, "title": "Country", "type": "string"}}, "title": "EditAddressInput", "type": "object"}, "EmailOutput": {"properties": {"uuid": {"format": "uuid", "title": "Uuid", "type": "string"}, "email": {"examples": ["johndoe@example.com"], "title": "Email", "type": "string"}, "is_work_email": {"description": "Email is a work email.", "examples": [true], "title": "Is Work Email", "type": "boolean"}, "is_current_work_email": {"description": "Is this email used as the current work email.", "examples": [true], "title": "Is Current Work Email", "type": "boolean"}, "is_use_for_scan": {"description": "Use this email to scan for user profiles.", "examples": [true], "title": "Is Use For Scan", "type": "boolean"}, "is_use_for_optout": {"description": "Use this email in OptOut Requests.", "examples": [false], "title": "Is Use For Optout", "type": "boolean"}}, "required": ["uuid", "email", "is_work_email", "is_current_work_email", "is_use_for_scan", "is_use_for_optout"], "title": "EmailOutput", "type": "object"}, "EmailAddInput": {"properties": {"email": {"examples": ["john.doe2@example.com"], "title": "Email", "type": "string"}, "is_work_email": {"examples": [true], "title": "Is Work Email", "type": ["boolean", "null"]}, "is_current_work_email": {"examples": [true], "title": "Is Current Work Email", "type": ["boolean", "null"]}, "is_use_for_optout": {"description": "Use this email in OptOut Requests.", "examples": [false], "title": "Is Use For Optout", "type": ["boolean", "null"]}, "is_use_for_scan": {"description": "Use this email to scan for user profiles.", "examples": [true], "title": "Is Use For Scan", "type": ["boolean", "null"]}}, "required": ["email"], "title": "EmailAddInput", "type": "object"}, "EmailEditInput": {"properties": {"email": {"examples": ["john.doe2@example.com"], "title": "Email", "type": "string"}, "is_work_email": {"examples": [true], "title": "Is Work Email", "type": ["boolean", "null"]}, "is_current_work_email": {"examples": [true], "title": "Is Current Work Email", "type": ["boolean", "null"]}, "is_use_for_optout": {"description": "Use this email in OptOut Requests.", "examples": [false], "title": "Is Use For Optout", "type": ["boolean", "null"]}}, "required": ["email"], "title": "EmailEditInput", "type": "object"}, "EmailScanInput": {"properties": {"is_use_for_scan": {"examples": [true], "title": "Is Use For Scan", "type": "boolean"}}, "required": ["is_use_for_scan"], "title": "EmailScanInput", "type": "object"}, "NameOutput": {"properties": {"uuid": {"format": "uuid", "title": "Uuid", "type": "string"}, "first_name": {"examples": ["John"], "title": "First Name", "type": "string"}, "middle_name": {"example": "Waylon", "examples": ["Waylon"], "title": "Middle Name", "type": ["string", "null"]}, "last_name": {"examples": ["Doe"], "title": "Last Name", "type": "string"}}, "required": ["uuid", "first_name", "last_name"], "title": "NameOutput", "type": "object"}, "AddNameInput": {"properties": {"first_name": {"examples": ["John"], "title": "First Name", "type": "string"}, "middle_name": {"example": "Waylon", "examples": ["Waylon"], "title": "Middle Name", "type": ["string", "null"]}, "last_name": {"examples": ["Doe"], "title": "Last Name", "type": "string"}}, "required": ["first_name", "last_name"], "title": "AddNameInput", "type": "object"}, "EditNameInput": {"properties": {"first_name": {"examples": ["John"], "title": "First Name", "type": "string"}, "middle_name": {"example": "Waylon", "examples": ["Waylon"], "title": "Middle Name", "type": ["string", "null"]}, "last_name": {"examples": ["Doe"], "title": "Last Name", "type": "string"}}, "title": "EditNameInput", "type": "object"}, "PhoneOutput": {"properties": {"uuid": {"format": "uuid", "title": "Uuid", "type": "string"}, "phone": {"examples": ["+14155551234"], "title": "Phone", "type": "string"}, "is_use_for_scan": {"description": "Use this phone to scan for user profiles.", "examples": [true], "title": "Is Use For Scan", "type": "boolean"}}, "required": ["uuid", "phone", "is_use_for_scan"], "title": "PhoneOutput", "type": "object"}, "PhoneAddInput": {"properties": {"phone": {"examples": ["+14155551234"], "title": "Phone", "type": "string"}, "is_use_for_scan": {"description": "Use this phone to scan for user profiles.", "examples": [true], "title": "Is Use For Scan", "type": ["boolean", "null"]}}, "required": ["phone"], "title": "PhoneAddInput", "type": "object"}, "PhoneEditInput": {"properties": {"phone": {"examples": ["+14155551234"], "title": "Phone", "type": "string"}}, "required": ["phone"], "title": "PhoneEditInput", "type": "object"}, "PhoneScanInput": {"properties": {"is_use_for_scan": {"examples": [true], "title": "Is Use For Scan", "type": "boolean"}}, "required": ["is_use_for_scan"], "title": "PhoneScanInput", "type": "object"}, "RelativeOutput": {"properties": {"uuid": {"format": "uuid", "title": "Uuid", "type": "string"}, "first_name": {"examples": ["John"], "title": "First Name", "type": "string"}, "middle_name": {"example": "Waylon", "examples": ["Waylon"], "title": "Middle Name", "type": ["string", "null"]}, "last_name": {"examples": ["Doe"], "title": "Last Name", "type": "string"}}, "required": ["uuid", "first_name", "last_name"], "title": "RelativeOutput", "type": "object"}, "AddRelativeInput": {"properties": {"first_name": {"examples": ["Jane"], "title": "First Name", "type": "string"}, "middle_name": {"example": "Rebecca", "examples": ["Rebecca"], "title": "Middle Name", "type": ["string", "null"]}, "last_name": {"examples": ["Doe"], "title": "Last Name", "type": "string"}}, "required": ["first_name", "last_name"], "title": "AddRelativeInput", "type": "object"}, "EditRelativeInput": {"properties": {"first_name": {"examples": ["Jane"], "title": "First Name", "type": "string"}, "middle_name": {"example": "Rebecca", "examples": ["Rebecca"], "title": "Middle Name", "type": ["string", "null"]}, "last_name": {"examples": ["Doe"], "title": "Last Name", "type": "string"}}, "title": "EditRelativeInput", "type": "object"}, "CompanyOutput": {"properties": {"uuid": {"format": "uuid", "title": "Uuid", "type": "string"}, "company_name": {"examples": ["Acme Inc."], "title": "Company Name", "type": "string"}, "is_current_company": {"examples": [true], "title": "Is Current Company", "type": "boolean"}}, "required": ["uuid", "company_name", "is_current_company"], "title": "CompanyOutput", "type": "object"}, "CompanyInput": {"properties": {"company_name": {"examples": ["Acme Inc."], "title": "Company Name", "type": "string"}, "is_current_company": {"examples": [true], "title": "Is Current Company", "type": "boolean"}}, "required": ["company_name", "is_current_company"], "title": "CompanyInput", "type": "object"}, "AdditionalInfo": {"properties": {"linkedin_url": {"example": "https://www.linkedin.com/in/example", "examples": ["https://www.linkedin.com/in/example"], "title": "Linkedin Url", "format": "uri", "minLength": 1, "type": ["string", "null"]}}, "title": "AdditionalInfo", "type": "object"}, "OptoutSettingsResponse": {"properties": {"is_blur_maps_enabled": {"description": "When enabled, Optery will submit requests to supported map services to blur your home in publicly visible street-level imagery.\nOnce you enable this opt-in preference setting in Optery, the action is irreversible\n", "examples": [true, false], "title": "Is Blur Maps Enabled", "type": ["boolean", "null"]}}, "title": "OptoutSettingsResponse", "type": "object"}, "EditOptoutSettingsInput": {"properties": {"is_blur_maps_enabled": {"description": "When enabled, Optery will submit requests to supported map services to blur your home in publicly visible street-level imagery.\nOnce you enable this opt-in preference setting in Optery, the action is irreversible\n", "examples": [true, false], "title": "Is Blur Maps Enabled", "type": ["boolean", "null"]}}, "title": "EditOptoutSettingsInput", "type": "object"}, "DataMappingOutput": {"properties": {"has_name_data": {"description": "Whether the databroker collects names", "title": "Has Name Data", "type": "boolean"}, "has_relative_data": {"description": "Whether the databroker collects data about your relatives", "title": "Has Relative Data", "type": "boolean"}, "has_address_data": {"description": "Whether the databroker collects addresses", "title": "Has Address Data", "type": "boolean"}, "has_email_data": {"description": "Whether the databroker collects emails", "title": "Has Email Data", "type": "boolean"}, "has_phone_data": {"description": "Whether the databroker collects phone numbers", "title": "Has Phone Data", "type": "boolean"}, "has_company_data": {"description": "Whether the databroker collects company data", "title": "Has Company Data", "type": "boolean"}}, "required": ["has_name_data", "has_relative_data", "has_address_data", "has_email_data", "has_phone_data", "has_company_data"], "title": "DataMappingOutput", "type": "object"}, "DatabrokerDataOutput": {"properties": {"uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Uuid", "type": "string"}, "name": {"examples": ["Malicious Databroker"], "title": "Name", "type": "string"}, "logo": {"examples": ["https://example.com/databroker/0ff27d6f7a384bd286a1a1dcab032ffc.png"], "title": "Logo", "type": ["string", "null"]}, "homepage_url": {"examples": ["https://malicious-databroker.example.com"], "title": "Homepage Url", "type": "string"}, "data": {"$ref": "#/components/schemas/DataMappingOutput"}, "plan": {"$ref": "#/components/schemas/DatabrokerPlan"}}, "required": ["uuid", "name", "logo", "homepage_url", "data", "plan"], "title": "DatabrokerDataOutput", "type": "object"}, "DatabrokerPlan": {"properties": {"uuid": {"format": "uuid", "title": "Uuid", "type": "string"}, "name": {"examples": ["Ultimate"], "title": "Name", "type": "string"}}, "required": ["uuid", "name"], "title": "DatabrokerPlan", "type": "object"}, "PagedDatabrokerDataOutput": {"properties": {"items": {"items": {"$ref": "#/components/schemas/DatabrokerDataOutput"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedDatabrokerDataOutput", "type": "object"}, "ExportStatus": {"enum": ["queued", "processing", "completed", "failed", "expired"], "title": "ExportStatus", "type": "string"}, "RemovalReportExportOutput": {"properties": {"export_id": {"title": "Export Id", "type": "integer"}, "status": {"$ref": "#/components/schemas/ExportStatus"}, "url": {"title": "Url", "type": ["string", "null"]}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}}, "required": ["export_id", "status", "url", "created_at"], "title": "RemovalReportExportOutput", "type": "object"}, "OptOutEventType": {"enum": ["profile_found", "submitted", "submitted_outdated", "escalation", "removed", "not_found", "custom_request_submitted", "custom_request_accepted", "custom_request_rejected", "custom_request_not_found", "new_exposure_report", "new_custom_exposure_report", "new_removal_report", "new_periodic_report", "new_submitted_report"], "title": "OptOutEventType", "type": "string"}, "RemovalReportExportInput": {"properties": {"members_uuids": {"title": "Members Uuids", "items": {"format": "uuid", "type": "string"}, "minItems": 1, "type": ["array", "null"]}, "event_types": {"title": "Event Types", "items": {"$ref": "#/components/schemas/OptOutEventType"}, "type": ["array", "null"]}, "group_tag": {"description": "Filter members by group tag. \"all\" matches members regardless of tag.", "examples": ["group_1", "all", null], "title": "Group Tag", "maxLength": 50, "type": ["string", "null"]}, "from_date": {"title": "From Date", "format": "date", "type": ["string", "null"]}, "to_date": {"title": "To Date", "format": "date", "type": ["string", "null"]}}, "title": "RemovalReportExportInput", "type": "object"}, "Stats": {"properties": {"db_covered": {"description": "Total number of data brokers covered by the plan", "title": "Db Covered", "type": "integer"}, "exposed": {"description": "Total profiles found exposed", "title": "Exposed", "type": "integer"}, "total_removed_not_found": {"description": "Total profiles removed / not found, including databrokers that are not in plan", "title": "Total Removed Not Found", "type": "integer"}, "total_removed": {"description": "Total profiles removed, including databrokers that are not in plan", "title": "Total Removed", "type": "integer"}, "total_not_found": {"description": "Total profiles not found, including databrokers that are not in plan", "title": "Total Not Found", "type": "integer"}, "removed_not_found": {"description": "Total profiles removed / not found, only databrokers that are in plan", "title": "Removed Not Found", "type": "integer"}, "removed": {"description": "Total profiles removed, only databrokers that are in plan", "title": "Removed", "type": "integer"}, "not_found": {"description": "Total profiles not found, only databrokers that are in plan", "title": "Not Found", "type": "integer"}, "removals_in_progress": {"description": "Total removals in progress", "title": "Removals In Progress", "type": "integer"}, "removals_pending": {"description": "Total removals pending", "title": "Removals Pending", "type": "integer"}}, "required": ["db_covered", "exposed", "total_removed_not_found", "total_removed", "total_not_found", "removed_not_found", "removed", "not_found", "removals_in_progress", "removals_pending"], "title": "Stats", "type": "object"}, "DatabrokerStatus": {"enum": ["active", "inactive"], "title": "DatabrokerStatus", "type": "string"}, "DatabrokerOptout": {"properties": {"databroker_uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Databroker Uuid", "type": "string"}, "databroker_name": {"examples": ["Malicious Databroker"], "title": "Databroker Name", "type": "string"}, "databroker_logo": {"example": "https://example.com/databroker/0ff27d6f7a384bd286a1a1dcab032ffc.png", "title": "Databroker Logo", "type": ["string", "null"]}, "databroker_added_on": {"format": "date-time", "title": "Databroker Added On", "type": "string"}, "databroker_status": {"$ref": "#/components/schemas/DatabrokerStatus", "examples": ["active"]}, "databroker_data": {"$ref": "#/components/schemas/DataMappingOutput"}, "exposure_url": {"examples": ["https://malicious-databroker-example/your/name/"], "title": "Exposure Url", "type": ["string", "null"]}, "exposure_urls": {"default": [], "description": "All known exposed profile URLs for this opt-out. Includes the primary URL and any additional URLs added by agents.", "examples": [["https://malicious-databroker-example/your/name/"]], "items": {"type": "string"}, "title": "Exposure Urls", "type": "array"}, "removal_status": {"examples": ["40"], "title": "Removal Status", "type": "integer"}, "removal_status_description": {"examples": ["Removed / Not Found"], "title": "Removal Status Description", "type": "string"}, "removal_sub_status": {"example": "43", "examples": ["43"], "title": "Removal Sub Status", "type": ["integer", "null"]}, "removal_sub_status_description": {"example": "Removed", "examples": ["Removed"], "title": "Removal Sub Status Description", "type": ["string", "null"]}, "exposure_status": {"examples": [0], "title": "Exposure Status", "type": "integer"}, "exposure_status_description": {"examples": ["Search in Process"], "title": "Exposure Status Description", "type": "string"}, "re_exposure_count": {"description": "Number of times this data broker republished this member's profile after a successful removal by Optery.", "examples": [1], "title": "Re Exposure Count", "type": "integer"}, "plan": {"$ref": "#/components/schemas/DatabrokerPlan"}}, "required": ["databroker_uuid", "databroker_name", "databroker_logo", "databroker_added_on", "databroker_status", "databroker_data", "exposure_url", "removal_status", "removal_status_description", "removal_sub_status", "removal_sub_status_description", "exposure_status", "exposure_status_description", "re_exposure_count", "plan"], "title": "DatabrokerOptout", "type": "object"}, "PagedDatabrokerOptout": {"properties": {"items": {"items": {"$ref": "#/components/schemas/DatabrokerOptout"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedDatabrokerOptout", "type": "object"}, "GalleryItem": {"properties": {"databroker_uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Databroker Uuid", "type": "string"}, "databroker_name": {"examples": ["Malicious Databroker"], "title": "Databroker Name", "type": "string"}, "databroker_data": {"$ref": "#/components/schemas/DataMappingOutput"}, "plan": {"$ref": "#/components/schemas/DatabrokerPlan"}, "screenshot_found": {"anyOf": [{"$ref": "#/components/schemas/GalleryScreenshot"}, {"type": "null"}]}, "screenshot_notfound": {"anyOf": [{"$ref": "#/components/schemas/GalleryScreenshot"}, {"type": "null"}]}, "removal_status": {"example": "40", "examples": ["40"], "title": "Removal Status", "type": ["integer", "null"]}, "removal_status_description": {"example": "Removed / Not Found", "examples": ["Removed / Not Found"], "title": "Removal Status Description", "type": ["string", "null"]}, "removal_sub_status": {"example": "43", "examples": ["43"], "title": "Removal Sub Status", "type": ["integer", "null"]}, "removal_sub_status_description": {"example": "Removed", "examples": ["Removed"], "title": "Removal Sub Status Description", "type": ["string", "null"]}, "exposure_status": {"examples": [0], "title": "Exposure Status", "type": ["integer", "null"]}, "exposure_status_description": {"example": "Search in Process", "examples": ["Search in Process"], "title": "Exposure Status Description", "type": ["string", "null"]}, "re_exposure_count": {"description": "Number of times this data broker republished this member's profile after a successful removal by Optery.", "examples": [1], "title": "Re Exposure Count", "type": ["integer", "null"]}}, "required": ["databroker_uuid", "databroker_name", "databroker_data", "plan", "screenshot_found", "screenshot_notfound", "removal_status", "removal_status_description", "removal_sub_status", "removal_sub_status_description", "exposure_status", "exposure_status_description", "re_exposure_count"], "title": "GalleryItem", "type": "object"}, "GalleryScreenshot": {"properties": {"image": {"description": "Signed URL for the screenshot image. The URL expires 90 days after it is retrieved from the API.", "examples": ["https://optery.com/path/to/image"], "title": "Image", "type": ["string", "null"]}, "thumbnail": {"example": "https://optery.com/path/to/thumbnail", "examples": ["https://optery.com/path/to/thumbnail"], "title": "Thumbnail", "type": ["string", "null"]}, "url": {"example": "https://malicious-databroker-example/your/name/", "examples": ["https://malicious-databroker-example/your/name/"], "title": "Url", "type": ["string", "null"]}, "created_at": {"examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}}, "required": ["image", "thumbnail", "url", "created_at"], "title": "GalleryScreenshot", "type": "object"}, "PagedGalleryItem": {"properties": {"items": {"items": {"$ref": "#/components/schemas/GalleryItem"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedGalleryItem", "type": "object"}, "PagedScreenshot": {"properties": {"items": {"items": {"$ref": "#/components/schemas/Screenshot"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedScreenshot", "type": "object"}, "Screenshot": {"properties": {"scan_id": {"description": "Unique ID of the scan for the member.", "examples": ["0002"], "title": "Scan Id", "type": "string"}, "databroker_uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Databroker Uuid", "type": "string"}, "databroker_name": {"examples": ["Malicious Databroker"], "title": "Databroker Name", "type": "string"}, "databroker_data": {"$ref": "#/components/schemas/DataMappingOutput"}, "image": {"description": "Signed URL for the screenshot image. The URL expires 90 days after it is retrieved from the API.", "examples": ["https://optery.com/path/to/image"], "title": "Image", "type": ["string", "null"]}, "thumbnail": {"examples": ["https://optery.com/path/to/thumbnail"], "title": "Thumbnail", "type": ["string", "null"]}, "url": {"examples": ["https://malicious-databroker-example/your/name/"], "title": "Url", "type": ["string", "null"]}, "removal_status": {"examples": ["40"], "title": "Removal Status", "type": "integer"}, "removal_status_description": {"examples": ["Removed / Not Found"], "title": "Removal Status Description", "type": "string"}, "removal_sub_status": {"example": "43", "examples": ["43"], "title": "Removal Sub Status", "type": ["integer", "null"]}, "removal_sub_status_description": {"example": "Removed", "examples": ["Removed"], "title": "Removal Sub Status Description", "type": ["string", "null"]}, "exposure_status": {"examples": [0], "title": "Exposure Status", "type": "integer"}, "exposure_status_description": {"examples": ["Search in Process"], "title": "Exposure Status Description", "type": "string"}, "re_exposure_count": {"description": "Number of times this data broker republished this member's profile after a successful removal by Optery.", "examples": [1], "title": "Re Exposure Count", "type": "integer"}, "search_type": {"examples": ["databrokers"], "title": "Search Type", "type": "string"}}, "required": ["scan_id", "databroker_uuid", "databroker_name", "databroker_data", "image", "thumbnail", "url", "removal_status", "removal_status_description", "removal_sub_status", "removal_sub_status_description", "exposure_status", "exposure_status_description", "re_exposure_count", "search_type"], "title": "Screenshot", "type": "object"}, "OptoutEvent": {"properties": {"databroker": {"anyOf": [{"$ref": "#/components/schemas/OptoutEventDatabroker"}, {"type": "null"}], "description": "The data broker this event is about. Present for per-broker events (`profile_found`, `profile_not_found`, `removal_request_submitted`, `submitted_outdated`, `escalation`, `profile_removed`, and the `custom_request_*` events). `null` for account-level events that describe a report rather than a broker (`new_exposure_report`, `new_custom_exposure_report`, `new_periodic_report`, `new_removal_report`, `new_submitted_report`)."}, "databroker_data": {"anyOf": [{"$ref": "#/components/schemas/DataMappingOutput"}, {"type": "null"}], "description": "The types of data that the data broker collects."}, "message": {"description": "Textual description of the event.", "examples": ["Opt-out request submitted"], "title": "Message", "type": "string"}, "created_at": {"description": "When the event occurred.", "examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}}, "required": ["message", "created_at"], "title": "OptoutEvent", "type": "object"}, "OptoutEventDatabroker": {"properties": {"databroker_uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Databroker Uuid", "type": "string"}, "name": {"examples": ["Malicious Databroker"], "title": "Name", "type": "string"}, "homepage_url": {"examples": ["https://example.com"], "title": "Homepage Url", "type": "string"}}, "required": ["databroker_uuid", "name", "homepage_url"], "title": "OptoutEventDatabroker", "type": "object"}, "PagedOptoutEvent": {"properties": {"items": {"items": {"$ref": "#/components/schemas/OptoutEvent"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedOptoutEvent", "type": "object"}, "AddRemovalIssueResponse": {"description": "Add new Removal Issue response.", "properties": {"issue_id": {"title": "Issue Id", "type": "string"}, "status": {"examples": ["Submitted", "In Progress", "Removed", "Unsuccessful", "Deleted"], "title": "Status", "type": "string"}, "e_id": {"maxLength": 50, "title": "E Id", "type": "string"}}, "required": ["issue_id", "status", "e_id"], "title": "AddRemovalIssueResponse", "type": "object"}, "PagedRemovalIssueDetailResponse": {"properties": {"items": {"items": {"$ref": "#/components/schemas/RemovalIssueDetailResponse"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedRemovalIssueDetailResponse", "type": "object"}, "RemovalIssueDetailResponse": {"description": "Bulk get Removal Issues.", "properties": {"issue_id": {"examples": ["AYW5J9", "AYW5J8"], "title": "Issue Id", "type": "string"}, "status": {"examples": ["Submitted", "In Progress", "Removed", "Unsuccessful", "Deleted"], "title": "Status", "type": "string"}, "last_update": {"format": "date-time", "title": "Last Update", "type": "string"}, "reason_unsuccessful": {"title": "Reason Unsuccessful", "type": ["string", "null"]}, "exposed_url": {"examples": ["https://malicious-databroker-example/your/name/"], "title": "Exposed Url", "type": "string"}, "submitted_at": {"examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Submitted At", "type": "string"}, "databroker": {"examples": ["Malicious Databroker"], "title": "Databroker", "type": ["string", "null"]}, "data_exposure_image": {"examples": ["https://optery.com/path/to/data_exposure_image.jpg"], "title": "Data Exposure Image", "type": ["string", "null"]}}, "required": ["issue_id", "status", "last_update", "exposed_url", "submitted_at"], "title": "RemovalIssueDetailResponse", "type": "object"}, "RemovalIssueStatusResponse": {"description": "Removal Issue Status Response.", "properties": {"issue_id": {"title": "Issue Id", "type": "string"}, "status": {"examples": ["Submitted", "In Progress", "Removed", "Unsuccessful", "Deleted"], "title": "Status", "type": "string"}, "last_update": {"format": "date-time", "title": "Last Update", "type": "string"}, "reason_unsuccessful": {"title": "Reason Unsuccessful", "type": ["string", "null"]}, "submitted_at": {"format": "date-time", "title": "Submitted At", "type": "string"}, "databroker": {"examples": ["Malicious Databroker"], "title": "Databroker", "type": ["string", "null"]}}, "required": ["issue_id", "status", "last_update", "submitted_at"], "title": "RemovalIssueStatusResponse", "type": "object"}, "GetRemovalIssues": {"description": "Bulk get Removal Issues.", "properties": {"issue_ids": {"examples": [["AYW5J9", "AYW5J8"]], "items": {"type": "string"}, "title": "Issue Ids", "type": "array"}}, "required": ["issue_ids"], "title": "GetRemovalIssues", "type": "object"}, "CustomRemovalResponse": {"properties": {"request_id": {"title": "Request Id", "type": "string"}, "status": {"examples": ["Submitted", "In Progress", "Removed", "Unsuccessful", "Deleted"], "title": "Status", "type": "string"}}, "required": ["request_id", "status"], "title": "CustomRemovalResponse", "type": "object"}, "CustomRemovalStatusResponse": {"properties": {"request_id": {"examples": ["55RE4D"], "title": "Request Id", "type": "string"}, "status": {"examples": ["Submitted", "In Progress", "Removed", "Unsuccessful", "Deleted"], "title": "Status", "type": "string"}, "submitted_at": {"examples": ["2024-02-25T10:30:00Z"], "format": "date-time", "title": "Submitted At", "type": "string"}, "exposed_url": {"examples": ["https://example.com/profile123"], "title": "Exposed Url", "type": "string"}, "screenshot": {"examples": ["https://example.com/proof123.png"], "title": "Screenshot", "type": ["string", "null"]}}, "required": ["request_id", "status", "submitted_at", "exposed_url", "screenshot"], "title": "CustomRemovalStatusResponse", "type": "object"}, "GetCustomRemovalStatus": {"properties": {"request_id": {"examples": [["55RE4D", "5XKCXS"]], "items": {"type": "string"}, "title": "Request Id", "type": "array"}}, "required": ["request_id"], "title": "GetCustomRemovalStatus", "type": "object"}, "ScanScheduleOutput": {"properties": {"scheduled_datetime": {"description": "Scheduled datetime for the scan.", "format": "date-time", "title": "Scheduled Datetime", "type": "string"}, "scan_interval": {"description": "Scan interval in minutes.", "examples": [45], "title": "Scan Interval", "type": "integer"}}, "required": ["scheduled_datetime", "scan_interval"], "title": "ScanScheduleOutput", "type": "object"}, "ScanOutput": {"properties": {"scheduled_datetime": {"description": "Scheduled datetime for the scan.", "format": "date-time", "title": "Scheduled Datetime", "type": "string"}}, "required": ["scheduled_datetime"], "title": "ScanOutput", "type": "object"}, "ScanDatesOutput": {"properties": {"last_scan_at": {"description": "Date when the last scan was performed.", "title": "Last Scan At", "format": "date", "type": ["string", "null"]}, "next_scan_at": {"description": "Date when the next scan is scheduled.", "examples": ["2023-10-01"], "title": "Next Scan At", "format": "date", "type": ["string", "null"]}, "is_last_scan_completed": {"default": false, "description": "Is the last scan completed.", "title": "Is Last Scan Completed", "type": "boolean"}, "last_removal_report_at": {"description": "Date when the last removal report was performed. Only for Extended and Ultimate plans.", "title": "Last Removal Report At", "format": "date", "type": ["string", "null"]}, "next_removal_report_at": {"description": "Date when the next removal report is scheduled. Only for Extended and Ultimate plans.", "title": "Next Removal Report At", "format": "date", "type": ["string", "null"]}}, "title": "ScanDatesOutput", "type": "object"}, "CustomScanOutput": {"properties": {"scan_id": {"description": "Unique ID of the custom scan for the member.", "examples": ["0002", "0003", "..."], "title": "Scan Id", "type": "string"}, "status": {"description": "Status of the custom scan.", "examples": ["Pending", "Completed", "Error"], "title": "Status", "type": "string"}, "scheduled_for": {"description": "Timestamp when the custom scan is scheduled for.", "format": "date-time", "title": "Scheduled For", "type": "string"}}, "required": ["scan_id", "status", "scheduled_for"], "title": "CustomScanOutput", "type": "object"}, "CustomScanInput": {"properties": {"city": {"description": "Override the city used for the scan (instead of what's saved on the profile). Must be provided with 'state' if used.", "example": "New York", "title": "City", "type": ["string", "null"]}, "state": {"description": "Override the state used for the scan (instead of what's saved on the profile). Must be provided with 'city' if used.", "example": "NY", "title": "State", "type": ["string", "null"]}, "schedule": {"default": 0, "description": "Schedule the custom scan to run later. Provided in minutes. Minimum is 0 (immediate scan), maximum is 1440 (24 hours).", "maximum": 1440, "minimum": 0, "title": "Schedule", "type": "integer"}}, "title": "CustomScanInput", "type": "object"}, "ScanListItemOutput": {"properties": {"scan_id": {"description": "Unique ID of the custom scan for the member.", "examples": ["0001", "0002", "..."], "title": "Scan Id", "type": "string"}, "status": {"description": "Status of the custom scan.", "examples": ["Pending", "Completed", "Error"], "title": "Status", "type": "string"}, "is_primary_scan": {"description": "Whether the scan is a primary scan or a custom scan.", "title": "Is Primary Scan", "type": "boolean"}, "created_at": {"description": "Timestamp when the scan request was created.", "format": "date-time", "title": "Created At", "type": "string"}, "scheduled_for": {"description": "Timestamp when the custom scan is scheduled for.", "title": "Scheduled For", "format": "date-time", "type": ["string", "null"]}, "report_pdf": {"description": "URL to download the custom scan report, if completed.", "example": "https://media.optery.com/uploads/exposure-report/685fd0329d15450299c2c79f4f0246f9.pdf", "title": "Report Pdf", "type": ["string", "null"]}}, "required": ["scan_id", "status", "is_primary_scan", "created_at"], "title": "ScanListItemOutput", "type": "object"}, "CustomScanDetailOutput": {"properties": {"scan_id": {"description": "Unique ID of the custom scan for the member.", "examples": ["0002", "0003", "..."], "title": "Scan Id", "type": "string"}, "status": {"description": "Status of the custom scan.", "examples": ["Pending", "Completed", "Error"], "title": "Status", "type": "string"}, "report_pdf": {"description": "URL to download the custom scan report.", "title": "Report Pdf", "type": ["string", "null"]}}, "required": ["scan_id", "status"], "title": "CustomScanDetailOutput", "type": "object"}, "AggregatorGroupBy": {"description": "The different time periods that aggregator metrics can be broken down by.", "enum": ["monthly"], "title": "AggregatorGroupBy", "type": "string"}, "DashboardResponseSchema": {"properties": {"member_uuid": {"description": "Limit results to a specific member.", "title": "Member Uuid", "format": "uuid", "type": ["string", "null"]}, "group_by": {"anyOf": [{"$ref": "#/components/schemas/AggregatorGroupBy"}, {"type": "null"}], "description": "Include a monthly breakdown of the totals. Allowed values: [\"monthly\", null]"}, "start_date": {"description": "Start date of the range (inclusive) in YYYY-MM-DD format.", "example": "2025-05-01", "title": "Start Date", "format": "date", "type": ["string", "null"]}, "end_date": {"description": "End date of the range (exclusive) in YYYY-MM-DD format.", "example": "2025-06-01", "title": "End Date", "format": "date", "type": ["string", "null"]}, "ref_id": {"description": "Your own identifier for the member these metrics were filtered to, as set via `ref_id` on the member. `null` for org-wide metrics or when the member has no `ref_id`.", "examples": ["EMP-4471"], "title": "Ref Id", "type": ["string", "null"]}, "metrics": {"$ref": "#/components/schemas/MetricsSchema"}}, "required": ["metrics"], "title": "DashboardResponseSchema", "type": "object"}, "MetricsSchema": {"properties": {"totals": {"$ref": "#/components/schemas/TotalsSchema", "description": "Cumulative sum of all metrics across the specified date range."}, "monthly_breakdown": {"description": "Optional breakdown of metrics by month.", "title": "Monthly Breakdown", "items": {"$ref": "#/components/schemas/MonthlyBreakdownSchema"}, "type": ["array", "null"]}}, "required": ["totals"], "title": "MetricsSchema", "type": "object"}, "MonthlyBreakdownSchema": {"properties": {"removals_count": {"description": "Number of profiles successfully removed.", "examples": [8398], "title": "Removals Count", "type": "integer"}, "remove_not_found_count": {"description": "Number of profiles not found.", "examples": [10], "title": "Remove Not Found Count", "type": "integer"}, "exposed_profiles_count": {"description": "Number of exposed profiles found during scans.", "examples": [11259], "title": "Exposed Profiles Count", "type": "integer"}, "exposed_phones_count": {"description": "Number of exposed phone numbers found during scans.", "examples": [613], "title": "Exposed Phones Count", "type": "integer"}, "exposed_emails_count": {"description": "Number of exposed emails found during scans.", "examples": [308], "title": "Exposed Emails Count", "type": "integer"}, "exposed_names_count": {"description": "Number of exposed names found during scans.", "examples": [4426], "title": "Exposed Names Count", "type": "integer"}, "exposed_addresses_count": {"description": "Number of exposed addresses found during scans.", "examples": [5163], "title": "Exposed Addresses Count", "type": "integer"}, "exposed_relatives_count": {"description": "Number of exposed family relatives found during scans.", "examples": [2901], "title": "Exposed Relatives Count", "type": "integer"}, "exposed_companies_count": {"description": "Number of exposed companies found during scans.", "examples": [8], "title": "Exposed Companies Count", "type": "integer"}, "scan_count": {"description": "Number of data broker sites scanned.", "examples": [612408], "title": "Scan Count", "type": "integer"}, "month": {"description": "Month in YYYY-MM format.", "examples": ["2025-05"], "title": "Month", "type": "string"}}, "required": ["removals_count", "remove_not_found_count", "exposed_profiles_count", "exposed_phones_count", "exposed_emails_count", "exposed_names_count", "exposed_addresses_count", "exposed_relatives_count", "exposed_companies_count", "scan_count", "month"], "title": "MonthlyBreakdownSchema", "type": "object"}, "TotalsSchema": {"properties": {"removals_count": {"description": "Number of profiles successfully removed.", "examples": [8398], "title": "Removals Count", "type": "integer"}, "remove_not_found_count": {"description": "Number of profiles not found.", "examples": [10], "title": "Remove Not Found Count", "type": "integer"}, "exposed_profiles_count": {"description": "Number of exposed profiles found during scans.", "examples": [11259], "title": "Exposed Profiles Count", "type": "integer"}, "exposed_phones_count": {"description": "Number of exposed phone numbers found during scans.", "examples": [613], "title": "Exposed Phones Count", "type": "integer"}, "exposed_emails_count": {"description": "Number of exposed emails found during scans.", "examples": [308], "title": "Exposed Emails Count", "type": "integer"}, "exposed_names_count": {"description": "Number of exposed names found during scans.", "examples": [4426], "title": "Exposed Names Count", "type": "integer"}, "exposed_addresses_count": {"description": "Number of exposed addresses found during scans.", "examples": [5163], "title": "Exposed Addresses Count", "type": "integer"}, "exposed_relatives_count": {"description": "Number of exposed family relatives found during scans.", "examples": [2901], "title": "Exposed Relatives Count", "type": "integer"}, "exposed_companies_count": {"description": "Number of exposed companies found during scans.", "examples": [8], "title": "Exposed Companies Count", "type": "integer"}, "scan_count": {"description": "Number of data broker sites scanned.", "examples": [612408], "title": "Scan Count", "type": "integer"}, "time_saved_minutes": {"description": "Estimated time saved by using Optery (in minutes).", "examples": [1190880], "title": "Time Saved Minutes", "type": "integer"}}, "required": ["removals_count", "remove_not_found_count", "exposed_profiles_count", "exposed_phones_count", "exposed_emails_count", "exposed_names_count", "exposed_addresses_count", "exposed_relatives_count", "exposed_companies_count", "scan_count", "time_saved_minutes"], "title": "TotalsSchema", "type": "object"}, "OrganizationOptoutEvent": {"properties": {"message": {"description": "Textual description of the event.", "examples": ["Opt-out request submitted"], "title": "Message", "type": "string"}, "created_at": {"description": "When the event occurred.", "examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "event_type": {"$ref": "#/components/schemas/OptOutEventType", "description": "Type of the event."}, "exposure_url": {"description": "The URL where exposed data was found.", "examples": ["https://example.com/profile123"], "title": "Exposure Url", "type": ["string", "null"]}, "member_uuid": {"description": "The member this event relates to.", "format": "uuid", "title": "Member Uuid", "type": "string"}, "ref_id": {"description": "Your own identifier for the member this event relates to, as set via `ref_id` on the member. `null` when you have not set one. Lets you correlate an event back to your own system without a lookup by `member_uuid`.", "examples": ["EMP-4471"], "title": "Ref Id", "type": ["string", "null"]}, "databroker": {"anyOf": [{"$ref": "#/components/schemas/OptoutEventDatabroker"}, {"type": "null"}]}, "databroker_data": {"anyOf": [{"$ref": "#/components/schemas/DataMappingOutput"}, {"type": "null"}], "description": "The types of data that the data broker collects."}}, "required": ["message", "created_at", "event_type", "member_uuid"], "title": "OrganizationOptoutEvent", "type": "object"}, "PagedOrganizationOptoutEvent": {"properties": {"items": {"items": {"$ref": "#/components/schemas/OrganizationOptoutEvent"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedOrganizationOptoutEvent", "type": "object"}, "TimeSavedResponseSchema": {"properties": {"start_date": {"description": "Start date of the queried range (inclusive), echoed from the request.", "examples": ["2026-05-01"], "title": "Start Date", "format": "date", "type": ["string", "null"]}, "end_date": {"description": "End date of the queried range (exclusive), echoed from the request.", "examples": ["2026-06-01"], "title": "End Date", "format": "date", "type": ["string", "null"]}, "time_saved_value": {"description": "Sum of persisted daily time saved snapshots for this organization over the queried range.", "examples": [1190880], "title": "Time Saved Value", "type": "integer"}, "unit": {"const": "minutes", "default": "minutes", "description": "Unit of the time_saved_value.", "title": "Unit", "type": "string"}, "period_start": {"description": "Earliest day included in the sum.", "examples": ["2026-05-01"], "format": "date", "title": "Period Start", "type": "string"}, "period_end": {"description": "Latest day included in the sum.", "examples": ["2026-05-31"], "format": "date", "title": "Period End", "type": "string"}, "coverage_days": {"description": "Number of daily snapshot rows summed. For a fully snapshotted range equals the number of days in that range; lower values indicate a partial sum (e.g. an in-progress month).", "examples": [31], "title": "Coverage Days", "type": "integer"}, "calculated_at": {"description": "Wall-clock time the most recent contributing snapshot was written.", "format": "date-time", "title": "Calculated At", "type": "string"}}, "required": ["time_saved_value", "period_start", "period_end", "coverage_days", "calculated_at"], "title": "TimeSavedResponseSchema", "type": "object"}, "RegionCountryOutput": {"properties": {"code": {"description": "2-letter ISO country code to send as `country`.", "examples": ["US", "GB"], "title": "Code", "type": "string"}, "name": {"description": "Country name.", "examples": ["United States", "United Kingdom"], "title": "Name", "type": "string"}, "is_state_required": {"description": "Whether `state` is required when adding a member in this country. Only `US` requires it.", "examples": [true, false], "title": "Is State Required", "type": "boolean"}, "states": {"description": "Accepted `state` values for this country, sorted by name. Empty when the country has no state list, in which case `state` can be omitted.", "items": {"$ref": "#/components/schemas/RegionStateOutput"}, "title": "States", "type": "array"}}, "required": ["code", "name", "is_state_required", "states"], "title": "RegionCountryOutput", "type": "object"}, "RegionStateOutput": {"properties": {"value": {"description": "The exact string to send as `state`. This is the short code when the state has one (for example `NY`), otherwise the state or region name (for example `Kent`).", "examples": ["NY", "Kent"], "title": "Value", "type": "string"}, "name": {"description": "Display name of the state, province, or region.", "examples": ["New York", "Kent"], "title": "Name", "type": "string"}}, "required": ["value", "name"], "title": "RegionStateOutput", "type": "object"}, "PlanOutput": {"properties": {"uuid": {"format": "uuid", "title": "Uuid", "type": "string"}, "name": {"examples": ["Extended"], "title": "Name", "type": "string"}}, "required": ["uuid", "name"], "title": "PlanOutput", "type": "object"}, "SubscriptionOutput": {"properties": {"plans": {"items": {"$ref": "#/components/schemas/SubscriptionPlanOutput"}, "title": "Plans", "type": "array"}, "subtotal_amount": {"title": "Subtotal Amount", "type": "number"}, "discount_amount": {"title": "Discount Amount", "type": "number"}, "total_amount": {"title": "Total Amount", "type": "number"}, "term": {"enum": ["yearly", "monthly"], "title": "Term", "type": "string"}, "plan_renews": {"examples": ["08/07/2019"], "title": "Plan Renews", "type": "string"}, "current_period_start": {"examples": ["08/07/2020"], "title": "Current Period Start", "type": "string"}}, "required": ["plans", "subtotal_amount", "discount_amount", "total_amount", "term", "plan_renews", "current_period_start"], "title": "SubscriptionOutput", "type": "object"}, "SubscriptionPlanOutput": {"properties": {"uuid": {"format": "uuid", "title": "Uuid", "type": "string"}, "name": {"examples": ["Ultimate"], "title": "Name", "type": "string"}, "amount": {"title": "Amount", "type": "number"}, "quantity": {"title": "Quantity", "type": "integer"}, "total_amount": {"title": "Total Amount", "type": "number"}}, "required": ["uuid", "name", "amount", "quantity", "total_amount"], "title": "SubscriptionPlanOutput", "type": "object"}, "PlanInput": {"properties": {"plan_uuid": {"description": "UUID of the plan to subscribe the member to. Fetch a valid value from `GET /plans`; UUIDs shown in this documentation are placeholders and will be rejected if sent directly.", "examples": ["00000000-0000-0000-0000-000000000000"], "format": "uuid", "title": "Plan Uuid", "type": "string"}}, "required": ["plan_uuid"], "title": "PlanInput", "type": "object"}, "EventTypeResponse": {"properties": {"name": {"description": "Unique name for the event type.", "example": "optout.custom_removals.created", "examples": ["optout.custom_removals.created"], "title": "Name", "x-examples": {"example": "optout.custom_removals.created"}, "maxLength": 120, "type": ["string", "null"]}}, "title": "EventTypeResponse", "type": "object"}, "PagedEventTypeResponse": {"properties": {"items": {"items": {"$ref": "#/components/schemas/EventTypeResponse"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedEventTypeResponse", "type": "object"}, "Methods": {"enum": ["POST", "GET", "PATCH", "PUT", "DELETE", "OPTIONS", "HEAD"], "title": "Methods", "type": "string"}, "SubscriptionCreatedResponse": {"properties": {"target": {"$ref": "#/components/schemas/Target", "description": "Target information for the subscription."}, "subscription_id": {"description": "Hook0 subscription ID.", "title": "Subscription Id", "format": "uuid", "type": ["string", "null"]}, "description": {"description": "Optional description for the subscription.", "example": "Subscription for custom removals", "examples": ["Subscription for custom removals"], "title": "Description", "x-examples": {"example": "Subscription for custom removals"}, "type": ["string", "null"]}, "is_enabled": {"default": true, "description": "Whether this subscription is currently enabled.", "title": "Is Enabled", "type": "boolean"}, "event_types": {"description": "Event types this subscription is interested in.", "example": ["optout.custom_removals.created", "optout.custom_removals.updated"], "examples": [["optout.custom_removals.created", "optout.custom_removals.updated"]], "items": {"type": "string"}, "title": "Event Types", "type": "array", "x-examples": {"custom_removals": ["optout.custom_removals.created", "optout.custom_removals.updated"]}}, "secret": {"description": "The secret is used to authenticate the webhooks sent to the endpoint. Do not share this secret with anyone.", "title": "Secret", "maxLength": 120, "type": ["string", "null"]}}, "required": ["target", "event_types"], "title": "SubscriptionCreatedResponse", "type": "object"}, "Target": {"properties": {"type": {"const": "http", "default": "http", "description": "The type of the target. Currently only 'http' is supported. This is allowed for future extensibility with other protocols such as websockets or message queues.", "title": "Type", "type": "string"}, "method": {"$ref": "#/components/schemas/Methods", "description": "The HTTP method to use."}, "url": {"description": "The URL to send the request to.", "format": "uri", "maxLength": 2083, "minLength": 1, "title": "Url", "type": "string"}, "headers": {"additionalProperties": {"type": "string"}, "description": "Optional headers for the request.", "title": "Headers", "type": "object"}}, "required": ["method", "url"], "title": "Target", "type": "object"}, "CreateSubscriptionSchemaInput": {"properties": {"description": {"description": "Description of the subscription. Omit for no description; Hook0 rejects an empty string.", "example": "Subscription for custom removals", "examples": ["Subscription for custom removals"], "title": "Description", "maxLength": 100, "minLength": 1, "type": ["string", "null"]}, "is_enabled": {"description": "Whether the subscription is enabled.", "title": "Is Enabled", "type": "boolean"}, "target": {"$ref": "#/components/schemas/Target", "description": "Target information for the subscription."}, "event_types": {"$ref": "#/components/schemas/EventTypes", "description": "List of event types for the subscription.", "examples": [["optout.custom_removals.created", "optout.custom_removals.updated"]]}}, "required": ["is_enabled", "target", "event_types"], "title": "CreateSubscriptionSchemaInput", "type": "object"}, "EventTypes": {"items": {"enum": ["optout.custom_removals.created", "optout.custom_removals.updated", "optout.removal_issues.created", "optout.removal_issues.updated", "optout.event.profile_found", "optout.event.removal_request_submitted", "optout.event.submitted_outdated", "optout.event.escalation", "optout.event.profile_removed", "optout.event.profile_not_found", "optout.event.custom_request_submitted", "optout.event.custom_request_accepted", "optout.event.custom_request_rejected", "optout.event.new_exposure_report", "optout.event.new_custom_exposure_report", "optout.event.new_removal_report", "optout.event.new_periodic_report", "optout.event.new_submitted_report", "optout.report.created", "exports.removal_report.completed"], "type": "string"}, "type": "array", "uniqueItems": true}, "PagedSubscriptionCreatedResponse": {"properties": {"items": {"items": {"$ref": "#/components/schemas/SubscriptionCreatedResponse"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedSubscriptionCreatedResponse", "type": "object"}, "UpdateSubscriptionSchemaInput": {"properties": {"target": {"$ref": "#/components/schemas/Target", "description": "Target information for the subscription."}, "description": {"description": "Optional description for the subscription.", "example": "Updated description of the subscription.", "examples": ["Updated description of the subscription."], "title": "Description", "x-examples": {"example": "Updated description of the subscription."}, "type": ["string", "null"]}, "is_enabled": {"default": true, "description": "Whether this subscription is currently enabled.", "title": "Is Enabled", "type": "boolean"}, "event_types": {"description": "Event types this subscription is interested in.", "example": ["optout.custom_removals.created", "optout.custom_removals.updated"], "examples": [["optout.custom_removals.created", "optout.custom_removals.updated"]], "items": {"type": "string"}, "title": "Event Types", "type": "array", "x-examples": {"custom_removals": ["optout.custom_removals.created", "optout.custom_removals.updated"]}}}, "required": ["target", "event_types"], "title": "UpdateSubscriptionSchemaInput", "type": "object"}, "TestEventResponse": {"properties": {"status": {"examples": ["sent"], "title": "Status", "type": "string"}, "subscription_id": {"examples": ["00000000-0000-0000-0000-000000000000"], "title": "Subscription Id", "type": "string"}, "event_type": {"examples": ["optout.event.profile_found"], "title": "Event Type", "type": ["string", "null"]}, "event_id": {"description": "UUID of the dispatched event. Set in ``mode=real`` and matches the ``event_id`` returned by the deliveries endpoint. ``null`` in ``mode=simulate`` because the scripted events are not enqueued until their scheduled delay elapses.", "examples": ["018f6f3a-6c1a-7c0b-9b8a-2f8e2c8a4b5e"], "title": "Event Id", "type": ["string", "null"]}, "event_types": {"description": "The full sequence of event types that will be dispatched. In ``mode=real`` this is always a single-element list matching ``event_type``. In ``mode=simulate`` it lists the scripted sequence, all drawn from the subscription's subscribed event types; order matches dispatch order with delays of roughly 0, 10, 20, and 30 seconds.", "examples": [["optout.event.profile_found", "optout.event.profile_found", "optout.event.profile_found", "optout.report.created"]], "items": {"type": "string"}, "title": "Event Types", "type": "array"}}, "required": ["status", "subscription_id"], "title": "TestEventResponse", "type": "object"}, "TestEventInput": {"properties": {"event_type": {"description": "An event type the subscription is subscribed to. If omitted, one of the subscription's subscribed event types is chosen at random.", "examples": ["optout.event.profile_found"], "title": "Event Type", "type": ["string", "null"]}, "mode": {"default": "real", "description": "How to dispatch the test event. 'real' broadcasts a single canned event through the live webhook pipeline (Hook0 signs, retries, and delivers). 'simulate' (sandbox only) enqueues a short scripted sequence over 30-45 seconds so you can exercise your full handler chain without producing real activity. All simulated events are drawn from the subscription's subscribed event types so every delivery actually reaches your endpoint.", "enum": ["real", "simulate"], "title": "Mode", "type": "string"}}, "title": "TestEventInput", "type": "object"}, "DeliveryResponse": {"properties": {"request_attempt_id": {"title": "Request Attempt Id", "type": "string"}, "event_id": {"title": "Event Id", "type": "string"}, "created_at": {"title": "Created At", "type": "string"}, "picked_at": {"title": "Picked At", "type": ["string", "null"]}, "failed_at": {"title": "Failed At", "type": ["string", "null"]}, "succeeded_at": {"title": "Succeeded At", "type": ["string", "null"]}, "retry_count": {"title": "Retry Count", "type": "integer"}, "status": {"examples": ["succeeded", "failed"], "title": "Status", "type": "string"}, "response_status": {"examples": [200, 503], "title": "Response Status", "type": ["integer", "null"]}, "response_body_excerpt": {"title": "Response Body Excerpt", "type": ["string", "null"]}, "response_error": {"title": "Response Error", "type": ["string", "null"]}}, "required": ["request_attempt_id", "event_id", "created_at", "picked_at", "failed_at", "succeeded_at", "retry_count", "status", "response_body_excerpt", "response_error"], "title": "DeliveryResponse", "type": "object"}, "OptOutEventPayload__optout_event_profile_found": {"$defs": {"DataMappingOutput": {"properties": {"has_name_data": {"description": "Whether the databroker collects names", "title": "Has Name Data", "type": "boolean"}, "has_relative_data": {"description": "Whether the databroker collects data about your relatives", "title": "Has Relative Data", "type": "boolean"}, "has_address_data": {"description": "Whether the databroker collects addresses", "title": "Has Address Data", "type": "boolean"}, "has_email_data": {"description": "Whether the databroker collects emails", "title": "Has Email Data", "type": "boolean"}, "has_phone_data": {"description": "Whether the databroker collects phone numbers", "title": "Has Phone Data", "type": "boolean"}, "has_company_data": {"description": "Whether the databroker collects company data", "title": "Has Company Data", "type": "boolean"}}, "required": ["has_name_data", "has_relative_data", "has_address_data", "has_email_data", "has_phone_data", "has_company_data"], "title": "DataMappingOutput", "type": "object"}, "OptoutEventDatabroker": {"properties": {"uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Uuid", "type": "string"}, "name": {"examples": ["Malicious Databroker"], "title": "Name", "type": "string"}, "homepage_url": {"examples": ["https://example.com"], "title": "Homepage Url", "type": "string"}}, "required": ["uuid", "name", "homepage_url"], "title": "OptoutEventDatabroker", "type": "object"}}, "properties": {"databroker": {"anyOf": [{"$ref": "#/components/schemas/OptoutEventDatabroker"}, {"type": "null"}], "default": null, "description": "The data broker this event is about. Present for per-broker events (`profile_found`, `profile_not_found`, `removal_request_submitted`, `submitted_outdated`, `escalation`, `profile_removed`, and the `custom_request_*` events). `null` for account-level events that describe a report rather than a broker (`new_exposure_report`, `new_custom_exposure_report`, `new_periodic_report`, `new_removal_report`, `new_submitted_report`)."}, "databroker.datamapping": {"anyOf": [{"$ref": "#/components/schemas/DataMappingOutput"}, {"type": "null"}], "default": null, "description": "The types of data that the data broker collects."}, "message": {"description": "Textual description of the event.", "examples": ["New profile exposure detected at Acme Data Brokers."], "title": "Message", "type": "string"}, "created_at": {"description": "When the event occurred.", "examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "member_uuid": {"description": "The member this event relates to.", "examples": ["da0a7c08-705d-44fa-a2f0-e89c282809ff"], "format": "uuid", "title": "Member Uuid", "type": "string"}}, "required": ["message", "created_at", "member_uuid"], "title": "OptOutEventPayload", "type": "object"}, "OptOutEventPayload__optout_event_removal_request_submitted": {"$defs": {"DataMappingOutput": {"properties": {"has_name_data": {"description": "Whether the databroker collects names", "title": "Has Name Data", "type": "boolean"}, "has_relative_data": {"description": "Whether the databroker collects data about your relatives", "title": "Has Relative Data", "type": "boolean"}, "has_address_data": {"description": "Whether the databroker collects addresses", "title": "Has Address Data", "type": "boolean"}, "has_email_data": {"description": "Whether the databroker collects emails", "title": "Has Email Data", "type": "boolean"}, "has_phone_data": {"description": "Whether the databroker collects phone numbers", "title": "Has Phone Data", "type": "boolean"}, "has_company_data": {"description": "Whether the databroker collects company data", "title": "Has Company Data", "type": "boolean"}}, "required": ["has_name_data", "has_relative_data", "has_address_data", "has_email_data", "has_phone_data", "has_company_data"], "title": "DataMappingOutput", "type": "object"}, "OptoutEventDatabroker": {"properties": {"uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Uuid", "type": "string"}, "name": {"examples": ["Malicious Databroker"], "title": "Name", "type": "string"}, "homepage_url": {"examples": ["https://example.com"], "title": "Homepage Url", "type": "string"}}, "required": ["uuid", "name", "homepage_url"], "title": "OptoutEventDatabroker", "type": "object"}}, "properties": {"databroker": {"anyOf": [{"$ref": "#/components/schemas/OptoutEventDatabroker"}, {"type": "null"}], "default": null, "description": "The data broker this event is about. Present for per-broker events (`profile_found`, `profile_not_found`, `removal_request_submitted`, `submitted_outdated`, `escalation`, `profile_removed`, and the `custom_request_*` events). `null` for account-level events that describe a report rather than a broker (`new_exposure_report`, `new_custom_exposure_report`, `new_periodic_report`, `new_removal_report`, `new_submitted_report`)."}, "databroker.datamapping": {"anyOf": [{"$ref": "#/components/schemas/DataMappingOutput"}, {"type": "null"}], "default": null, "description": "The types of data that the data broker collects."}, "message": {"description": "Textual description of the event.", "examples": ["Submitted opt out request."], "title": "Message", "type": "string"}, "created_at": {"description": "When the event occurred.", "examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "member_uuid": {"description": "The member this event relates to.", "examples": ["da0a7c08-705d-44fa-a2f0-e89c282809ff"], "format": "uuid", "title": "Member Uuid", "type": "string"}}, "required": ["message", "created_at", "member_uuid"], "title": "OptOutEventPayload", "type": "object"}, "OptOutEventPayload__optout_event_submitted_outdated": {"$defs": {"DataMappingOutput": {"properties": {"has_name_data": {"description": "Whether the databroker collects names", "title": "Has Name Data", "type": "boolean"}, "has_relative_data": {"description": "Whether the databroker collects data about your relatives", "title": "Has Relative Data", "type": "boolean"}, "has_address_data": {"description": "Whether the databroker collects addresses", "title": "Has Address Data", "type": "boolean"}, "has_email_data": {"description": "Whether the databroker collects emails", "title": "Has Email Data", "type": "boolean"}, "has_phone_data": {"description": "Whether the databroker collects phone numbers", "title": "Has Phone Data", "type": "boolean"}, "has_company_data": {"description": "Whether the databroker collects company data", "title": "Has Company Data", "type": "boolean"}}, "required": ["has_name_data", "has_relative_data", "has_address_data", "has_email_data", "has_phone_data", "has_company_data"], "title": "DataMappingOutput", "type": "object"}, "OptoutEventDatabroker": {"properties": {"uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Uuid", "type": "string"}, "name": {"examples": ["Malicious Databroker"], "title": "Name", "type": "string"}, "homepage_url": {"examples": ["https://example.com"], "title": "Homepage Url", "type": "string"}}, "required": ["uuid", "name", "homepage_url"], "title": "OptoutEventDatabroker", "type": "object"}}, "properties": {"databroker": {"anyOf": [{"$ref": "#/components/schemas/OptoutEventDatabroker"}, {"type": "null"}], "default": null, "description": "The data broker this event is about. Present for per-broker events (`profile_found`, `profile_not_found`, `removal_request_submitted`, `submitted_outdated`, `escalation`, `profile_removed`, and the `custom_request_*` events). `null` for account-level events that describe a report rather than a broker (`new_exposure_report`, `new_custom_exposure_report`, `new_periodic_report`, `new_removal_report`, `new_submitted_report`)."}, "databroker.datamapping": {"anyOf": [{"$ref": "#/components/schemas/DataMappingOutput"}, {"type": "null"}], "default": null, "description": "The types of data that the data broker collects."}, "message": {"description": "Textual description of the event.", "examples": ["Submitted outdated content removals."], "title": "Message", "type": "string"}, "created_at": {"description": "When the event occurred.", "examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "member_uuid": {"description": "The member this event relates to.", "examples": ["da0a7c08-705d-44fa-a2f0-e89c282809ff"], "format": "uuid", "title": "Member Uuid", "type": "string"}}, "required": ["message", "created_at", "member_uuid"], "title": "OptOutEventPayload", "type": "object"}, "OptOutEventPayload__optout_event_escalation": {"$defs": {"DataMappingOutput": {"properties": {"has_name_data": {"description": "Whether the databroker collects names", "title": "Has Name Data", "type": "boolean"}, "has_relative_data": {"description": "Whether the databroker collects data about your relatives", "title": "Has Relative Data", "type": "boolean"}, "has_address_data": {"description": "Whether the databroker collects addresses", "title": "Has Address Data", "type": "boolean"}, "has_email_data": {"description": "Whether the databroker collects emails", "title": "Has Email Data", "type": "boolean"}, "has_phone_data": {"description": "Whether the databroker collects phone numbers", "title": "Has Phone Data", "type": "boolean"}, "has_company_data": {"description": "Whether the databroker collects company data", "title": "Has Company Data", "type": "boolean"}}, "required": ["has_name_data", "has_relative_data", "has_address_data", "has_email_data", "has_phone_data", "has_company_data"], "title": "DataMappingOutput", "type": "object"}, "OptoutEventDatabroker": {"properties": {"uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Uuid", "type": "string"}, "name": {"examples": ["Malicious Databroker"], "title": "Name", "type": "string"}, "homepage_url": {"examples": ["https://example.com"], "title": "Homepage Url", "type": "string"}}, "required": ["uuid", "name", "homepage_url"], "title": "OptoutEventDatabroker", "type": "object"}}, "properties": {"databroker": {"anyOf": [{"$ref": "#/components/schemas/OptoutEventDatabroker"}, {"type": "null"}], "default": null, "description": "The data broker this event is about. Present for per-broker events (`profile_found`, `profile_not_found`, `removal_request_submitted`, `submitted_outdated`, `escalation`, `profile_removed`, and the `custom_request_*` events). `null` for account-level events that describe a report rather than a broker (`new_exposure_report`, `new_custom_exposure_report`, `new_periodic_report`, `new_removal_report`, `new_submitted_report`)."}, "databroker.datamapping": {"anyOf": [{"$ref": "#/components/schemas/DataMappingOutput"}, {"type": "null"}], "default": null, "description": "The types of data that the data broker collects."}, "message": {"description": "Textual description of the event.", "examples": ["Escalating opt out request to Acme Data Brokers."], "title": "Message", "type": "string"}, "created_at": {"description": "When the event occurred.", "examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "member_uuid": {"description": "The member this event relates to.", "examples": ["da0a7c08-705d-44fa-a2f0-e89c282809ff"], "format": "uuid", "title": "Member Uuid", "type": "string"}}, "required": ["message", "created_at", "member_uuid"], "title": "OptOutEventPayload", "type": "object"}, "OptOutEventPayload__optout_event_profile_removed": {"$defs": {"DataMappingOutput": {"properties": {"has_name_data": {"description": "Whether the databroker collects names", "title": "Has Name Data", "type": "boolean"}, "has_relative_data": {"description": "Whether the databroker collects data about your relatives", "title": "Has Relative Data", "type": "boolean"}, "has_address_data": {"description": "Whether the databroker collects addresses", "title": "Has Address Data", "type": "boolean"}, "has_email_data": {"description": "Whether the databroker collects emails", "title": "Has Email Data", "type": "boolean"}, "has_phone_data": {"description": "Whether the databroker collects phone numbers", "title": "Has Phone Data", "type": "boolean"}, "has_company_data": {"description": "Whether the databroker collects company data", "title": "Has Company Data", "type": "boolean"}}, "required": ["has_name_data", "has_relative_data", "has_address_data", "has_email_data", "has_phone_data", "has_company_data"], "title": "DataMappingOutput", "type": "object"}, "OptoutEventDatabroker": {"properties": {"uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Uuid", "type": "string"}, "name": {"examples": ["Malicious Databroker"], "title": "Name", "type": "string"}, "homepage_url": {"examples": ["https://example.com"], "title": "Homepage Url", "type": "string"}}, "required": ["uuid", "name", "homepage_url"], "title": "OptoutEventDatabroker", "type": "object"}}, "properties": {"databroker": {"anyOf": [{"$ref": "#/components/schemas/OptoutEventDatabroker"}, {"type": "null"}], "default": null, "description": "The data broker this event is about. Present for per-broker events (`profile_found`, `profile_not_found`, `removal_request_submitted`, `submitted_outdated`, `escalation`, `profile_removed`, and the `custom_request_*` events). `null` for account-level events that describe a report rather than a broker (`new_exposure_report`, `new_custom_exposure_report`, `new_periodic_report`, `new_removal_report`, `new_submitted_report`)."}, "databroker.datamapping": {"anyOf": [{"$ref": "#/components/schemas/DataMappingOutput"}, {"type": "null"}], "default": null, "description": "The types of data that the data broker collects."}, "message": {"description": "Textual description of the event.", "examples": ["Profile removed successfully from Acme Data Brokers."], "title": "Message", "type": "string"}, "created_at": {"description": "When the event occurred.", "examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "member_uuid": {"description": "The member this event relates to.", "examples": ["da0a7c08-705d-44fa-a2f0-e89c282809ff"], "format": "uuid", "title": "Member Uuid", "type": "string"}}, "required": ["message", "created_at", "member_uuid"], "title": "OptOutEventPayload", "type": "object"}, "OptOutEventPayload__optout_event_profile_not_found": {"$defs": {"DataMappingOutput": {"properties": {"has_name_data": {"description": "Whether the databroker collects names", "title": "Has Name Data", "type": "boolean"}, "has_relative_data": {"description": "Whether the databroker collects data about your relatives", "title": "Has Relative Data", "type": "boolean"}, "has_address_data": {"description": "Whether the databroker collects addresses", "title": "Has Address Data", "type": "boolean"}, "has_email_data": {"description": "Whether the databroker collects emails", "title": "Has Email Data", "type": "boolean"}, "has_phone_data": {"description": "Whether the databroker collects phone numbers", "title": "Has Phone Data", "type": "boolean"}, "has_company_data": {"description": "Whether the databroker collects company data", "title": "Has Company Data", "type": "boolean"}}, "required": ["has_name_data", "has_relative_data", "has_address_data", "has_email_data", "has_phone_data", "has_company_data"], "title": "DataMappingOutput", "type": "object"}, "OptoutEventDatabroker": {"properties": {"uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Uuid", "type": "string"}, "name": {"examples": ["Malicious Databroker"], "title": "Name", "type": "string"}, "homepage_url": {"examples": ["https://example.com"], "title": "Homepage Url", "type": "string"}}, "required": ["uuid", "name", "homepage_url"], "title": "OptoutEventDatabroker", "type": "object"}}, "properties": {"databroker": {"anyOf": [{"$ref": "#/components/schemas/OptoutEventDatabroker"}, {"type": "null"}], "default": null, "description": "The data broker this event is about. Present for per-broker events (`profile_found`, `profile_not_found`, `removal_request_submitted`, `submitted_outdated`, `escalation`, `profile_removed`, and the `custom_request_*` events). `null` for account-level events that describe a report rather than a broker (`new_exposure_report`, `new_custom_exposure_report`, `new_periodic_report`, `new_removal_report`, `new_submitted_report`)."}, "databroker.datamapping": {"anyOf": [{"$ref": "#/components/schemas/DataMappingOutput"}, {"type": "null"}], "default": null, "description": "The types of data that the data broker collects."}, "message": {"description": "Textual description of the event.", "examples": ["No profile exposure found at Acme Data Brokers."], "title": "Message", "type": "string"}, "created_at": {"description": "When the event occurred.", "examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "member_uuid": {"description": "The member this event relates to.", "examples": ["da0a7c08-705d-44fa-a2f0-e89c282809ff"], "format": "uuid", "title": "Member Uuid", "type": "string"}}, "required": ["message", "created_at", "member_uuid"], "title": "OptOutEventPayload", "type": "object"}, "OptOutEventPayload__optout_event_custom_request_submitted": {"$defs": {"DataMappingOutput": {"properties": {"has_name_data": {"description": "Whether the databroker collects names", "title": "Has Name Data", "type": "boolean"}, "has_relative_data": {"description": "Whether the databroker collects data about your relatives", "title": "Has Relative Data", "type": "boolean"}, "has_address_data": {"description": "Whether the databroker collects addresses", "title": "Has Address Data", "type": "boolean"}, "has_email_data": {"description": "Whether the databroker collects emails", "title": "Has Email Data", "type": "boolean"}, "has_phone_data": {"description": "Whether the databroker collects phone numbers", "title": "Has Phone Data", "type": "boolean"}, "has_company_data": {"description": "Whether the databroker collects company data", "title": "Has Company Data", "type": "boolean"}}, "required": ["has_name_data", "has_relative_data", "has_address_data", "has_email_data", "has_phone_data", "has_company_data"], "title": "DataMappingOutput", "type": "object"}, "OptoutEventDatabroker": {"properties": {"uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Uuid", "type": "string"}, "name": {"examples": ["Malicious Databroker"], "title": "Name", "type": "string"}, "homepage_url": {"examples": ["https://example.com"], "title": "Homepage Url", "type": "string"}}, "required": ["uuid", "name", "homepage_url"], "title": "OptoutEventDatabroker", "type": "object"}}, "properties": {"databroker": {"anyOf": [{"$ref": "#/components/schemas/OptoutEventDatabroker"}, {"type": "null"}], "default": null, "description": "The data broker this event is about. Present for per-broker events (`profile_found`, `profile_not_found`, `removal_request_submitted`, `submitted_outdated`, `escalation`, `profile_removed`, and the `custom_request_*` events). `null` for account-level events that describe a report rather than a broker (`new_exposure_report`, `new_custom_exposure_report`, `new_periodic_report`, `new_removal_report`, `new_submitted_report`)."}, "databroker.datamapping": {"anyOf": [{"$ref": "#/components/schemas/DataMappingOutput"}, {"type": "null"}], "default": null, "description": "The types of data that the data broker collects."}, "message": {"description": "Textual description of the event.", "examples": ["Your custom request for Acme Data Brokers is submitted successfully."], "title": "Message", "type": "string"}, "created_at": {"description": "When the event occurred.", "examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "member_uuid": {"description": "The member this event relates to.", "examples": ["da0a7c08-705d-44fa-a2f0-e89c282809ff"], "format": "uuid", "title": "Member Uuid", "type": "string"}}, "required": ["message", "created_at", "member_uuid"], "title": "OptOutEventPayload", "type": "object"}, "OptOutEventPayload__optout_event_custom_request_accepted": {"$defs": {"DataMappingOutput": {"properties": {"has_name_data": {"description": "Whether the databroker collects names", "title": "Has Name Data", "type": "boolean"}, "has_relative_data": {"description": "Whether the databroker collects data about your relatives", "title": "Has Relative Data", "type": "boolean"}, "has_address_data": {"description": "Whether the databroker collects addresses", "title": "Has Address Data", "type": "boolean"}, "has_email_data": {"description": "Whether the databroker collects emails", "title": "Has Email Data", "type": "boolean"}, "has_phone_data": {"description": "Whether the databroker collects phone numbers", "title": "Has Phone Data", "type": "boolean"}, "has_company_data": {"description": "Whether the databroker collects company data", "title": "Has Company Data", "type": "boolean"}}, "required": ["has_name_data", "has_relative_data", "has_address_data", "has_email_data", "has_phone_data", "has_company_data"], "title": "DataMappingOutput", "type": "object"}, "OptoutEventDatabroker": {"properties": {"uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Uuid", "type": "string"}, "name": {"examples": ["Malicious Databroker"], "title": "Name", "type": "string"}, "homepage_url": {"examples": ["https://example.com"], "title": "Homepage Url", "type": "string"}}, "required": ["uuid", "name", "homepage_url"], "title": "OptoutEventDatabroker", "type": "object"}}, "properties": {"databroker": {"anyOf": [{"$ref": "#/components/schemas/OptoutEventDatabroker"}, {"type": "null"}], "default": null, "description": "The data broker this event is about. Present for per-broker events (`profile_found`, `profile_not_found`, `removal_request_submitted`, `submitted_outdated`, `escalation`, `profile_removed`, and the `custom_request_*` events). `null` for account-level events that describe a report rather than a broker (`new_exposure_report`, `new_custom_exposure_report`, `new_periodic_report`, `new_removal_report`, `new_submitted_report`)."}, "databroker.datamapping": {"anyOf": [{"$ref": "#/components/schemas/DataMappingOutput"}, {"type": "null"}], "default": null, "description": "The types of data that the data broker collects."}, "message": {"description": "Textual description of the event.", "examples": ["Your custom request for Acme Data Brokers is accepted."], "title": "Message", "type": "string"}, "created_at": {"description": "When the event occurred.", "examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "member_uuid": {"description": "The member this event relates to.", "examples": ["da0a7c08-705d-44fa-a2f0-e89c282809ff"], "format": "uuid", "title": "Member Uuid", "type": "string"}}, "required": ["message", "created_at", "member_uuid"], "title": "OptOutEventPayload", "type": "object"}, "OptOutEventPayload__optout_event_custom_request_rejected": {"$defs": {"DataMappingOutput": {"properties": {"has_name_data": {"description": "Whether the databroker collects names", "title": "Has Name Data", "type": "boolean"}, "has_relative_data": {"description": "Whether the databroker collects data about your relatives", "title": "Has Relative Data", "type": "boolean"}, "has_address_data": {"description": "Whether the databroker collects addresses", "title": "Has Address Data", "type": "boolean"}, "has_email_data": {"description": "Whether the databroker collects emails", "title": "Has Email Data", "type": "boolean"}, "has_phone_data": {"description": "Whether the databroker collects phone numbers", "title": "Has Phone Data", "type": "boolean"}, "has_company_data": {"description": "Whether the databroker collects company data", "title": "Has Company Data", "type": "boolean"}}, "required": ["has_name_data", "has_relative_data", "has_address_data", "has_email_data", "has_phone_data", "has_company_data"], "title": "DataMappingOutput", "type": "object"}, "OptoutEventDatabroker": {"properties": {"uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Uuid", "type": "string"}, "name": {"examples": ["Malicious Databroker"], "title": "Name", "type": "string"}, "homepage_url": {"examples": ["https://example.com"], "title": "Homepage Url", "type": "string"}}, "required": ["uuid", "name", "homepage_url"], "title": "OptoutEventDatabroker", "type": "object"}}, "properties": {"databroker": {"anyOf": [{"$ref": "#/components/schemas/OptoutEventDatabroker"}, {"type": "null"}], "default": null, "description": "The data broker this event is about. Present for per-broker events (`profile_found`, `profile_not_found`, `removal_request_submitted`, `submitted_outdated`, `escalation`, `profile_removed`, and the `custom_request_*` events). `null` for account-level events that describe a report rather than a broker (`new_exposure_report`, `new_custom_exposure_report`, `new_periodic_report`, `new_removal_report`, `new_submitted_report`)."}, "databroker.datamapping": {"anyOf": [{"$ref": "#/components/schemas/DataMappingOutput"}, {"type": "null"}], "default": null, "description": "The types of data that the data broker collects."}, "message": {"description": "Textual description of the event.", "examples": ["Your custom request for Acme Data Brokers is rejected."], "title": "Message", "type": "string"}, "created_at": {"description": "When the event occurred.", "examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "member_uuid": {"description": "The member this event relates to.", "examples": ["da0a7c08-705d-44fa-a2f0-e89c282809ff"], "format": "uuid", "title": "Member Uuid", "type": "string"}}, "required": ["message", "created_at", "member_uuid"], "title": "OptOutEventPayload", "type": "object"}, "OptOutEventPayload__optout_event_new_exposure_report": {"$defs": {"DataMappingOutput": {"properties": {"has_name_data": {"description": "Whether the databroker collects names", "title": "Has Name Data", "type": "boolean"}, "has_relative_data": {"description": "Whether the databroker collects data about your relatives", "title": "Has Relative Data", "type": "boolean"}, "has_address_data": {"description": "Whether the databroker collects addresses", "title": "Has Address Data", "type": "boolean"}, "has_email_data": {"description": "Whether the databroker collects emails", "title": "Has Email Data", "type": "boolean"}, "has_phone_data": {"description": "Whether the databroker collects phone numbers", "title": "Has Phone Data", "type": "boolean"}, "has_company_data": {"description": "Whether the databroker collects company data", "title": "Has Company Data", "type": "boolean"}}, "required": ["has_name_data", "has_relative_data", "has_address_data", "has_email_data", "has_phone_data", "has_company_data"], "title": "DataMappingOutput", "type": "object"}, "OptoutEventDatabroker": {"properties": {"uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Uuid", "type": "string"}, "name": {"examples": ["Malicious Databroker"], "title": "Name", "type": "string"}, "homepage_url": {"examples": ["https://example.com"], "title": "Homepage Url", "type": "string"}}, "required": ["uuid", "name", "homepage_url"], "title": "OptoutEventDatabroker", "type": "object"}}, "properties": {"databroker": {"anyOf": [{"$ref": "#/components/schemas/OptoutEventDatabroker"}, {"type": "null"}], "default": null, "description": "The data broker this event is about. Present for per-broker events (`profile_found`, `profile_not_found`, `removal_request_submitted`, `submitted_outdated`, `escalation`, `profile_removed`, and the `custom_request_*` events). `null` for account-level events that describe a report rather than a broker (`new_exposure_report`, `new_custom_exposure_report`, `new_periodic_report`, `new_removal_report`, `new_submitted_report`)."}, "databroker.datamapping": {"anyOf": [{"$ref": "#/components/schemas/DataMappingOutput"}, {"type": "null"}], "default": null, "description": "The types of data that the data broker collects."}, "message": {"description": "Textual description of the event.", "examples": ["New exposure report available."], "title": "Message", "type": "string"}, "created_at": {"description": "When the event occurred.", "examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "member_uuid": {"description": "The member this event relates to.", "examples": ["da0a7c08-705d-44fa-a2f0-e89c282809ff"], "format": "uuid", "title": "Member Uuid", "type": "string"}}, "required": ["message", "created_at", "member_uuid"], "title": "OptOutEventPayload", "type": "object"}, "OptOutEventPayload__optout_event_new_custom_exposure_report": {"$defs": {"DataMappingOutput": {"properties": {"has_name_data": {"description": "Whether the databroker collects names", "title": "Has Name Data", "type": "boolean"}, "has_relative_data": {"description": "Whether the databroker collects data about your relatives", "title": "Has Relative Data", "type": "boolean"}, "has_address_data": {"description": "Whether the databroker collects addresses", "title": "Has Address Data", "type": "boolean"}, "has_email_data": {"description": "Whether the databroker collects emails", "title": "Has Email Data", "type": "boolean"}, "has_phone_data": {"description": "Whether the databroker collects phone numbers", "title": "Has Phone Data", "type": "boolean"}, "has_company_data": {"description": "Whether the databroker collects company data", "title": "Has Company Data", "type": "boolean"}}, "required": ["has_name_data", "has_relative_data", "has_address_data", "has_email_data", "has_phone_data", "has_company_data"], "title": "DataMappingOutput", "type": "object"}, "OptoutEventDatabroker": {"properties": {"uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Uuid", "type": "string"}, "name": {"examples": ["Malicious Databroker"], "title": "Name", "type": "string"}, "homepage_url": {"examples": ["https://example.com"], "title": "Homepage Url", "type": "string"}}, "required": ["uuid", "name", "homepage_url"], "title": "OptoutEventDatabroker", "type": "object"}}, "properties": {"databroker": {"anyOf": [{"$ref": "#/components/schemas/OptoutEventDatabroker"}, {"type": "null"}], "default": null, "description": "The data broker this event is about. Present for per-broker events (`profile_found`, `profile_not_found`, `removal_request_submitted`, `submitted_outdated`, `escalation`, `profile_removed`, and the `custom_request_*` events). `null` for account-level events that describe a report rather than a broker (`new_exposure_report`, `new_custom_exposure_report`, `new_periodic_report`, `new_removal_report`, `new_submitted_report`)."}, "databroker.datamapping": {"anyOf": [{"$ref": "#/components/schemas/DataMappingOutput"}, {"type": "null"}], "default": null, "description": "The types of data that the data broker collects."}, "message": {"description": "Textual description of the event.", "examples": ["New custom exposure report available."], "title": "Message", "type": "string"}, "created_at": {"description": "When the event occurred.", "examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "member_uuid": {"description": "The member this event relates to.", "examples": ["da0a7c08-705d-44fa-a2f0-e89c282809ff"], "format": "uuid", "title": "Member Uuid", "type": "string"}}, "required": ["message", "created_at", "member_uuid"], "title": "OptOutEventPayload", "type": "object"}, "OptOutEventPayload__optout_event_new_removal_report": {"$defs": {"DataMappingOutput": {"properties": {"has_name_data": {"description": "Whether the databroker collects names", "title": "Has Name Data", "type": "boolean"}, "has_relative_data": {"description": "Whether the databroker collects data about your relatives", "title": "Has Relative Data", "type": "boolean"}, "has_address_data": {"description": "Whether the databroker collects addresses", "title": "Has Address Data", "type": "boolean"}, "has_email_data": {"description": "Whether the databroker collects emails", "title": "Has Email Data", "type": "boolean"}, "has_phone_data": {"description": "Whether the databroker collects phone numbers", "title": "Has Phone Data", "type": "boolean"}, "has_company_data": {"description": "Whether the databroker collects company data", "title": "Has Company Data", "type": "boolean"}}, "required": ["has_name_data", "has_relative_data", "has_address_data", "has_email_data", "has_phone_data", "has_company_data"], "title": "DataMappingOutput", "type": "object"}, "OptoutEventDatabroker": {"properties": {"uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Uuid", "type": "string"}, "name": {"examples": ["Malicious Databroker"], "title": "Name", "type": "string"}, "homepage_url": {"examples": ["https://example.com"], "title": "Homepage Url", "type": "string"}}, "required": ["uuid", "name", "homepage_url"], "title": "OptoutEventDatabroker", "type": "object"}}, "properties": {"databroker": {"anyOf": [{"$ref": "#/components/schemas/OptoutEventDatabroker"}, {"type": "null"}], "default": null, "description": "The data broker this event is about. Present for per-broker events (`profile_found`, `profile_not_found`, `removal_request_submitted`, `submitted_outdated`, `escalation`, `profile_removed`, and the `custom_request_*` events). `null` for account-level events that describe a report rather than a broker (`new_exposure_report`, `new_custom_exposure_report`, `new_periodic_report`, `new_removal_report`, `new_submitted_report`)."}, "databroker.datamapping": {"anyOf": [{"$ref": "#/components/schemas/DataMappingOutput"}, {"type": "null"}], "default": null, "description": "The types of data that the data broker collects."}, "message": {"description": "Textual description of the event.", "examples": ["New removal report available."], "title": "Message", "type": "string"}, "created_at": {"description": "When the event occurred.", "examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "member_uuid": {"description": "The member this event relates to.", "examples": ["da0a7c08-705d-44fa-a2f0-e89c282809ff"], "format": "uuid", "title": "Member Uuid", "type": "string"}}, "required": ["message", "created_at", "member_uuid"], "title": "OptOutEventPayload", "type": "object"}, "OptOutEventPayload__optout_event_new_periodic_report": {"$defs": {"DataMappingOutput": {"properties": {"has_name_data": {"description": "Whether the databroker collects names", "title": "Has Name Data", "type": "boolean"}, "has_relative_data": {"description": "Whether the databroker collects data about your relatives", "title": "Has Relative Data", "type": "boolean"}, "has_address_data": {"description": "Whether the databroker collects addresses", "title": "Has Address Data", "type": "boolean"}, "has_email_data": {"description": "Whether the databroker collects emails", "title": "Has Email Data", "type": "boolean"}, "has_phone_data": {"description": "Whether the databroker collects phone numbers", "title": "Has Phone Data", "type": "boolean"}, "has_company_data": {"description": "Whether the databroker collects company data", "title": "Has Company Data", "type": "boolean"}}, "required": ["has_name_data", "has_relative_data", "has_address_data", "has_email_data", "has_phone_data", "has_company_data"], "title": "DataMappingOutput", "type": "object"}, "OptoutEventDatabroker": {"properties": {"uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Uuid", "type": "string"}, "name": {"examples": ["Malicious Databroker"], "title": "Name", "type": "string"}, "homepage_url": {"examples": ["https://example.com"], "title": "Homepage Url", "type": "string"}}, "required": ["uuid", "name", "homepage_url"], "title": "OptoutEventDatabroker", "type": "object"}}, "properties": {"databroker": {"anyOf": [{"$ref": "#/components/schemas/OptoutEventDatabroker"}, {"type": "null"}], "default": null, "description": "The data broker this event is about. Present for per-broker events (`profile_found`, `profile_not_found`, `removal_request_submitted`, `submitted_outdated`, `escalation`, `profile_removed`, and the `custom_request_*` events). `null` for account-level events that describe a report rather than a broker (`new_exposure_report`, `new_custom_exposure_report`, `new_periodic_report`, `new_removal_report`, `new_submitted_report`)."}, "databroker.datamapping": {"anyOf": [{"$ref": "#/components/schemas/DataMappingOutput"}, {"type": "null"}], "default": null, "description": "The types of data that the data broker collects."}, "message": {"description": "Textual description of the event.", "examples": ["New periodic exposure report available."], "title": "Message", "type": "string"}, "created_at": {"description": "When the event occurred.", "examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "member_uuid": {"description": "The member this event relates to.", "examples": ["da0a7c08-705d-44fa-a2f0-e89c282809ff"], "format": "uuid", "title": "Member Uuid", "type": "string"}}, "required": ["message", "created_at", "member_uuid"], "title": "OptOutEventPayload", "type": "object"}, "OptOutEventPayload__optout_event_new_submitted_report": {"$defs": {"DataMappingOutput": {"properties": {"has_name_data": {"description": "Whether the databroker collects names", "title": "Has Name Data", "type": "boolean"}, "has_relative_data": {"description": "Whether the databroker collects data about your relatives", "title": "Has Relative Data", "type": "boolean"}, "has_address_data": {"description": "Whether the databroker collects addresses", "title": "Has Address Data", "type": "boolean"}, "has_email_data": {"description": "Whether the databroker collects emails", "title": "Has Email Data", "type": "boolean"}, "has_phone_data": {"description": "Whether the databroker collects phone numbers", "title": "Has Phone Data", "type": "boolean"}, "has_company_data": {"description": "Whether the databroker collects company data", "title": "Has Company Data", "type": "boolean"}}, "required": ["has_name_data", "has_relative_data", "has_address_data", "has_email_data", "has_phone_data", "has_company_data"], "title": "DataMappingOutput", "type": "object"}, "OptoutEventDatabroker": {"properties": {"uuid": {"examples": ["b8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d"], "format": "uuid", "title": "Uuid", "type": "string"}, "name": {"examples": ["Malicious Databroker"], "title": "Name", "type": "string"}, "homepage_url": {"examples": ["https://example.com"], "title": "Homepage Url", "type": "string"}}, "required": ["uuid", "name", "homepage_url"], "title": "OptoutEventDatabroker", "type": "object"}}, "properties": {"databroker": {"anyOf": [{"$ref": "#/components/schemas/OptoutEventDatabroker"}, {"type": "null"}], "default": null, "description": "The data broker this event is about. Present for per-broker events (`profile_found`, `profile_not_found`, `removal_request_submitted`, `submitted_outdated`, `escalation`, `profile_removed`, and the `custom_request_*` events). `null` for account-level events that describe a report rather than a broker (`new_exposure_report`, `new_custom_exposure_report`, `new_periodic_report`, `new_removal_report`, `new_submitted_report`)."}, "databroker.datamapping": {"anyOf": [{"$ref": "#/components/schemas/DataMappingOutput"}, {"type": "null"}], "default": null, "description": "The types of data that the data broker collects."}, "message": {"description": "Textual description of the event.", "examples": ["Recurring scheduled scan completed."], "title": "Message", "type": "string"}, "created_at": {"description": "When the event occurred.", "examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "member_uuid": {"description": "The member this event relates to.", "examples": ["da0a7c08-705d-44fa-a2f0-e89c282809ff"], "format": "uuid", "title": "Member Uuid", "type": "string"}}, "required": ["message", "created_at", "member_uuid"], "title": "OptOutEventPayload", "type": "object"}, "RemovalIssuesPayload__optout_removal_issues_created": {"properties": {"e_id": {"examples": ["AYW5J9", "AYW5J8"], "title": "E Id", "type": "string"}, "get_status_display": {"examples": ["Submitted", "In Progress", "Removed", "Unsuccessful", "Deleted"], "title": "Get Status Display", "type": "string"}, "last_status_update_at": {"format": "date-time", "title": "Last Status Update At", "type": "string"}, "reason_unsuccessful": {"default": null, "title": "Reason Unsuccessful", "type": ["string", "null"]}, "expose_url": {"examples": ["https://malicious-databroker-example/your/name/"], "title": "Expose Url", "type": "string"}, "created_at": {"examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "databroker.name": {"default": null, "examples": ["Malicious Databroker"], "title": "Databroker.Name", "type": ["string", "null"]}, "data_exposure_image": {"default": null, "examples": ["https://optery.com/path/to/data_exposure_image.jpg"], "title": "Data Exposure Image", "type": ["string", "null"]}}, "required": ["e_id", "get_status_display", "last_status_update_at", "expose_url", "created_at"], "title": "RemovalIssuesPayload", "type": "object"}, "RemovalIssuesPayload__optout_removal_issues_updated": {"properties": {"e_id": {"examples": ["AYW5J9", "AYW5J8"], "title": "E Id", "type": "string"}, "get_status_display": {"examples": ["Submitted", "In Progress", "Removed", "Unsuccessful", "Deleted"], "title": "Get Status Display", "type": "string"}, "last_status_update_at": {"format": "date-time", "title": "Last Status Update At", "type": "string"}, "reason_unsuccessful": {"default": null, "title": "Reason Unsuccessful", "type": ["string", "null"]}, "expose_url": {"examples": ["https://malicious-databroker-example/your/name/"], "title": "Expose Url", "type": "string"}, "created_at": {"examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "databroker.name": {"default": null, "examples": ["Malicious Databroker"], "title": "Databroker.Name", "type": ["string", "null"]}, "data_exposure_image": {"default": null, "examples": ["https://optery.com/path/to/data_exposure_image.jpg"], "title": "Data Exposure Image", "type": ["string", "null"]}}, "required": ["e_id", "get_status_display", "last_status_update_at", "expose_url", "created_at"], "title": "RemovalIssuesPayload", "type": "object"}, "CustomRemovalsPayload__optout_custom_removals_created": {"properties": {"e_id": {"examples": ["AYW5J9", "AYW5J8"], "title": "E Id", "type": "string"}, "get_status_display": {"examples": ["Submitted", "In Progress", "Removed", "Unsuccessful", "Deleted"], "title": "Get Status Display", "type": "string"}, "last_status_update_at": {"format": "date-time", "title": "Last Status Update At", "type": "string"}, "reason_unsuccessful": {"default": null, "title": "Reason Unsuccessful", "type": ["string", "null"]}, "expose_url": {"examples": ["https://malicious-databroker-example/your/name/"], "title": "Expose Url", "type": "string"}, "created_at": {"examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "databroker.name": {"default": null, "examples": ["Malicious Databroker"], "title": "Databroker.Name", "type": ["string", "null"]}, "data_exposure_image": {"default": null, "examples": ["https://optery.com/path/to/data_exposure_image.jpg"], "title": "Data Exposure Image", "type": ["string", "null"]}}, "required": ["e_id", "get_status_display", "last_status_update_at", "expose_url", "created_at"], "title": "CustomRemovalsPayload", "type": "object"}, "CustomRemovalsPayload__optout_custom_removals_updated": {"properties": {"e_id": {"examples": ["AYW5J9", "AYW5J8"], "title": "E Id", "type": "string"}, "get_status_display": {"examples": ["Submitted", "In Progress", "Removed", "Unsuccessful", "Deleted"], "title": "Get Status Display", "type": "string"}, "last_status_update_at": {"format": "date-time", "title": "Last Status Update At", "type": "string"}, "reason_unsuccessful": {"default": null, "title": "Reason Unsuccessful", "type": ["string", "null"]}, "expose_url": {"examples": ["https://malicious-databroker-example/your/name/"], "title": "Expose Url", "type": "string"}, "created_at": {"examples": ["2021-10-06T12:00:00Z"], "format": "date-time", "title": "Created At", "type": "string"}, "databroker.name": {"default": null, "examples": ["Malicious Databroker"], "title": "Databroker.Name", "type": ["string", "null"]}, "data_exposure_image": {"default": null, "examples": ["https://optery.com/path/to/data_exposure_image.jpg"], "title": "Data Exposure Image", "type": ["string", "null"]}}, "required": ["e_id", "get_status_display", "last_status_update_at", "expose_url", "created_at"], "title": "CustomRemovalsPayload", "type": "object"}, "ExposureReportPayload__optout_report_created": {"properties": {"member_uuid": {"description": "The UUID of the user whose data is exposed.", "examples": ["64d8e477-0c91-41a7-a6c1-d17886e73c33"], "format": "uuid", "title": "Member Uuid", "type": "string"}, "report_date": {"description": "The date when the report was generated.", "examples": ["2025-07-25"], "format": "date", "title": "Report Date", "type": "string"}, "report_type": {"description": "The type of the exposure report.", "examples": ["Exposure Report", "Removal Report", "Periodic Exposure Report", "Submitted Exposure Report"], "title": "Report Type", "type": "string"}, "screenshots": {"description": "API endpoint to retrieve screenshots from the exposure report.", "examples": ["https://business-api.optery.com/v1/optouts/64d8e477-0c91-41a7-a6c1-d17886e73c33/get-screenshots-by-scan/00006"], "format": "uri", "maxLength": 2083, "minLength": 1, "title": "Screenshots", "type": "string"}, "report_pdf": {"description": "URL to the PDF report.", "examples": ["https://media.optery.com/uploads/exposure-report/63b18ee51ecb4a5f8f056fbb13098232.pdf?Expires=1754954117&Signature=DOH7dIDAKuAab5rAtQblxhDo-hn1tdcRDvYR1gJMCVuFJG43PKhXUAdtNwXxzBLpUetNXhNzn3py4xt5saJgZTglHRx7K8v9DarZ7PhYbZkIAwCWRiX8yq~aGaDor9jchQcbnnimVAdgaKDisFN9PCTMwlIj0JY6qigKQ6uM~9eSdgvhNrzxglOk0jFydtosfdcvT20hlmduRssXTDenzavbxKclurqLXlA14uOlM5idgMeY-AxoCwRBj0rVDVSumlDnIEvtONpyOI6rQl74GP9LJk01w1UR664KBXKl46AoeQOCCEQacx-1CDmproLaYynj6mPpBjzB7XCmi-LEBQ__&Key-Pair-Id=KFIF2MUPFQWYY"], "title": "Report Pdf", "format": "uri", "maxLength": 2083, "minLength": 1, "type": ["string", "null"]}}, "required": ["member_uuid", "report_date", "report_type", "screenshots", "report_pdf"], "title": "ExposureReportPayload", "type": "object"}, "ErrorResponse": {"title": "ErrorResponse", "type": "object", "properties": {"message": {"type": "string", "description": "Human-readable description of what went wrong.", "examples": ["Rate limit exceeded."]}}, "required": ["message"]}}, "securitySchemes": {"OpteryAuthBearer": {"type": "http", "scheme": "bearer"}}, "responses": {"RateLimited": {"description": "Rate limit exceeded. Back off and retry once the window resets.", "headers": {"Retry-After": {"description": "Seconds to wait before retrying; matches X-RateLimit-Reset.", "schema": {"type": "integer"}}, "X-Request-ID": {"$ref": "#/components/headers/RequestId"}, "X-RateLimit-Limit": {"$ref": "#/components/headers/RateLimitLimit"}, "X-RateLimit-Remaining": {"$ref": "#/components/headers/RateLimitRemaining"}, "X-RateLimit-Reset": {"$ref": "#/components/headers/RateLimitReset"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}}, "headers": {"RequestId": {"description": "Unique identifier for this request. Echoed from the `X-Request-Id` request header when you send one (non-empty, at most 200 characters, no spaces or square brackets), and generated by Optery otherwise. Include it when contacting support so we can trace the call.", "schema": {"type": "string"}}, "RateLimitLimit": {"description": "Requests allowed per window for your API key.", "schema": {"type": "integer"}}, "RateLimitRemaining": {"description": "Requests remaining in the current window.", "schema": {"type": "integer"}}, "RateLimitReset": {"description": "Seconds until the current window resets.", "schema": {"type": "integer"}}, "TotalCount": {"description": "Total number of rows across every page, not just this one. Compare it to the length of the returned array to detect a truncated page; page further with the `offset` query parameter.", "schema": {"type": "integer"}}}}, "servers": [{"url": "https://public-api-sandbox.test.optery.com", "description": "Sandbox"}, {"url": "https://business-api.optery.com", "description": "Production"}], "tags": [{"name": "Members", "description": "Create, read, update, and delete the members your organization monitors."}, {"name": "Member/Alt. Names", "description": "Alternate names for a member, used to improve data broker matching."}, {"name": "Member/Emails", "description": "Email addresses associated with a member."}, {"name": "Member/Phones", "description": "Phone numbers associated with a member."}, {"name": "Member/Addresses", "description": "Current and previous addresses for a member."}, {"name": "Member/Relatives", "description": "Known relatives of a member, used to improve data broker matching."}, {"name": "Member/Companies", "description": "Companies associated with a member."}, {"name": "Member/Additional Info", "description": "Additional profile details for a member."}, {"name": "Member/Optout Settings", "description": "Per-member opt-out configuration."}, {"name": "Member/Invites", "description": "Invite a member by email instead of adding them directly."}, {"name": "Opt-Out", "description": "Opt-out status and statistics for your organization."}, {"name": "Opt-Out/Scan", "description": "Exposure scans that locate a member on data broker sites."}, {"name": "Databrokers", "description": "The data brokers Optery covers."}, {"name": "Subscriptions", "description": "Plans and member subscriptions."}, {"name": "Exports", "description": "Removal reports and end-user agreement templates."}, {"name": "Organization", "description": "Details about your organization."}, {"name": "Regions", "description": "The countries and states accepted when adding or editing a member."}, {"name": "Webhooks", "description": "Subscribe to event notifications and manage webhook endpoints."}], "webhooks": {"optout.event.profile_found": {"post": {"summary": "optout.event.profile_found", "description": "Sent when a scan finds a new profile exposure for the member at a data broker.", "tags": ["optout.event"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.event.profile_found"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/OptOutEventPayload__optout_event_profile_found"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}, "optout.event.removal_request_submitted": {"post": {"summary": "optout.event.removal_request_submitted", "description": "Sent when Optery submits a removal request to a data broker.", "tags": ["optout.event"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.event.removal_request_submitted"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/OptOutEventPayload__optout_event_removal_request_submitted"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}, "optout.event.submitted_outdated": {"post": {"summary": "optout.event.submitted_outdated", "description": "Sent when Optery submits an outdated-content removal request to a search engine (e.g. Google), rather than a standard data broker removal request.", "tags": ["optout.event"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.event.submitted_outdated"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/OptOutEventPayload__optout_event_submitted_outdated"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}, "optout.event.escalation": {"post": {"summary": "optout.event.escalation", "description": "Sent when a removal request is escalated for manual intervention.", "tags": ["optout.event"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.event.escalation"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/OptOutEventPayload__optout_event_escalation"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}, "optout.event.profile_removed": {"post": {"summary": "optout.event.profile_removed", "description": "Sent when a data broker confirms a profile has been removed.", "tags": ["optout.event"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.event.profile_removed"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/OptOutEventPayload__optout_event_profile_removed"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}, "optout.event.profile_not_found": {"post": {"summary": "optout.event.profile_not_found", "description": "Sent when a scan finds no profile exposure at a data broker.", "tags": ["optout.event"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.event.profile_not_found"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/OptOutEventPayload__optout_event_profile_not_found"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}, "optout.event.custom_request_submitted": {"post": {"summary": "optout.event.custom_request_submitted", "description": "Sent when a custom removal request is submitted for the member.", "tags": ["optout.event"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.event.custom_request_submitted"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/OptOutEventPayload__optout_event_custom_request_submitted"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}, "optout.event.custom_request_accepted": {"post": {"summary": "optout.event.custom_request_accepted", "description": "Sent when a custom removal request is accepted by the data broker.", "tags": ["optout.event"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.event.custom_request_accepted"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/OptOutEventPayload__optout_event_custom_request_accepted"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}, "optout.event.custom_request_rejected": {"post": {"summary": "optout.event.custom_request_rejected", "description": "Sent when a custom removal request is rejected by the data broker.", "tags": ["optout.event"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.event.custom_request_rejected"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/OptOutEventPayload__optout_event_custom_request_rejected"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}, "optout.event.new_exposure_report": {"post": {"summary": "optout.event.new_exposure_report", "description": "Sent when the member's initial exposure report finishes generating, covering their first full scan.", "tags": ["optout.event"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.event.new_exposure_report"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/OptOutEventPayload__optout_event_new_exposure_report"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}, "optout.event.new_custom_exposure_report": {"post": {"summary": "optout.event.new_custom_exposure_report", "description": "Sent when the member's custom-scan exposure report finishes generating.", "tags": ["optout.event"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.event.new_custom_exposure_report"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/OptOutEventPayload__optout_event_new_custom_exposure_report"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}, "optout.event.new_removal_report": {"post": {"summary": "optout.event.new_removal_report", "description": "Sent when the member's removal report finishes generating, summarizing what has been removed on their behalf.", "tags": ["optout.event"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.event.new_removal_report"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/OptOutEventPayload__optout_event_new_removal_report"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}, "optout.event.new_periodic_report": {"post": {"summary": "optout.event.new_periodic_report", "description": "Sent when a scheduled periodic re-scan finishes and produces an updated exposure report.", "tags": ["optout.event"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.event.new_periodic_report"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/OptOutEventPayload__optout_event_new_periodic_report"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}, "optout.event.new_submitted_report": {"post": {"summary": "optout.event.new_submitted_report", "description": "Sent when a recurring scheduled scan-and-submit cycle completes.", "tags": ["optout.event"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.event.new_submitted_report"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/OptOutEventPayload__optout_event_new_submitted_report"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}, "optout.removal_issues.created": {"post": {"summary": "optout.removal_issues.created", "description": "Sometimes, Optery's automated detection may incorrectly mark a profile as \"Removed / Not Found\" even\nwhen it is still visible. This situation can occur when a data broker shows multiple instances of a\nprofile, when there are slight variations or outdated information in the profile details, or due to\ninherent limitations in our matching algorithms.\n\nFor paid subscribers who encounter this error, please report the issue by submitting the URL, a\nscreenshot, and any additional details. This information helps our team investigate and correct\nthe removal status, ensuring that your profile is properly handled.\n\nFor more information view the [documentation](https://help.optery.com/en/article/how-do-i-report-an-exposed-profile-or-removals-issue-that-optery-has-incorrectly-marked-removed-not-found-1d7rcth/).", "tags": ["optout.removal_issues"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.removal_issues.created"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/RemovalIssuesPayload__optout_removal_issues_created"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}, "optout.removal_issues.updated": {"post": {"summary": "optout.removal_issues.updated", "description": "Sometimes, Optery's automated detection may incorrectly mark a profile as \"Removed / Not Found\" even\nwhen it is still visible. This situation can occur when a data broker shows multiple instances of a\nprofile, when there are slight variations or outdated information in the profile details, or due to\ninherent limitations in our matching algorithms.\n\nFor paid subscribers who encounter this error, please report the issue by submitting the URL, a\nscreenshot, and any additional details. This information helps our team investigate and correct\nthe removal status, ensuring that your profile is properly handled.\n\nFor more information view the [documentation](https://help.optery.com/en/article/how-do-i-report-an-exposed-profile-or-removals-issue-that-optery-has-incorrectly-marked-removed-not-found-1d7rcth/).", "tags": ["optout.removal_issues"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.removal_issues.updated"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/RemovalIssuesPayload__optout_removal_issues_updated"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}, "optout.custom_removals.created": {"post": {"summary": "optout.custom_removals.created", "description": "The Ultimate plan allows subscribers to submit Custom Removals Requests for data brokers not covered on\nour official list. This best-effort service starts processing 30 days after the subscription is purchased\nand aims to remove unsupported profiles, with roughly 75% of requests successfully resulting in removal\nand around 25% remaining unsuccessful.\n\nPlease note that only full URLs leading directly to the profile are accepted. Requests using generic\ncompany names or partial URLs will be rejected. This service applies exclusively to data brokers\nand people search sites and does not extend to general web sites or social media.\n\nFor more information view the [documentation](https://help.optery.com/en/article/ultimate-plan-offers-best-effort-removals-for-unsupported-data-brokers-through-custom-removals-requests-lchi5e/).", "tags": ["optout.custom_removals"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.custom_removals.created"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/CustomRemovalsPayload__optout_custom_removals_created"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}, "optout.custom_removals.updated": {"post": {"summary": "optout.custom_removals.updated", "description": "The Ultimate plan allows subscribers to submit Custom Removals Requests for data brokers not covered on\nour official list. This best-effort service starts processing 30 days after the subscription is purchased\nand aims to remove unsupported profiles, with roughly 75% of requests successfully resulting in removal\nand around 25% remaining unsuccessful.\n\nPlease note that only full URLs leading directly to the profile are accepted. Requests using generic\ncompany names or partial URLs will be rejected. This service applies exclusively to data brokers\nand people search sites and does not extend to general web sites or social media.\n\nFor more information view the [documentation](https://help.optery.com/en/article/ultimate-plan-offers-best-effort-removals-for-unsupported-data-brokers-through-custom-removals-requests-lchi5e/).", "tags": ["optout.custom_removals"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.custom_removals.updated"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/CustomRemovalsPayload__optout_custom_removals_updated"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}, "optout.report.created": {"post": {"summary": "optout.report.created", "description": "A notification that a new report has been generated for a member.\n\nNotifications are sent for Exposure, Removal, Periodic Exposure, and Submitted Exporsure reports.", "tags": ["optout.report"], "parameters": [{"name": "x-hook0-signature", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Hook0 HMAC signature (supports t=, v0=, h=, v1= format)", "example": "t=1750439425,v0=97b5a29e490eb98338c254efdbe77aedb9450a008fd2e0e793cac8ca8adbaef6,h=content-type x-event-id x-event-type,v1=4bf319ff36fca82decea2b966128273b98b9c4f4be8d41b8b5cde6f01a0a6b46"}, {"name": "x-event-type", "in": "header", "required": true, "schema": {"type": "string"}, "description": "Type of the webhook event (e.g. optout.event.created)", "example": "optout.report.created"}, {"name": "x-event-id", "in": "header", "required": true, "schema": {"type": "string", "format": "uuid"}, "description": "Unique event ID", "example": "123e4567-e89b-12d3-a456-426614174000"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"properties": {"count": {"default": 0, "description": "How many events are included in this payload.", "examples": [1], "title": "Count", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/ExposureReportPayload__optout_report_created"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "Envelope", "type": "object"}}}}, "responses": {"200": {"description": "Webhook received"}}}}}, "externalDocs": {"description": "Optery Help Center", "url": "https://help.optery.com"}}