{"openapi":"3.1.1","jsonSchemaDialect":"https://json-schema.org/draft/2020-12/schema","info":{"title":"Nameclick API","version":"0.1.0","description":"Find a person and their work email from a LinkedIn address, an email, a GitHub login, a name with a company, or a name selected on a page. Nameclick by Sourcey."},"servers":[{"url":"https://api.nameclick.co","description":"Production"}],"tags":[{"name":"Lookups","description":"Finding people, and the people an account has found."},{"name":"Accounts","description":"Sign-in, lookups left and keys."},{"name":"Extension","description":"What the browser extension reads and reports."},{"name":"Removal","description":"A person asking to be removed."}],"paths":{"/v1/auth/start":{"get":{"operationId":"startSignIn","summary":"Open Google sign-in for the extension.","tags":["Accounts"],"security":[],"parameters":[{"name":"code_challenge","in":"query","required":true,"schema":{"type":"string","minLength":43,"maxLength":128}},{"name":"redirect_uri","in":"query","required":true,"schema":{"type":"string","maxLength":300,"format":"uri"}},{"name":"state","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"302":{"description":"Redirect.","headers":{"Location":{"schema":{"type":"string"}}}},"400":{"description":"The request does not match the contract.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Busy, or not open yet; see Retry-After when it is given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/auth/callback":{"get":{"operationId":"finishSignIn","summary":"Where Google returns; goes back to the extension with a one-time code.","tags":["Accounts"],"security":[],"responses":{"302":{"description":"Redirect.","headers":{"Location":{"schema":{"type":"string"}}}},"400":{"description":"The request does not match the contract.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Busy, or not open yet; see Retry-After when it is given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/auth/token":{"post":{"operationId":"exchangeSignIn","summary":"Trade the one-time code for the account's key.","tags":["Accounts"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangeSignInRequest"}}}},"responses":{"200":{"description":"Answered.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangeSignInResponse"}}}},"400":{"description":"The request does not match the contract.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Busy, or not open yet; see Retry-After when it is given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/auth/signout":{"post":{"operationId":"signOut","summary":"Revoke the key the request is signed with.","tags":["Accounts"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Answered.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignOutResponse"}}}},"401":{"description":"No key, or a key that is not live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Busy, or not open yet; see Retry-After when it is given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/me":{"get":{"operationId":"getMe","summary":"Lookups left this month, and when they reset.","tags":["Accounts"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Answered.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMeResponse"}}}},"401":{"description":"No key, or a key that is not live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Busy, or not open yet; see Retry-After when it is given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/lookups":{"post":{"operationId":"lookUp","summary":"Find a person and their work email. With a key it spends one lookup when an email is shown; without one it is the web finder's, by LinkedIn address only.","tags":["Lookups"],"security":[{},{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookUpRequest"}}}},"responses":{"200":{"description":"Answered.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookUpResponse"}}}},"400":{"description":"The request does not match the contract.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"No key, or a key that is not live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"The lookup did not finish; asking again is safe.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Busy, or not open yet; see Retry-After when it is given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/found":{"get":{"operationId":"listFound","summary":"The people this account has found, newest first, free to open again.","tags":["Lookups"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"before","in":"query","required":false,"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}}],"responses":{"200":{"description":"Answered.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFoundResponse"}}}},"400":{"description":"The request does not match the contract.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"No key, or a key that is not live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Busy, or not open yet; see Retry-After when it is given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/found/{person}":{"get":{"operationId":"getFound","summary":"One person this account found, opened again for free.","tags":["Lookups"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"person","in":"path","required":true,"schema":{"type":"string","pattern":"^per_[0-9a-f]{32}$","description":"A person in Nameclick's store, as find_contact returns it."}}],"responses":{"200":{"description":"Answered.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetFoundResponse"}}}},"400":{"description":"The request does not match the contract.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"No key, or a key that is not live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Busy, or not open yet; see Retry-After when it is given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/not-them":{"post":{"operationId":"reportNotThem","summary":"Report a wrong match. A charged lookup is given back, once.","tags":["Lookups"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportNotThemRequest"}}}},"responses":{"200":{"description":"Answered.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportNotThemResponse"}}}},"400":{"description":"The request does not match the contract.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"No key, or a key that is not live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Busy, or not open yet; see Retry-After when it is given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/keys":{"post":{"operationId":"createKey","summary":"A key for an agent, on this account's lookups.","tags":["Accounts"],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyResponse"}}}},"401":{"description":"No key, or a key that is not live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Busy, or not open yet; see Retry-After when it is given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"listKeys","summary":"This account's keys.","tags":["Accounts"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Answered.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListKeysResponse"}}}},"401":{"description":"No key, or a key that is not live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Busy, or not open yet; see Retry-After when it is given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/keys/{key}":{"delete":{"operationId":"revokeKey","summary":"Revoke one of this account's keys.","tags":["Accounts"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","pattern":"^key_[0-9a-f]{32}$"}}],"responses":{"200":{"description":"Answered.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeKeyResponse"}}}},"400":{"description":"The request does not match the contract.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"No key, or a key that is not live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Busy, or not open yet; see Retry-After when it is given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/demo":{"get":{"operationId":"getDemo","summary":"The card the install opens with, free.","tags":["Lookups"],"security":[],"responses":{"200":{"description":"Answered.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDemoResponse"}}}},"429":{"description":"Too many requests; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Busy, or not open yet; see Retry-After when it is given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/rules":{"get":{"operationId":"getRules","summary":"Profile address patterns for each platform, as versioned data.","tags":["Extension"],"security":[],"responses":{"200":{"description":"Answered.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRulesResponse"}}}},"429":{"description":"Too many requests; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Busy, or not open yet; see Retry-After when it is given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/events":{"post":{"operationId":"recordEvents","summary":"A batch of the extension's usage events: identifiers only.","tags":["Extension"],"security":[{},{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordEventsRequest"}}}},"responses":{"200":{"description":"Answered.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordEventsResponse"}}}},"400":{"description":"The request does not match the contract.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"No key, or a key that is not live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Busy, or not open yet; see Retry-After when it is given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/uninstalled":{"get":{"operationId":"uninstalled","summary":"Counts an uninstall, then lands on Nameclick's goodbye page.","tags":["Extension"],"security":[],"parameters":[{"name":"install","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"303":{"description":"Redirect.","headers":{"Location":{"schema":{"type":"string"}}}},"400":{"description":"The request does not match the contract.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Busy, or not open yet; see Retry-After when it is given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/removals":{"post":{"operationId":"requestRemoval","summary":"Ask to be removed. A confirmation goes to the address; the answer is the same whether or not it is stored.","tags":["Removal"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestRemovalRequest"}}}},"responses":{"202":{"description":"Accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestRemovalResponse"}}}},"400":{"description":"The request does not match the contract.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Busy, or not open yet; see Retry-After when it is given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/removals/{removal}/confirm":{"get":{"operationId":"confirmRemoval","summary":"The emailed confirmation: removes the record and keeps it from being found again.","tags":["Removal"],"security":[],"parameters":[{"name":"removal","in":"path","required":true,"schema":{"type":"string","pattern":"^rem_[0-9a-f]{32}$"}},{"name":"token","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"}}],"responses":{"303":{"description":"Redirect.","headers":{"Location":{"schema":{"type":"string"}}}},"400":{"description":"The request does not match the contract.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Busy, or not open yet; see Retry-After when it is given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid","unauthorized","not_found","method_not_allowed","rate_limited","failed","busy"]},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},"ExchangeSignInResponse":{"type":"object","properties":{"key":{"type":"string"},"lookups":{"type":"object","properties":{"left":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Lookups left: this month's for an account, today's on the web finder."},"monthly":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"resets":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["left","monthly","resets"],"additionalProperties":false}},"required":["key","lookups"],"additionalProperties":false},"ExchangeSignInRequest":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":200},"codeVerifier":{"type":"string","minLength":43,"maxLength":128},"redirectUri":{"type":"string","maxLength":300,"format":"uri"},"install":{"description":"The install's own ID, so its events before sign-in join the account.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["code","codeVerifier","redirectUri"],"additionalProperties":false},"SignOutResponse":{"type":"object","properties":{"signed_out":{"type":"boolean","const":true}},"required":["signed_out"],"additionalProperties":false},"GetMeResponse":{"type":"object","properties":{"plan":{"type":"string","const":"free"},"lookups":{"type":"object","properties":{"left":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Lookups left: this month's for an account, today's on the web finder."},"monthly":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"resets":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["left","monthly","resets"],"additionalProperties":false}},"required":["plan","lookups"],"additionalProperties":false},"Card":{"type":"object","properties":{"person":{"type":"string","pattern":"^per_[0-9a-f]{32}$","description":"A person in Nameclick's store, as find_contact returns it."},"name":{"type":"string","minLength":1},"title":{"type":["string","null"]},"employer":{"anyOf":[{"type":"object","properties":{"name":{"type":"string","minLength":1},"domain":{"type":["string","null"]}},"required":["name","domain"],"additionalProperties":false},{"type":"null"}]},"photo":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"linkedin":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"links":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["x","github"]},"url":{"type":"string","format":"uri"}},"required":["kind","url"],"additionalProperties":false}},"email":{"anyOf":[{"type":"object","properties":{"address":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"status":{"type":"string","enum":["verified","unverified"],"description":"verified only when the provider checked the address takes mail."}},"required":["address","status"],"additionalProperties":false},{"type":"null"}],"description":"The current work email, or null when none is on record."},"published":{"anyOf":[{"type":"object","properties":{"address":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"where":{"type":"string","const":"github"}},"required":["address","where"],"additionalProperties":false},{"type":"null"}],"description":"An address the person publishes on their own profile, shown as theirs."},"observed":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"When this record was last observed."},"matched":{"type":"string","enum":["linkedin","email","name_and_company"],"description":"How the record was matched to what was asked."},"thin":{"type":"boolean","description":"The match was weak and the record has no title or photo to confirm it."},"sourcey":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["name","url"],"additionalProperties":false},{"type":"null"}],"description":"The company's record on Sourcey, when it has one."},"details":{"type":"object","properties":{"location":{"type":["string","null"]},"time_zone":{"description":"An IANA time zone, such as America/Los_Angeles.","type":["string","null"]},"seniority":{"anyOf":[{"type":"string","enum":["owner","founder","c_suite","partner","vp","head","director","manager","senior","entry","intern"]},{"type":"null"}]}},"required":["location","time_zone","seniority"],"additionalProperties":false},"history":{"type":"array","items":{"type":"object","properties":{"title":{"type":["string","null"]},"employer":{"type":"string"},"start":{"anyOf":[{"type":"string","pattern":"^\\d{4}-(?:0[1-9]|1[0-2])$","description":"A month, YYYY-MM."},{"type":"null"}]},"end":{"anyOf":[{"type":"string","pattern":"^\\d{4}-(?:0[1-9]|1[0-2])$","description":"A month, YYYY-MM."},{"type":"null"}]},"current":{"type":"boolean"}},"required":["title","employer","start","end","current"],"additionalProperties":false},"description":"Their roles, current first, then newest."},"company":{"anyOf":[{"type":"object","properties":{"name":{"type":"string","minLength":1},"domain":{"type":["string","null"]},"website":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"phone":{"description":"The company's own number, never the person's.","type":["string","null"]},"industries":{"type":"array","items":{"type":"string"}},"employees":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"An estimate of the headcount."},"founded":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"location":{"type":["string","null"]},"links":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["linkedin","x","facebook"]},"url":{"type":"string","format":"uri"}},"required":["kind","url"],"additionalProperties":false}},"funding":{"type":"array","items":{"type":"object","properties":{"date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-(?:0[1-9]|1[0-2])$","description":"A month, YYYY-MM."},{"type":"null"}]},"round":{"type":"string"},"amount":{"type":["string","null"]}},"required":["date","round","amount"],"additionalProperties":false},"description":"Funding rounds, newest first."}},"required":["name","domain","website","phone","industries","employees","founded","location","links","funding"],"additionalProperties":false},{"type":"null"}],"description":"Where they work now, as a company record."}},"required":["person","name","title","employer","photo","linkedin","links","email","published","observed","matched","thin","sourcey","details","history","company"],"additionalProperties":false,"description":"One stored record: contact, experience and company all open from it at no cost."},"LookUpResponse":{"oneOf":[{"type":"object","properties":{"result":{"type":"string","const":"found"},"lookup":{"type":"string","pattern":"^lkp_[0-9a-f]{32}$","description":"One lookup, as it was answered."},"card":{"$ref":"#/components/schemas/Card"},"charged":{"type":"boolean","description":"Whether this lookup used one from the allowance."},"left":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Lookups left: this month's for an account, today's on the web finder."}},"required":["result","lookup","card","charged","left"],"additionalProperties":false},{"type":"object","properties":{"result":{"type":"string","const":"miss"},"left":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Lookups left: this month's for an account, today's on the web finder."}},"required":["result","left"],"additionalProperties":false,"description":"Nobody matched what was asked. Nothing was charged."},{"type":"object","properties":{"result":{"type":"string","const":"candidates"},"candidates":{"type":"array","items":{"type":"object","properties":{"person":{"type":"string","pattern":"^per_[0-9a-f]{32}$","description":"A person in Nameclick's store, as find_contact returns it."},"name":{"type":"string"},"title":{"type":["string","null"]},"employer":{"anyOf":[{"type":"object","properties":{"name":{"type":"string","minLength":1},"domain":{"type":["string","null"]}},"required":["name","domain"],"additionalProperties":false},{"type":"null"}]},"linkedin":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["person","name","title","employer","linkedin"],"additionalProperties":false}},"left":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Lookups left: this month's for an account, today's on the web finder."}},"required":["result","candidates","left"],"additionalProperties":false,"description":"Several people hold that identifier, such as a shared inbox. Nothing was charged."},{"type":"object","properties":{"result":{"type":"string","const":"needs_employer"},"name":{"type":"string"},"left":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Lookups left: this month's for an account, today's on the web finder."}},"required":["result","name","left"],"additionalProperties":false,"description":"The name was found but not where they work. Ask again with company or domain."},{"type":"object","properties":{"result":{"type":"string","const":"suppressed"},"left":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Lookups left: this month's for an account, today's on the web finder."}},"required":["result","left"],"additionalProperties":false,"description":"This person asked not to be listed."},{"type":"object","properties":{"result":{"type":"string","const":"out_of_lookups"},"left":{"type":"number","const":0},"resets":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["result","left","resets"],"additionalProperties":false}]},"LookUpRequest":{"type":"object","properties":{"linkedin":{"type":"string","maxLength":300,"pattern":"^https?:\\/\\/(?:[a-z]{2,3}\\.)?(?:www\\.)?linkedin\\.com\\/in\\/([^/?#\\s]{3,100})\\/?(?:[?#]\\S*)?$","description":"A LinkedIn profile's address, such as https://www.linkedin.com/in/someone."},"email":{"description":"A work email, to find who holds it.","type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"description":"The person's full name, with company or domain.","type":"string","minLength":2,"maxLength":120},"company":{"description":"Where they work, by name.","type":"string","minLength":1,"maxLength":120},"domain":{"type":"string","maxLength":253,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$","description":"A company's domain, such as anthropic.com."},"github":{"description":"A GitHub login; Nameclick reads the public profile and finds who it is.","type":"string","pattern":"^[A-Za-z0-9](?:[A-Za-z0-9]|-(?=[A-Za-z0-9])){0,38}$"},"page":{"description":"A name selected on a page, with the text around it.","type":"object","properties":{"selection":{"type":"string","minLength":2,"maxLength":120,"description":"The selected name."},"sentence":{"default":"","type":"string","maxLength":1000},"paragraph":{"default":"","type":"string","maxLength":4000},"title":{"default":"","description":"The page's title.","type":"string","maxLength":300},"site":{"default":"","description":"The page's host, such as techcrunch.com, so a person quoted there is not taken to work there.","type":"string","maxLength":253},"links":{"default":[],"description":"The links inside the paragraph, since a name often links to its own profile.","maxItems":20,"type":"array","items":{"type":"string","maxLength":500,"format":"uri"}},"profile":{"description":"Set when the page is one person's profile on X or a YouTube channel.","type":"object","properties":{"platform":{"type":"string","enum":["x","youtube"]},"handle":{"type":"string","pattern":"^@?[A-Za-z0-9._-]{1,40}$","description":"The handle in the page's address, such as @rauchg."}},"required":["platform","handle"],"additionalProperties":false}},"required":["selection"],"additionalProperties":false},"surface":{"description":"Where in the extension the press came from.","type":"string","enum":["linkedin","selection","github","x","youtube","popup"]}},"additionalProperties":false},"ListFoundResponse":{"type":"object","properties":{"people":{"type":"array","items":{"type":"object","properties":{"card":{"$ref":"#/components/schemas/Card"},"first":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"last":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["card","first","last"],"additionalProperties":false}}},"required":["people"],"additionalProperties":false},"GetFoundResponse":{"oneOf":[{"type":"object","properties":{"result":{"type":"string","const":"found"},"card":{"$ref":"#/components/schemas/Card"}},"required":["result","card"],"additionalProperties":false},{"type":"object","properties":{"result":{"type":"string","const":"not_found"}},"required":["result"],"additionalProperties":false,"description":"You have not found this person yet; find_contact looks them up."}]},"ReportNotThemResponse":{"type":"object","properties":{"given_back":{"type":"boolean"},"left":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Lookups left: this month's for an account, today's on the web finder."}},"required":["given_back","left"],"additionalProperties":false},"ReportNotThemRequest":{"type":"object","properties":{"lookup":{"type":"string","pattern":"^lkp_[0-9a-f]{32}$","description":"One lookup, as it was answered."}},"required":["lookup"],"additionalProperties":false},"CreateKeyResponse":{"type":"object","properties":{"key":{"type":"string","description":"Shown once. Send it as Authorization: Bearer <key>."},"id":{"type":"string","pattern":"^key_[0-9a-f]{32}$"},"mcp":{"type":"string","format":"uri"}},"required":["key","id","mcp"],"additionalProperties":false},"ListKeysResponse":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^key_[0-9a-f]{32}$"},"created":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","created"],"additionalProperties":false}}},"required":["keys"],"additionalProperties":false},"RevokeKeyResponse":{"type":"object","properties":{"revoked":{"type":"boolean","const":true}},"required":["revoked"],"additionalProperties":false},"GetDemoResponse":{"type":"object","properties":{"card":{"$ref":"#/components/schemas/Card"}},"required":["card"],"additionalProperties":false},"GetRulesResponse":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"platforms":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","enum":["linkedin","github","x","youtube"]},"hosts":{"type":"array","items":{"type":"string"}},"profile":{"type":"string","description":"A pattern for a profile's path; its first group is the handle."},"exclude":{"default":[],"type":"array","items":{"type":"string"}}},"required":["platform","hosts","profile","exclude"],"additionalProperties":false}}},"required":["version","platforms"],"additionalProperties":false},"RecordEventsResponse":{"type":"object","properties":{"recorded":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["recorded"],"additionalProperties":false},"RecordEventsRequest":{"type":"object","properties":{"install":{"description":"Who the events are about before sign-in.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"events":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","pattern":"^[a-z_]{1,40}$"},"fields":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z_]{1,40}$"},"additionalProperties":{"type":"string","maxLength":64}},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","name","occurredAt"],"additionalProperties":false}}},"required":["events"],"additionalProperties":false},"RequestRemovalResponse":{"type":"object","properties":{"requested":{"type":"boolean","const":true}},"required":["requested"],"additionalProperties":false},"RequestRemovalRequest":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"The address to remove, which the confirmation goes to."},"linkedin":{"description":"Your LinkedIn profile, removed too when it is the same record.","type":"string","maxLength":300,"pattern":"^https?:\\/\\/(?:[a-z]{2,3}\\.)?(?:www\\.)?linkedin\\.com\\/in\\/([^/?#\\s]{3,100})\\/?(?:[?#]\\S*)?$"}},"required":["email"],"additionalProperties":false}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"Nameclick key (nc_live_…)","description":"A key from the extension's settings, on your account's lookups."}}}}